Sources API已废弃
警告
我们已放弃使用 Sources API,并计划停止支持本地支付方式。如果您当前是使用 Sources API 处理任何本地支付方法,则必须将其迁移到 Payment Methods API。我们将发送电子邮件,详细告知何时停止这种支持。
虽然我们不打算取消支持银行卡支付,但我们建议用 PaymentMethods API 替换掉 Sources API,通过这个 API 可以访问我们的最新功能和支付方式类型。
Source 对象可让您通过单一 API 接受多种支付方式。Source 代表客户的支付工具,可与 Stripe API 搭配使用创建付款。Sources 可被直接扣款,或绑定到客户供以后重复使用。
Sources API 的每个支持的支付方式都通过四个特征来定义。这些特征的组合,便决定了如何将一个来源变成可扣款状态,并用它在收款请求中完成付款。
有关如何用 Sources API 接受任意支付方式的完整演示示例,请查看该网上店铺示例并浏览它的 GitHub 源代码。
支持的支付方式
您可以在管理平台中启用可使用的支付方式。激活通常是即时的,不需要额外的合同,也不涉及冗长的流程。有关详细列表,可查看可用的支付方式及其支持的地理区域。
下表为上述关键特征与支持的支付方式的对应关系:
转账 | 确认 | 无 | 重定向 | 代码验证 | 接收方 |
---|---|---|---|---|---|
拉 | 同步 | 银行卡 | — | — | — |
异步 | SEPA 直接借记(已弃用) | ACH 借记 - 验证 | ACH 借记 - 微存款 | — | |
推 | 同步 |
| — | — | Multibanco(已弃用) |
异步 | — | 具有 Source 的 Sofort(已弃用) | — | — |
资金的拉与推
每种支付方式都会有个拉或推的区分,取决于资金是如何从客户的支付方式转移的。
- 使用_拉_的方式,您在客户同意后从客户的账户扣取资金。银行卡付款便是一种拉式方式:付款时,从客户的银行卡借记,后续扣款时不需要客户进行任何干预。
- 使用_推_的方式,客户将资金发送给你。ACH 贷记转账便是一个推送式的例子:向客户提供银行路径和账号,让他们将正确的金额发送(推)到这个账号。确认客户已将资金发送给您后,Source 即变为可扣款状态,这时便可以用在收款请求里了。其它推式支付方式,例如 iDEAL 或 Sofort,都需要将客户重定向到某个地方,然后由他们将钱从其网银直接推给你。通常,推的方式需要客户对每笔付款进行干预。
客户操作流程
某些支付方式要求客户完成特定的操作(流程)后,Source 才能变成可扣款状态。某个支付方式适用的流程的类型会在 Source
对象的 flow
参数中陈述。每个方式都会落入以下流程类型中的一种。
完成所需流程并且 Source 变为可扣款状态后,必须用这个 Source 来处理要完成的付款的收款请求。如果不的话,这个 Source 会被取消,然后自动向客户退回授权的付款——没有资金流入您的账户。
一次性使用或重复使用
某些支付方式允许创建可重复使用的 Source,将来付款时不需要客户再完成一遍付款流程。可重复使用的 Source,它们的 usage
参数会设置成 reusable
。
相反,如果某个 Source 只能使用一次,那么这个参数设置为 single_use
,而且客户每次付款时都要创建一个 Source。不应将这类 Source 绑定到 Customer——而是应直接扣款。它们只能被扣款一次,而且扣款后,状态会变成 consumed
。
可重复使用的 Source 必须要绑定到 Customer 才能被重复使用。(如果直接扣款,那么它们的状态将变为 consumed
。)要学习如何将 Sources 绑定到 Customers,以及如何管理某个 Customer 的来源列表,请参考Sources 和 Customers 指南。
同步或异步确认
在您用一个支付方式创建了 Charge 对象后,可以立即(同步)确认这个 Charge 的状态,也可以等一段时间(异步)。
使用同步支付方式时,收款请求的
succeeded
或failed
状态可以立即得到确认。如果收款请求成功,则付款完成——可确定已对客户完成了扣款,您定能收到资金。银行卡付款便是一种同步的支付方式:付款是成功还是失败,都会实时确认。对于异步支付方式,可能要等几天才能确认付款成功。这段时间内,无法保证付款能成功。付款的
Charge
对象的状态最初会被设置为pending
,然后一直持续到确认付款成功或失败。ACH 借记便是一种异步方式:使用这类借记方式时,付款成功后需要等几天才能得到确认。
一旦收款的状态发生变化,Stripe 即发送一个 webhook 事件。接受任何异步的支付方式时,您的集成应用必须能够接收 Webhooks,这样才能收到通知并确认客户的付款是成功还是失败。