我正在尝试通过条带连接开发直接电荷流
根据this文档,他们指出我在客户端上初始化条带时需要添加connected_account_id:
// Set the connected Stripe Account on which the PaymentMethod should be created
var stripe = Stripe('pk_test_xxxx', {
stripeAccount: "{{CONNECTED_STRIPE_ACCOUNT_ID}}" // ???
});
stripe.createPaymentMethod('card', cardElement, {
billing_details: {
name: 'Jenny Rosen',
},
}).then(function(result) {
// Handle result.error or result.payment_method
});
还有其他方法可以不涉及客户端吗?
当我使用charges
API时,情况并非如此,但现在使用intents
似乎必须执行此操作?我需要用一个connected_customer来初始化条带,这似乎很奇怪,因为它可能有超过1个connected_accounts,但是他们希望我在库的初始化中对其进行设置
在another的直接收费文档中,他们甚至没有提及客户端要求,而是直接说:
要直接从已关联的帐户中扣款,请执行标准创建 使用您平台的机密收取费用或创建PaymentIntent请求 身份验证为关联帐户时输入密钥:
使用此服务器端代码示例:
stripe.paymentIntents.create({
payment_method_types: ['card'],
amount: 1000,
currency: 'eur',
}, {
stripe_account: '{{CONNECTED_STRIPE_ACCOUNT_ID}}',
}).then(function(paymentIntent) {
// asynchronously called
});
这似乎足够了,但是由于我得到no such payment method
我也找到了这小信息-
直接在关联的帐户上收费时,您可以提供 使用您平台的帐户或关联帐户创建的令牌 可发布的密钥。 (您也可以使用共享客户创建一个 令牌。)
答案 0 :(得分:0)
PaymentMethods必须在使用它们的帐户上创建。如果您是使用Stripe Connect的平台,并且直接在关联帐户上创建费用,则该关联帐户上必须存在PaymentMethod。
您可以在此处采用2种方法。您既可以直接在连接的帐户上创建PaymentMethod,也可以在平台上创建它,然后将其共享到连接的帐户。
前一种方法是最简单的。在客户端收集卡详细信息时,可以使用Elements。您可以直接在stripeAccount
选项中使用关联帐户的ID对其进行初始化。那就是您找到的文档,{@ 3}}。
否则,您可以在平台上创建PaymentMethod。然后,在服务器端,创建PaymentMethod时,您可以将其克隆到连接的帐户。这就像从现有的付款方式创建一个新的PaymentMethod一样简单,您不需要他们的卡详细信息。已记录在here中。请注意,这仅适用于信用卡付款方式。
出于完整性考虑,Card Tokens可以在平台上正常工作,并且可以无关地连接帐户。首先,这使集成看起来更容易一些,因为您只是使用平台的密钥创建了令牌,然后在连接的帐户上使用了令牌。不过,这仅适用于卡和银行帐户,不适用于其他类型的付款方式,例如SEPA借记或ACH信用转移。这些要求有关接收资金的帐户的详细信息,并且必须始终在正确的帐户上创建。 PaymentMethods通过要求您从一开始就对其进行正确集成来避免此问题。