调至内容部分
创建账户
或
登录
Stripe 文档徽标
/
询问人工智能
创建账户
登录
开始
付款
销售收入
平台和交易市场
资金管理
开发人员资源
概览
关于 Stripe 支付
升级您的集成
支付分析
线上付款
概览查找您的用例Managed Payments
使用 Payment Link
构建结账页面
构建高级集成
构建应用内集成
支付方式
添加支付方式
    概览
    支付方式集成选项
    在管理平台中管理默认支付方式
    支付方式类型
    银行卡
    使用 Stripe 余额支付
    加密货币
    银行借记
    银行重定向
    银行转账
      收款
      客户余额
      退款
    贷记转账(来源)
    先买后付
    实时付款
    付款凭单
    钱包
    按国家启用本地支付方式
    自定义支付方式
管理支付方式
用 Link 更快结账
支付接口
Payment Links
结账
Web Elements
应用内 Element
支付场景
处理多种货币
自定义支付流程
灵活收单
编排
线下支付
Terminal
超越支付功能
成立公司
加密货币
Financial Connections
Climate
首页付款Add payment methodsBank transfers

接受银行转账

用 Payment Intents API 接受银行转账付款。

当您第一次接受客户的银行转账付款时,Stripe 会为他们生成一个虚拟银行账户,然后您可以直接分享给他们。今后来自该客户的所有银行转账付款都会发到此银行账户。在一些国家,Stripe 还为您提供一个独特的转账参考码,您的客户每次转账时都需包含此号码,以更方便地进行对账。在某些国家,可以免费创建的虚拟银行账号数量是有限制的。

下图概括介绍了接受银行转账付款时的常用步骤:

处理少付和多付

使用银行转账方式付款,客户给您发送的可能会多于或少于预期金额。如果客户少发,则 Stripe 会向未付的付款意图中注入部分资金。账单是不能部分支付的,仍会保持开启状态,直到全额资金流入。

如果客户发送的金额超过预期,则 Stripe 会根据未付的付款核对入账资金,并将多出的金额保留在客户的现金余额中。年您可以在我们文档的对账部分找到有关 Stripe 如何处理对账的更多信息。

客户少付时:

客户多付时:

多个开启付款或账单的处理

您可能有多个开启的付款或账单,可通过银行转账来支付。在默认设置中,Stripe 会尝试用诸如转账的参考码或转账金额来自动对账银行转账。

您可以禁用自动对账,然后自行手动对账付款和账单。可单独覆盖掉对某个客户的自动对账行为,方法是将对账模式设置为手动模式。

设置 Stripe
服务器端

首先,您需要有一个 Stripe 账户。立即注册。

用我们的官方库从您的应用程序访问 Stripe API:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

创建或检索 Customer
服务器端

要核对每笔银行转账付款,您必须关联一个 Customer 对象。如果您有现成的 Customer 对象,则可以跳过这一步。否则,创建一个新的 Customer 对象。

Command Line
cURL
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

创建并确认 PaymentIntent
服务器端

PaymentIntent 是一个用来表示您从客户收款意图的对象,并可用于跟踪整个付款流程中各个阶段的情况。在服务器上创建并确认一个 PaymentIntent,指定想要收取的金额和货币。您还必须填充 PaymentIntent 创建请求的客户参数。没有客户时,银行转账不能在 PaymentIntents 上使用。

创建 Payment Intent 之前,请确保在管理平台的支付方式设置页面中开启银行转账。

注意

借助动态支付方式,Stripe 会根据交易金额、货币和支付流程等因素返回符合条件的支付方式。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d customer=
{{CUSTOMER_ID}}
\ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ --data-urlencode return_url="https://example.com/return_url" \ -d "payment_method_data[type]"=customer_balance \ -d confirm=true

在最新版的 API 中,可以选择性指定 automatic_payment_methods 参数,因为 Stripe 会默认开启其功能。

如果客户的余额足够高,足以完成付款,则 PaymentIntent 立即成功,显示 succeeded 状态。当客户不小心多付时,他们可以累算余额,这在银行转账中很常见。您必须要在您所在地的特定时间段内确认客户余额。

引导客户完成银行转账
客户端

如果客户的余额不足以支付请求的金额,则 PaymentIntent 显示 requires_action 状态。响应中有一个 next_action 字段,包含 display_bank_transfer_instructions 的一个 type 值。next_action[display_bank_transfer_instructions] 散列中包含向客户显示的信息,以便其完成银行转账。为确保资金结算,请指示您的客户使用所提供的确切信息,特别是账户名和账号(如果适用)。

注意

在真实模式下,Stripe 为每个客户提供唯一一套银行转账信息。相反,在测试环境中,Stripe 向所有客户提供的都是无效的银行转账详情。与真实模式不同,这些无效的详情可能并不总是唯一。

字段描述
类型使用的银行转账类型。美国的类型必须为 us_bank_transfer。
参考识别银行转账的唯一参考代码。引导客户在其银行转账的参考字段中包含此代码。
amount_remaining完成付款所需转的剩余金额。引导客户转此金额。如果客户余额中之前存在的资金已应用到 PaymentIntent 或如果客户少付了,则此金额可能不同于 PaymentIntent 金额。
货币剩余金额的币种。
financial_addresses美国银行账户金融地址列表。类型包含 aba 和 swift。查看下方详情。
hosted_instructions_url一个指向托管页面的链接,引导客户完成转账。

aba 散列

aba 散列示例:

{ "aba": { "account_number": "111222333444", "bank_name": "Wells Fargo Bank, NA", "routing_number": "444555666" }, "supported_networks": [ "ach", "domestic_wire_us" ], "type": "aba" }
字段值描述
typeaba金融机构地址类型。
supported_networks
  • ach
  • domestic_wire_us
该地址支持的卡组织列表。
aba.account_number111222333444ABA 账号。
aba.routing_number444555666ABA 路径号码。
aba.bank_nameWells Fargo Bank, NA银行名称。

swift 散列

swift 散列示例:

{ "swift": { "account_number": "111222333444", "bank_name": "Wells Fargo Bank, NA", "swift_code": "AAAA-BB-CC-123" }, "supported_networks": [ "swift" ], "type": "swift" }
字段值描述
typeswift金融机构地址类型。
supported_networks
  • swift
该地址支持的卡组织列表。
swift.account_number111222333444SWIFT 账号。
swift.swift_codeAAAA-BB-CC-123SWIFT 代码。
swift.bank_nameWells Fargo Bank, NA银行名称。

结算时间

在引导您的客户用您提供的信息在其银行发起转账后,可能需要长达 5 天才能完成转账。结算时间取决于转账到达 Stripe 的银行通道:

  • ACH 转账为 1-3 个工作日到账。
  • 国内电汇 (Fedwire) 当天到账(取决于转账是否是在银行下班前发出)。
  • 国际电汇 (SWIFT) 为 1-5 个工作日到账。

确认 PaymentIntent 成功

PaymentIntent 保持在 requires_action 状态,直至资金到达银行账户。资金就位后,PaymentIntent 的状态从 requires_action 更新为 succeeded。

需设置您的 webhook 端点后才能开始接收 payment_intent.partially_funded 事件。

您可以从管理平台添加 webhook。

或者,您可以用 Webhook Endpoints API 开始接收 payment_intent.partially_funded 事件。

当我们更新 PaymentIntent 时,Stripe 会在支付流程过程中发送以下事件。

事件描述后续步骤
payment_intent.requires_action客户余额资金不足,不能补齐 PaymentIntent 时,在确认过程中发送,PaymentIntent 变为 requires_action。引导客户发送一笔金额为 amount_remaining 的银行转账。
payment_intent.partially_funded客户发送了银行转账,并且应用到了 PaymentIntent,但不足以完成付款。客户转账金额不足(由于错误地少付或其银行从中扣留了费用)或剩余的客户余额已应用到此 PaymentIntent 时就可能发生这种情况。部分注入资金的 PaymentIntents 不会提现在您的账户余额上,直至付款完成。引导您的客户用新的 amount_remaining 再发送一笔银行转账,从而完成付款。如果想通过部分应用资金来完成付款,可以更新 amount 并再次确认 PaymentIntent。
payment_intent.succeeded客户付款成功。履行客户购买的商品或服务。

注意

当您更改有部分资金的 PaymentIntent 的金额时,资金将返回到客户余额。如果有其他未完成的 PaymentIntent,则 Stripe 自动提供这些资金。如果客户配置的是手动对账,则您需要再次应用资金。

我们建议用 Webhooks 来确认成功收款操作,并通知客户付款已完成。

示例代码

Ruby
require 'json' # Using Sinatra post '/webhook' do payload = request.body.read event = nil begin event = Stripe::Event.construct_from( JSON.parse(payload, symbolize_names: true)

在管理平台查看待处理的付款

您可以通过将等待资金筛选器应用到状态来在管理平台中查看所有待处理的银行转账 PaymentIntents。

测试您的集成

您可以通过在管理平台中或通过 HTTP 请求模拟传入银行转账来测试您的集成。

使用管理平台

要在沙盒中用管理平台模拟银行转账,请导航到管理平台中的客户页面。在支付方式下方,点击添加然后选择现金余额充值(仅测试)。

使用 Stripe API

您可以发起一个 API 调用来模拟一笔银行转账。

Command Line
cURL
curl https://api.stripe.com/v1/test_helpers/customers/ic_xxxxxxxxx/fund_cash_balance \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1000 \ -d currency=usd \ -d reference=REF-4242

处理临时性的可用性问题

以下错误代码表明支付方式的可用性出现了临时性的问题:

代码描述处理
payment_method_rate_limit_exceeded该支付方式的连续请求太多,其限制比 API 范围的速率限制更严格。当您的许多客户在同一时段试图使用相同的支付方式时(例如,您的网站进行持续销售期间),多个 API 请求可能会持续发生这些错误。这种情况下,请让您的客户选择另外的支付方式。

注意

如果您预计一般情况下会用量激增或有即将要举行的大型活动,请在知道后立即联系我们。

可选从客户那里收集支付方式选项

可选发送付款说明邮件

此页面的内容有帮助吗?
是否
需要帮助?联系支持。
加入我们的早期使用计划。
查看我们的更改日志。
有问题?联系销售。
LLM? Read llms.txt.
Powered by Markdoc