带付款方式的条带化订阅

时间:2019-09-15 17:06:05

标签: php swift stripe-subscriptions

我正在使用最新版本的iOS Stripe SDK(1.27),其中STPAddCardViewControllerDelegate而不是返回STPToken,现在返回了PaymentMethod对象。

func addCardViewController(_ addCardViewController: STPAddCardViewController, didCreatePaymentMethod paymentMethod: STPPaymentMethod, completion: @escaping STPErrorBlock) {
   dismiss(animated: true, completion: { [weak self] in
       // Send the paymentMethod.stripeId to my Server
   })
}

在服务器端,我验证了系统上的用户是否已有客户对象,并相应地创建或更新了客户,例如:

Customer::create(['email'=> email, 'payment_method' => payment_method_id])

但是尝试创建预订后,请使用以下代码:

Subscription::create(['customer' => customer, 'plan' => plan_id])

它返回以下错误:

  

该客户没有附加的付款来源

注意:作为一种解决方法,可以在生成STPToken并将其用作源时(以这种方式工作)返回到iOS SDK的早期版本。但是我想使用新的PaymentMethod API。

  1. 是否可以将PaymentMethod转换为令牌? (或者将PaymentMethod.stripeId发送到服务器是否正确)?

  2. 缺少了什么?

1 个答案:

答案 0 :(得分:1)

希望可以为您提供帮助。我有同样的问题并解决了。您可以使用以下代码:

Subscription::create([
  'customer' => $customer,
  'plan' => $plan_id,
  'default_payment_method' => $paymentMethodId
]);

  

将此付款方式用作发票或订阅的默认值   付款,在客户上设置invoice_settings.default_payment_method   到PaymentMethod的ID。

Customer::create([
'email'=> email,
'payment_method' => $paymentMethodId
'invoice_settings' => ['default_payment_method' => $paymentMethodId]
])