# Payment Methods API 了解允许您接受多种全球支付方式的 API。 利用 Payment Methods API,可通过单一 API 接受多种支付方式。[PaymentMethod](https://docs.stripe.com/api/payment_methods/object.md) 对象包含创建付款所需的支付方式详情。利用 Payment Methods API,您可以组合 *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs): - 用 [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) 收款 - 用 [SetupIntent](https://docs.stripe.com/api/setup_intents.md) 和 *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) 保存付款详情供以后使用 ## 支持的支付方式 要确定某个具体地点使用哪种支付方式,请查看[支付方式指南](https://stripe.com/payments/payment-methods-guide)。 该指南包括不同地区可以使用的支付方式、每种支付方式特征的详细说明以及它们最相关的[地理区域](https://stripe.com/payments/payment-methods-guide#payment-methods-fact-sheets)。您可以在[管理平台](https://dashboard.stripe.com)中启用任何可用的支付方式。激活通常是即时的,不需要额外的合同。 ## 客户操作 某些支付方式要求您的客户采取额外的步骤来完成付款。PaymentIntent 对象的 `next_action` 参数指定了客户操作的类型。 客户需要采取的一些常见操作有: - 重定向到他们银行的线上服务页面来验证并批准付款。 - 通过提供您发布到 Stripe API 的一次性验证码(例如微存款)来验证账户的所有权。 - 通过他们银行的线上服务页面推动资金(例如银行转账的情况)。 并非所有支付方式都要求额外的客户操作。例如,银行卡付款(要求 3DS 验证的除外)要求在收集完银行卡详情后再进一步验证。 > 对于需要客户操作的支付方式,配置 [Webhook 接收端](https://docs.stripe.com/payments/payment-methods.md#webhooks)来接收付款成功或失败的通知。 ## 付款成功的立即或延迟通知 某些支付方式在尝试交易时会立即返回支付状态(例如,银行卡支付),但其他方式如 ACH 借记则有延迟。对于立即返回支付状态的交易,PaymentIntent 状态会变为 `succeeded` 或 `requires_payment_method`。`succeeded` 状态可保证您将收到客户的资金。 延迟通知型支付方式在延迟期间不保证支付。PaymentIntent 对象的状态会是 `processing`,直至付款状态成功或是失败。这段时间内,很多商家会保持处于_待处理_状态的订单,等待付款成功后再履行订单。 > ​​对于延迟通知型支付方式,请配置 [Webhook 端点](https://docs.stripe.com/payments/payment-methods.md#webhooks)以通知付款是否成功。 ## 一次性使用或重复使用 您可以重复使用某些支付方式(例如银行卡或银行借记)进行额外的付款,不需要再次授权和收集支付详情。 为减少未来的银行拒付和支付阻力(例如[要求的验证](https://docs.stripe.com/strong-customer-authentication.md)),您应该始终设置可重复使用的支付方式以供未来使用。对于可重复使用的支付方式,可以[在接受付款时设置以供未来使用](https://docs.stripe.com/payments/save-during-payment.md),也可以[在不接受付款的情况下设置以供将来使用](https://docs.stripe.com/payments/save-and-reuse.md)。 单次使用的支付方式(例如某些类型的银行转账)不能绑定到客户,因为在尝试付款后即作废。 ## 用 Webhook 跟踪付款状态 通过为需要客户操作或付款通知延迟时的付款方式创建 [Webhook 端点或其他类型的事件接收端](https://docs.stripe.com/event-destinations.md) 来配置 Webhook。Stripe 在 `PaymentIntent` 状态更新时发送以下事件: | 事件 | 描述 | 后续步骤 | | ------------------------------- | ------------------------------------------------------------------------------------------------------------- | ----------------------- | | `payment_intent.processing` | 客户的付款已成功提交至 Stripe。仅适用于[延迟通知型](https://docs.stripe.com/payments/payment-methods.md#payment-notification)支付方式。 | 等待发起的付款成功或失败 | | `payment_intent.succeeded` | 付款成功。 | 交付购买的商品或服务。 | | `payment_intent.payment_failed` | 付款失败了。 | 发送邮件或推送通知,要求客户使用另一支付方式。 | 除设置事件接收端外,您也可以用以下选项构建来侦听事件: - 如果您的公司使用延迟通知型支付方式的交易较少,则可在 Stripe 管理平台中手动跟踪付款的状态。通过管理平台可以[查看您的所有 Stripe 付款](https://dashboard.stripe.com/test/payments),发送邮件收据,处理提现或重试失败的付款。 - 使用轮询(例如,重复检索某个 PaymentIntent 以查看其状态)。请注意,轮询的可靠性要低很多,而且不适合规模操作。Stripe 还对 API 请求有强制性的速率限制,因此在使用轮询方法时,一定要格外小心。 - 通过集成合作伙伴的应用程序,使用它们来处理常见的业务事件,比如[自动化](https://stripe.partners/?f_category=automation)或[市场与销售](https://stripe.partners/?f_category=marketing-and-sales)。 ## PaymentMethod 对象 PaymentMethod 中包含创建付款时可重复使用的支付方式详情(例如银行卡到期日或账单地址),不包含特定交易信息(例如金额、货币)。PaymentMethod 会绑定到 PaymentIntent,用以表示[付款生命周期中的状态](https://docs.stripe.com/payments/paymentintents/lifecycle.md)。每个 PaymentMethod 都有一个[类型属性](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-type)(例如 `"type": "sepa_debit"`)和一个名称与类型相匹配的额外散列,并包含 PaymentMethod 类型的特定信息(例如 `"sepa_debit":{}`)。`sepa_debit` PaymentMethod 对象示例: ```json { "id": "pm_123456789", "object": "payment_method", "billing_details": { "address": {...}, "email": "jenny@example.com", "name": "Jenny Rosen", "phone": "+335555555555" },"sepa_debit": { "bank_code": "37040044", "branch_code": "94832", "country": "FR", "fingerprint": "ygEJfUjzWMGyWnZg", "last4": "3000" }, "type": "sepa_debit", (...) } ``` > 为安全地处理敏感支付信息并自动处理客户操作,Stripe 建议您用 [Stripe.js](https://docs.stripe.com/js.md#stripe-create-payment-method) 创建支付方式。 ## See also - [支付方式指南](https://stripe.com/payments/payment-methods-guide) - [Payment Methods API 参考](https://docs.stripe.com/api/payment_methods.md)