Stripeのsubscriptionsで `This customer has no attached payment source or default payment method.` エラーが出て決済処理ができない
背景
- StripeConnectを用いてプラットフォームを構築したかった
const result = await stripe.subscriptions.create({
customer: customerId,
items: [
{
price: priceId,
},
],
application_fee_percent: 10,
transfer_data: {
destination: connectAccountId,
},
}, {
idempotencyKey: idempotencyKey,
});
- こんな感じでサブスク決済を実行したかったが、決済処理が
This customer has no attached payment source or default payment method.
とのエラーがでて実行できない。
対応
- ストライプのAPIドキュメントを確認
- https://stripe.com/docs/api/subscriptions/create#create_subscription-default_payment_method
- subscriptionsのPOST APIのオプショナルパラメータで、default_payment_methodを設定できるらしいので、明示的に指定した。
- 下記のような感じで。
const result = await stripe.subscriptions.create({
customer: customerId,
items: [
{
price: priceId,
},
],
// consumerのpayment_methodを取得してきて、明示的に指定した。
default_payment_method: paymentMethodList.data[0].id,
application_fee_percent: 10,
transfer_data: {
destination: connectAccountId,
},
}, {
idempotencyKey: idempotencyKey,
});
- 上記の対応で、無事APIが通って、サブスク課金を実装できました。
備考
default_payment_method
optional
ID of the default payment method for the subscription. It must belong to the customer associated with the subscription. This takes precedence over default_source. If neither are set, invoices will use the customer’s invoice_settings.default_payment_method or default_source.
APIドキュメントに、 customer
の invoice_settings
の default_payment_method
に設定しても同様のことができるよと記載があるのでそちらを設定した方がbetterなのかもしれない。
Author And Source
この問題について(Stripeのsubscriptionsで `This customer has no attached payment source or default payment method.` エラーが出て決済処理ができない), 我々は、より多くの情報をここで見つけました https://qiita.com/emono/items/5138b230ddb43be055dd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .