在 Stripe 中保存自定义帐户客户的信用卡

问题描述

我们正在构建一个平台。 在我们的平台中,我们在 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 代表连接的帐户(这是设置意图存在的地方)发出请求。