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

Saving credit card of a Custom Account's customer in 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.
    }
  });
});

但是我们收到错误消息,没有这样的设置意图:'seti_1IBkyZ4ZQzThevDR3MR433aI'。很明显,这里不接受从 Stripe 生成的 setupintent。我们做错了什么?

此错误的可能原因是您 initializing Stripe.js with the stripeAccount 设置意图不存在。您的 Stripe.js 初始化代码应如下所示:

var stripe = Stripe('pk_test_YOUR_PUBLISHABLE_KEY', {
    stripeAccount: 'acct_CONNECTED_ACCOUNT_ID'
});

这将允许 Stripe.js 代表连接的帐户(设置意图所在的帐户)发出请求。