【问题标题】:Creating a subscription with Stripe Checkout and Omnipay使用 Stripe Checkout 和 Omnipay 创建订阅
【发布时间】:2017-12-23 23:52:36
【问题描述】:

我的代码创建并加载 Stripe Checkout,客户在其中输入姓名和卡详细信息,然后返回到接收令牌并用于创建 Stripe 客户的 php 脚本,然后发送购买请求以向他们的卡收费。

在可能的情况下,如何最好地使用同一张卡和omnipay 库添加订阅?我是使用令牌还是从购买对象中获取源 ID 并使用它,并在购买后创建订阅?

在类中,以下代码中对 createSubscription 的调用给出了错误“此客户没有附加的付款来源”。

public function createSubscription($token,$customer_id,$plan,$source_id)
{
        try {
            $response = $this->gateway->createSubscription(
                                array(
                                    'customerReference' => $customer_id,
                                    'plan'              => $plan,
                                    'source'            => $token
                                )
            )->send();
            if ($response->isSuccessful()) {
                $data = $response->getData();
return $data;
            }
        } catch (Exception $e) {
            $message = "Error creating Stripe subscription: " . $e->getMessage();
            return;
        }
    }

【问题讨论】:

  • Stripe 订阅将始终向客户收取默认卡 (default_source) 的费用,因此如果您已经添加了卡,则无需传递 'source' 你在此处传递什么给 'source' ?从 Stripe.js/Checkout 获得的令牌(用于测试:tok_visa)?
  • 我尝试在客户完成“结帐”后传递从 Stripe 收到的令牌。不确定此处的“源”是否可以是令牌,或者它是否必须是源 ID 或卡对象。刷卡后我会尝试添加订阅,但不确定来源是否只适合一次性收费。
  • 使用源 ID 或令牌购买后无法正常工作,我收到“invalid_request_error - 此客户没有附加付款来源”。我将使用创建客户请求重试。

标签: stripe-payments omnipay


【解决方案1】:

我通过使用令牌创建带有卡详细信息的客户,然后使用“plan”和“customerReference”参数创建订阅,最后使用 customerReference 对卡收费(省略了成功检查和错误检查为清楚起见):

 $response = $gateway->createCustomer(array(
     'description'       => 'Test Customer',
     'email'             => $_POST['stripeEmail'],
     'source'  => $token
 ))->send();

 $response = $gateway->createSubscription(array(
     "customerReference" => $customer_id,
     'plan' => 'plan_name',
 ))->send();

$transaction = $gateway->purchase(array(
                  'amount'   => '5.00',
                  'currency' => 'gbp',
                  'receipt_email' => 'test@test.com',
                  "description" => 'Test Order',
                  'customerReference' => $customer_id,
));

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2017-11-12
    • 2021-04-20
    • 2014-09-07
    • 2020-09-18
    相关资源
    最近更新 更多