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

基于 Charges API 的银行卡付款旧版

了解如何用 Stripe 的旧版 API 对银行卡执行扣款、保存及验证操作。

复制页面

旧版 API

The content of this section refers to a Legacy feature. Use the Payment Intents API instead.

Charges API 不支持以下功能,信用卡合规对其中很多都有要求:

  • 印度商家
  • Bank requests for card authentication
  • Strong Customer Authentication

Charges 和 Tokens API 为旧版 API,用于以前的 Stripe 集成中来接受借记卡和信用卡付款。对于新的集成,请使用 PaymentIntents。

Charges API 会限制您使用 Stripe 功能的能力。要获得最新功能,请使用 Stripe Checkout 或迁移到 Payment Intents API。

付款流程

多数情况下,PaymentIntents API 提供更大的灵活性和更多的集成选项。

Charges APIPayment Intents API
  1. 用 Elements 在浏览器上收集客户的支付信息。
  2. 通过 Stripe.js 令牌化支付信息。
  3. 执行请求,将令牌发送到服务器。
  4. 用令牌以期望的金额和货币在您的服务器上创建收款。
  5. 在付款成功后履行客户的订单。
  1. 以期望的金额和货币在您的服务器上创建 PaymentIntent。
  2. 将 PaymentIntent 的客户端私钥发送到客户端。
  3. 用 Elements 在浏览器上收集客户的支付信息。
  4. 用 Stripe.js 或移动 SDK 处理 3DS 验证,并在客户端完成付款。
  5. 用 Webhooks 在付款成功后履行客户的订单。

退款

To refund a payment through the API, create a Refund and provide the ID of the charge to be refunded.

Command Line
cURL
curl https://api.stripe.com/v1/refunds \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d charge={{CHARGE_ID}}

要退还某笔付款的一部分,提供一个 amount 参数,以美分作为整数(或收款币种的最小货币单位)。

Command Line
cURL
curl https://api.stripe.com/v1/refunds \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d charge={{CHARGE_ID}} \ -d amount=1000

Apple Pay

您的客户批准付款时,您的应用会收到一个 PKPayment 实例,其中包含他们通过实施 PKPaymentAuthorizationViewControllerDelegate 方式而加密的银行卡详情。

  1. 使用 createTokenWithPaymentSDK 方法将 PKPayment 变成一个 Stripe Token
  2. 用此 Token 创建收款。
CheckoutViewController.swift
Swift
extension CheckoutViewController: PKPaymentAuthorizationViewControllerDelegate { func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler: @escaping (PKPaymentAuthorizationResult) -> Void) { // Convert the PKPayment into a Token STPAPIClient.shared.createToken(withPayment: payment) { token, error in guard let token = token else { // Handle the error return } let tokenID = token.tokenId // Send the token identifier to your server to create a Charge... // If the server responds successfully, set self.paymentSucceeded to YES } } func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {

动态账单描述符

默认情况下,您的 Stripe 的对账单描述符会在您对客户的银行卡扣款后显示在其对账单上。此外,您可以通过在 Charge 对象上使用 statement_descriptor 函数为每个收款请求动态设置对账单描述符。

Command Line
curl
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=999 \ -d "currency"="usd" \ -d "description"="Example charge" \ -d "source"="tok_visa" \ -d "statement_descriptor"="Custom descriptor"

对账单描述符最多为 22 个字符,不能使用 <、>、'、" 或 * 这些特殊字符,且不能只包含数字。

动态设置信用卡和借记卡收款的对账单描述符时,动态部分会附加到结算商家的对账单描述符(用 * 和空格分割)。例如,有一家 FreeCookies 公司,其对账单描述符中包含购买的甜点的种类,则可能是 FREECOOKIES* SUGAR。

* 和空格算在这 22 个字符限制内,Stripe 自动为动态对账单描述符分配 10 个字符。这意味着,如果结算商家的描述符大于 10 个字符,则会被缩短(假设动态对账单描述符也大于 10 个字符的话)。如果动态对账单描述符也大于 10 个字符,则两个描述符都会缩短为 10 个字符。

如果您在字符限制方面有问题,可以在 Stripe 管理平台内设置一个简短描述符,缩短结算商家的描述符。这样可以为动态对账单描述符留出更多空间。简短描述符:

  • 使用动态描述符时替换结算商家的对账单描述符。
  • 可以介于 2 到 10 个字符之间。

注意

如果您账户的对账单描述符超过 10 个字符,则在管理平台设置一个简短描述符或使用 statement_descriptor_prefix。这样可防止您的对账单描述符被意外缩短。

如果您不确定组合之后的对账单描述符具体是什么样子,可以在 Stripe 管理平台查看。

在元数据内存储信息

使用 Payment Intents

如果使用 Payment Intents API,则仅检索并更新 Payment Intent 对象的 metadata 和 description。如果同时使用 Payment Intent 和 Charge,则无法保证这些字段的值一致。

Stripe 支持向您的常见请求(例如处理收款)中添加元数据。元数据不会向客户显示,也不会构成我们的欺诈预防系统拒绝或阻止收款的依据。

通过元数据,您可以向 Stripe 活动关联其他信息(对您自身有意义)。您包含的任何元数据都可以在管理平台内查看(例如,查看单笔收款的页数时),并且可用于常见的报告和导出结果中。举例来说,可以将您店铺的订单 ID 绑定到用来收取该订单付款的那笔收款。这样做的话,您、您的会计或您的财务团队都能很方便地核对 Stripe 内的收款与您系统内的订单。

如果您使用的是 Radar,则考虑以元数据形式传递任何额外的客户信息和订单信息。这样做的话,您便可以编写使用元数据属性的 Radar 规则,并在管理平台内得到有关付款的更多信息,进而加速您的审核流程。

Command Line
curl
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=999 \ -d "currency"="usd" \ -d "description"="Example charge" \ -d "source"="tok_visa" \ -d "metadata[order_id]"=6735

注意

不要以元数据形式或在收款的 description 参数中存储任何敏感信息(个人身份信息、银行卡详情等)。

拒付

如要让您的集成自动响应付款失败的情况,可以通过两种方式访问扣款的 outcome。

  • 付款失败时返回处理 API 错误。如果是阻止的付款和发卡行拒绝的付款,错误中会包含扣款 ID,可以用此 ID 来检索该笔扣款。
  • 用 webhooks 监测状态更新。例如,付款不成功时会触发 charge.failed 事件。
此页面的内容有帮助吗?
是否
需要帮助?联系支持。
加入我们的早期使用计划。
查看我们的更改日志。
有问题?联系销售。
LLM? Read llms.txt.
Powered by Markdoc