![](/img/trans.png)
[英]Stripe Connect Charge - Must authenticate as a connected account to be able to use customer parameter
[英]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.