问题描述
我正在尝试对Node.js中的已连接帐户进行Stripe以后的付款直接收费。一切都在使用PaymentMethods API处于测试模式。
我创建了一个客户,并使用stripe.setupIntents.create()附加了一种付款方式,并且以后可以毫无问题地向我的Stripe帐户/平台付款。但是,我想使用stripe.paymentIntents.create()直接向关联的帐户付款。
按照本指南https://stripe.com/docs/connect/cloning-saved-payment-methods,给我的印象是,我可以克隆用于平台的付款方式,并使用它直接为已关联的帐户付款。我尝试为客户创建令牌,但收到错误消息“客户必须附加有效的付款来源”。尽管客户拥有适用于我的平台的有效默认付款方式'pm_1HFjvsLIOnOaY98HTxPugN5i'。
const token = await stripe.tokens.create({customer: 'cus_HpOf9y6TJ5XYlA'},{ stripeAccount: 'acct_1HDuHbBwYBNGN1ir'}
我对本指南https://stripe.com/docs/payments/payment-methods/connect#cloning-payment-methods感到困惑,这是否是完成基本相同任务的替代方法?还是我需要在连接的帐户上创建一种新的付款方式,但这不会破坏创建令牌的目的吗?
解决方法
好问题!在您共享的API调用中,您仅传递了customer
参数。克隆付款方式需要同时传递customer
和payment_method
,如下所示:
const paymentMethod = await stripe.paymentMethods.create({
customer: 'cus_HpOf9y6TJ5XYlA',payment_method: 'pm_1HFjvsLIOnOaY98HTxPugN5i',},{
stripeAccount: 'acct_1HDuHbBwYBNGN1ir',});
使用“付款方式”时,客户没有“默认来源”的概念-创建费用或共享付款方式时,必须始终同时指定客户ID和付款方式ID。订阅是一个例外,订阅将查看客户的invoice_settings.default_payment_method属性,并将其用于订阅和发票付款。