问题描述
我们正在构建一个平台。 在我们的平台中,我们在 Stripe 中创建了 Custom Connect Accounts。 对于这些自定义连接帐户,我们创建客户帐户。本质上,客户帐户是我们在平台中的 Custom Connect(公司)帐户的最终客户。 现在我们要存储客户帐户的信用卡信息(对于特定的自定义连接帐户)。
我们按照说明 here 创建了一个 setupIntent。代码如下,这里的stripe_account是自定义连接(公司)账户的account_id,customer['id']是客户账户的id -
intent = stripe.SetupIntent.create(
customer=customer['id'],stripe_account = stripe_account
)
我们将这个 intent.client_secret 传递给我们的前端。在 Javascript 中,我们称之为 -
setupForm.addEventListener('submit',function(ev) {
ev.preventDefault();
stripe.confirmCardSetup(
clientSecret,{stripe_account : stripe_account},{
payment_method: {
card: cardElement,billing_details: {
name: cardholderName.value,},}
).then(function(result) {
if (result.error) {
// display error.message in your UI.
} else {
// The setup has succeeded. display a success message.
}
});
});
但是我们得到了错误,没有这样的 setupintent:'seti_1IBkyZ4ZQzThevDR3MR433aI'。显然,这里不接受从 Stripe 生成的 setupintent。我们做错了什么?
解决方法
此错误的可能原因是您不是 initializing Stripe.js with the stripeAccount
Setup Intent 所在。您的 Stripe.js 初始化代码应如下所示:
var stripe = Stripe('pk_test_YOUR_PUBLISHABLE_KEY',{
stripeAccount: 'acct_CONNECTED_ACCOUNT_ID'
});
这将允许 Stripe.js 代表连接的帐户(这是设置意图存在的地方)发出请求。