接受银行转账
用 Payment Intents API 接受银行转账付款。
当您第一次接受客户的银行转账付款时,Stripe 会为他们生成一个虚拟银行账户,然后您可以直接分享给他们。今后来自该客户的所有银行转账付款都会发到此银行账户。在一些国家,Stripe 还为您提供一个独特的转账参考码,您的客户每次转账时都需包含此号码,以更方便地进行对账。在某些国家,可以免费创建的虚拟银行账号数量是有限制的。
下图概括介绍了接受银行转账付款时的常用步骤:
处理少付和多付
使用银行转账方式付款,客户给您发送的可能会多于或少于预期金额。如果客户少发,则 Stripe 会向未付的付款意图中注入部分资金。账单是不能部分支付的,仍会保持开启状态,直到全额资金流入。
如果客户发送的金额超过预期,则 Stripe 会根据未付的付款核对入账资金,并将多出的金额保留在客户的现金余额中。年您可以在我们文档的对账部分找到有关 Stripe 如何处理对账的更多信息。
多个开启付款或账单的处理
您可能有多个开启的付款或账单,可通过银行转账来支付。在默认设置中,Stripe 会尝试用诸如转账的参考码或转账金额来自动对账银行转账。
您可以禁用自动对账,然后自行手动对账付款和账单。可单独覆盖掉对某个客户的自动对账行为,方法是将对账模式设置为手动模式。
注意
Stripe 通过评估客户的货币、支付方式限制和其他参数,自动为客户显示支付方式选项。建议用接受付款中的说明,从 Stripe 管理平台配置您的支付方式。
如果想继续用 Checkout 手动配置向客户显示的支付方式,请使用本指南。否则,请更新您的集成以在管理平台中配置支付方式。
银行转账是 Checkout 的一种一次性使用支付方式,客户利用显示的付款说明,通过银行转账方式支付。选择支付时,用户将跳转到一个托管页面,其中显示有银行转账说明和转账付款的状态。
银行转账是一种延迟通知型支付方式,这意味着付款后不能立即使用资金。
注意
对于在会话创建请求中未包含现有 Customer object 的 Checkout Session,不能使用银行转账方式。
收款
注意
使用本指南之前,先构建一个集成来用 Checkout 接受付款。
使用本指南启用 Bank Transfer。
创建或检索 Customer
要核对每笔银行转账付款,您必须关联一个 Customer 对象。如果您有现成的 Customer 对象,则可以跳过这一步。否则,创建一个新的 Customer 对象。
启用 Bank Transfer 这一支付方式
创建新的 Checkout Session 时,您需要:
- 设置
customer
- 将
customer_
添加到balance payment_
列表method_ types - 确保您的所有
line_
都使用相同的货币items
重定向到 Stripe 托管的银行转账说明页面
注意
与银行卡付款不同,进行银行转账时,并不总是将客户重定向到 success_url。
提交后,Checkout 表单成功,
- 如果客户余额足够多,足以支付请求的金额,那么付款立即成功,客户被重定向到 success_url。
- 如果客户余额足够多,足以支付请求的金额,那么客户会被重定向到 hosted_instructions_url。页面上有说明,会指导您的客户完成转账。
Stripe 允许在品牌设置页面自定义面向客户的用户界面。下列品牌设置项可应用到托管的说明页面:
- 图标——您的品牌图片及公开的商家名称
- 品牌颜色——用作背景颜色
履行订单
由于银行转账是一种延迟通知型支付方式,因此您需要用一种方式(例如 Webhook)来监测付款状态并处理订单履行情况。了解有关设置 Webhook 和履行订单的更多信息。
付款状态变化时会发送以下事件:
事件名称 | 描述 | 后续步骤 |
---|---|---|
checkout.session.completed | 客户成功提交了 Checkout 表单,然后被重定向到 hosted_ 。 | 等待客户完成银行转账 |
checkout.session.async_payment_succeeded | 客户已成功进行银行转账。PaymentIntent 状态变为 succeeded 。 | 履行客户购买的商品或服务。 |
测试您的集成
可以通过用 API、管理平台或一个 Stripe CLI 的 Beta 版本号模拟一笔传入银行转账来测试您的集成。