调至内容部分
创建账户
或
登录
Stripe 文档徽标
/
询问人工智能
创建账户
登录
开始
付款
财务自动化
平台和交易市场
资金管理
开发人员工具
开始
付款
财务自动化
开始
付款
财务自动化
平台和交易市场
资金管理
概览探索所有产品
开始构建
开始开发
项目示例
关于 API
    API 一览
    Payment Intents API
    Setup Intents API
    支付方式
    Older API
      收款
        迁移到新的 API
        接受银行卡付款
        保存卡
        冻结银行卡内的资金
        用 Connect 收款
      来源
    发布阶段
大语言模型集成
在无代码的情况下使用 Stripe
设置 Stripe
创建账户
产品和价格
网页端管理平台
移动端管理平台
迁移到 Stripe
迁移客户数据
迁移支付数据
迁移订阅
管理欺诈风险
了解欺诈
Radar 欺诈保护
管理争议
验证身份
监管支持
首页开始About the APIsOlder APIsCharges

迁移到 Payment Intents

复制页面

想了解如何使用 Stripe Tax、折扣、配送或货币兑换?

我们正在开发一个 Payment Element 集成,用于管理订阅、税收、折扣、配送和货币兑换。阅读构建结账页面指南,了解更多信息。

了解如何迁移当前银行卡和 Charges API 集成。

付款流程的迁移是一件艰辛的工作。比较安全的做法是逐步采用 Payment Intents API,与 Charges API 同时使用。为此,您可以将迁移工作分为如下步骤:

  1. 更新您的 API 版本和客户端库。
  2. 如果适用,迁移从 Charge 属性读取的代码,使自己在通过 Charges API 和 Payment Intents API 创建的收款之间有一致的读取路径。这可以确保读取端集成能够适应您的新旧支付集成。
  3. 将您现有的 Web、iOS 和 Android Charges API 集成迁移,改为使用 Payment Intents API。
  4. 迁移您的集成,在 Customer 对象上保存银行卡。
  5. 使用监管测试卡进行测试,确保您升级后的集成能够正确处理身份验证。

更新您的 API 版本和客户端库

虽然 Payment Intents API 适用于所有 API 版本,但建议您升级到最新的 API 版本。如果您决定使用 2019-02-11 之前的 API 版本,请在查看代码示例时注意以下两点变更:

  • requires_source 已更名为 requires_payment_method
  • requires_source_action 已更名为 requires_action

In addition, if you use one of our SDKs, upgrade to the latest version of the library to use the Payment Intents API.

迁移您的一次性付款流程

用 Stripe.js & Elements 构建集成时涉及以下步骤:

  1. 注册您的 Intent,在服务器端收款
  2. 在客户端收集支付信息
  3. 开始创建付款
  4. 在服务器端履行客户的订单

第 1 步:注册 Intent,在服务器端收款

在您的服务器端创建 PaymentIntent,并使它可在客户端访问。

升级前
升级后

之前不可能

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1099 \ -d "currency"="usd"

第 2 步:在客户端收集支付信息

使用收集银行卡信息的 confirmCardPayment 函数,并直接将其提交到 Stripe。

