javascript - Stripe - 使用 Stripe Connect 创建结帐会话
问题描述
我正在尝试使用以下逻辑为未经身份验证的客户实施结帐程序:
收集客户电子邮件
使用以下逻辑生成 Stripe 客户:
const customer = await stripe.customers .create({ email, name, }) .then((customer) => customer) .catch((error) => { console.log(error); return null; });
创建令牌以将帐户传递给我的 Stripe Connect 业务合作伙伴帐户。
const tempCustomerToken = await stripe.tokens.create( { customer: customerAccId, }, { stripeAccount: vendorStripeAcc, } );
在业务伙伴的账户上创建客户。
const tempCustomer = await stripe.customers.create( { source: tempCustomerToken.id, }, { stripeAccount: vendorStripeAcc, } );
使用业务合作伙伴账户中的客户 ID 创建结帐会话。
const session = await stripe.checkout.sessions.create( { payment_method_types: ['card', 'alipay'], customer: tempCustomer.id, line_items: items, success_url: 'https://example.com/success', cancel_url: 'https://example.com/cancel', payment_intent_data: { application_fee_amount: 50 }, }, { stripeAccount: vendorStripeAcc, } );
这在第 2 步失败并出现此错误 -The customer must have an active payment source attached.
但是,我希望客户在Stripe Checkout
会话期间提供他们的付款方式,因此当我创建客户时,我不想向他们询问任何付款信息。
有没有办法实现以下目标:
- 在我的 Stripe acc 上创建带有电子邮件且没有付款方式的 Stripe 客户。
Stripe Connect
与业务伙伴共享此客户。- 允许客户使用
Stripe Checkout
会话在业务供应商帐户上进行direct
购买。Stripe Connect
解决方案
当您希望在平台帐户上拥有客户和卡,然后在连接的帐户上克隆该卡以接受一次性付款时,使用您描述的流程。这个想法是,作为一个平台,您可以收集一次卡详细信息,并且可以代表第三方供应商接受未来的付款。
当您执行此操作时,平台中的客户和关联帐户上的客户不会以任何方式关联或链接。它们只是 2 个独立的对象,您可以克隆一次卡片以避免再次收集卡片详细信息。
在您的示例中,尽管您没有卡片,也不想收集卡片。这意味着没有理由在平台帐户上创建客户或尝试在连接的帐户上克隆它。您似乎只想接受已连接帐户的付款。
您应该完全跳过所有步骤,而只需在连接的帐户上创建一个结帐会话。当您完成结帐时,它将收集卡详细信息,接受付款,并在连接的帐户上为您创建一个客户,以保存卡详细信息以供将来付款。
您将无法在平台上使用该客户,也无法在其卡上使用该客户,但在 Stripe Connect 的构建方式中,这部分是可以预期的。
推荐阅读
- c++ - 如何让 clang-tidy 一个接一个地依次应用 FixItHints?
- android - 将图像作为(字节数组)从android上传到asp.net mvc服务器
- apache-spark - HBase + Spark:Dataframe 不将现有列值替换为相同 RowKey 的空值
- python - 在生产中从 python 金字塔项目部署/重新加载代码
- android - 当应用程序在 android pie (API 28) 中被杀死时检测网络状态并从后台上传视频数据
- ssl - Hyperledger Fabric SDK 未启动 TLS 握手
- msbuild - 错误:多个包与指定模式匹配:D:\a\r1\a\**\*.zip。请限制搜索模式
- django - 我有缩进错误。如何修复它......?
- javascript - 为什么 data-bind: enable 仅在某些情况下有效?
- javascript - 如何在动态显示的网页中增加生成的值