我正在使用最新版本的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。
是否可以将PaymentMethod转换为令牌? (或者将PaymentMethod.stripeId发送到服务器是否正确)?
缺少了什么?
答案 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]
])