升级前
升级后
stripe.createToken( cardElement ).then(function(token) { // Send token to server });
stripe.confirmCardPayment( INTENT_SECRET_FROM_STEP_1, { payment_method: {card: cardElement} } ).then(function(result) { if (result.error) { // Display error.message in your UI. } else { // The payment has succeeded // Display a success message } });

第 3 步:开始创建付款

在您现有的集成中,最后一步是用令牌化的支付方式在您的服务器上创建收款。这已经没有必要了,因为会由 confirmCardPayment函数(上一步中调用的)发起收款的创建过程。

升级前
升级后
Command Line
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{FROM_PREVIOUS_STEP}}" \ -d "amount"=1099 \ -d "currency"="usd"

在上一步中完成

第 4 步:履行客户订单

通过自动确认功能,会根据客户端的客户操作为您异步创建收款,因此您必须监测 webhooks,确定付款何时成功完成。要执行诸如在客户付款成功后履行订单等步骤,请实施 webhooks 支持并监测 payment_intent.succeeded 事件。

升级前
升级后

如果收款成功,则执行。

订阅 payment_intent.succeeded Webhook 并在 Webhook 处理程序中执行。

您已完成迁移,现在,请用下一部分的测试卡验证您升级后的集成能否处理 3DS 验证。

迁移您的集成,在 Customer 对象上保存银行卡

在结账流程收集银行卡信息的 Payment Intents API 集成包含以下步骤:

  1. 注册您的 Intent,在服务器端收款
  2. 在客户端收集支付信息
  3. 开始创建付款
  4. 在服务器端履行客户的订单

第 1 步:注册 Intent,在服务器端收款

在服务器端创建 PaymentIntent。如果您主要是想在用户位于您的应用程序之外时向他们收款,则将 setup_future_usage 设置为 off_session,或者如果您打算在应用程序中向他们收款,则设置为 on_session。如果您打算同时使用该卡进行会话内和会话外付款,请使用 off_session。在确认 PaymentIntent 并完成客户所需的任何操作后,提供 setup_future_usage 参数和 Customer ID 会将生成的 PaymentMethod 保存到该 Customer。接下来,使 PaymentIntent 可以在客户端被访问。

升级前
升级后

之前不可能

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "setup_future_usage"="off_session" \ -d "amount"=1099 \ -d "currency"="usd"

第 2 步:在客户端收集支付信息

使用收集银行卡信息的 confirmCardPayment 函数,并直接将其提交到 Stripe。

升级前
升级后
stripe.createToken( // or stripe.createSource cardElement ).then(function(token) { // Send token to server });
stripe.confirmCardPayment( '{{INTENT_SECRET_FROM_STEP_1}}', { payment_method: {card: cardElement}, } ).then(function(result) { if (result.error) { // Display error.message in your UI. } else { // The payment has succeeded // Display a success message } });

最后,将支付方式(paymentIntent.payment_method)绑定到客户。

升级前
升级后
Command Line
curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}}/sources \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{TOKEN_OR_SOURCE}}"
Command Line
curl https://api.stripe.com/v1/payment_method/{{PAYMENT_METHOD_ID}}/attach \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "customer"="{{CUSTOMER_ID}}"

第 3 步:开始创建付款

在您现有的集成中,最后一步是用令牌化的支付方式在您的服务器上创建收款。这已经没有必要了,因为会由 confirmCardPayment函数(上一步中调用的)发起收款的创建过程。

升级前
升级后
Command Line
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{FROM_PREVIOUS_STEP}}" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="usd"

在上一步中完成

第 4 步:履行客户订单

通过自动确认功能,会根据客户端的客户操作为您异步创建收款,因此您必须监测 webhooks,确定付款何时成功完成。要执行诸如在客户付款成功后履行订单等步骤,请实施 webhooks 支持并监测 payment_intent.succeeded 事件。

升级前
升级后

如果收款成功,则执行。

订阅 payment_intent.succeeded Webhook 并在 Webhook 处理程序中执行。

您已完成迁移,现在,请用下一部分的测试卡验证您升级后的集成能否处理 3DS 验证。

访问保存的支付方式

要显示客户以前保存的 Cards、Sources 以及 PaymentMethods,则应列出支付方式,而非读取客户对象的 sources 属性。必须要这样做,因为添加到客户的新 PaymentMethods 不会在客户对象的 Sources 属性中重复出现。

升级前
升级后
Command Line
customer.sources
Command Line
curl https://api.stripe.com/v1/payment_methods?customer={{CUSTOMER_ID}}&type=card \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:

测试集成

务必要对您的集成进行全面测试,确保其可以正确处理需要及不需要额外验证的银行卡,这一点非常重要。在沙盒环境下用这些卡号(到期日可以是任意未来的日期,任意三位 CVC 均可),测试需要和不需要身份验证的两种情况。

卡号验证描述
设置或首次交易时需要此测试卡要求对一次性付款进行验证。但如果您是用 Setup Intents API 设置的此卡并且后续付款使用保存的银行卡,则不需要进一步验证。
必填该测试卡要求对所有交易进行身份验证。
必填该测试卡需要验证,但在验证成功后,付款会被拒绝,并显示 insufficient_funds 失败代码。
支持This test card supports authentication through 3D Secure 2, but does not require it. Payments using this card do not require additional authentication in a sandbox unless your sandbox Radar rules request authentication.

在您的应用程序或付款演示中使用这些卡,查看不同的行为。

另见

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