繁体   English   中英

为关联帐户创建条带费用 - 没有此类客户

[英]Create Stripe Charge for Connected Account - No Such Customer

我已成功设置客户付款方式,并能够使用以下代码检索它们:

return stripe.paymentMethods
       .list({ customer: customerId, type: 'card' })
       .then((cards) => {
            if (cards) {
               return { cards: cards.data, error: null };
            }
            return {
               error: 'Error creating client intent',
               cards: null,
             };
        })
        .catch((e) => {
           console.log(e);
           return { cards: null, error: 'Error fetching user cards' };
        });

我现在正在尝试创建一个直接的PaymentIntent ,它将付款路由到Stripe Connect连接的帐户。

为此,我正在运行以下代码:

if (cards && cards.cards && cards.cards.length > 0) {
   const card = cards.cards[0];

   const paymentIntent = await stripe.paymentIntents.create(
    {
        amount: amount,
        customer: card.customer,
        receipt_email: userEmail,
        currency,
        metadata: {
            amount,
            paymentMode: chargeType,
            orderId,
        },
        description:
            'My First Test Charge (created for API docs)',
        application_fee_amount: 0,
    },
    {
        stripeAccount: vendorStripeAccount,
    }
);
const confirmedPaymentIntent = await stripe.paymentIntents.confirm(
    paymentIntent.id,
    { payment_method: card.id }
);

这给了我错误“没有这样的客户”,即使定义了客户 ID 并且我可以在我的 Stripe 仪表板中找到该客户。 我还在那里看到了客户的付款方式。

我究竟做错了什么?

问题是客户存在于您的平台帐户中,而不是您尝试在其上创建付款意图的连接帐户。

在您的第一个代码片段中,您没有指定stripeAccount ,因此在您的平台帐户上发出 API 请求。 客户存在于那里,这就是为什么它按预期工作的原因。

在您的第二个代码片段中,您确实指定了一个stripeAccount ,这意味着 API 请求是在指定的连接帐户上发出的,而不是您的平台帐户。 您可以在 Stripe 的文档中阅读有关对已连接帐户进行 API 调用的更多信息

要解决这种情况,您需要在您的平台帐户上创建支付意图作为目的地费用,或者在连接的帐户上创建客户 object 以便可以在那里使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM