跳到主内容

从您的应用启动Payment for Stripe (URL 方案)

简而言之:您的应用或网站会打开一个payment:// URL, Payment for Stripe会收取款项,然后打开您的回调 URL 并显示处理结果。无需 SDK,也无需服务器端操作。它在 iPhone 和 Android 上的工作原理相同,只有以下几点不同。

完整的参考文档位于paymentforstripe.com/api 。

工作原理

  1. 您的应用会打开一个带有参数的payment:// URL。
  2. Payment for Stripe启动并设置销售流程。商家使用读卡器、 Tap to Pay或输入卡号的方式收取款项。
  3. 完成后,应用程序会打开您的callback URL,并将结果作为查询参数添加进去。

商家需要登录。如果在另一个账单正在处理时收到链接,应用程序会拒绝该链接,并且您的回调会收到error=charge_in_progress 。

创建账单:payment://new

一次性支付您设定的金额。

姓名 类型 必需的 描述
amount 整数 是的 以大于 0 的最小货币单位表示的金额1000 = 10.00 美元。
currency 细绳 不 三字母 ISO 代码,例如usd或eur 。如果省略,应用程序将使用其已设置的货币。
description 细绳 不 账单描述。对其进行URL编码。
customer 细绳 不 现有Stripe客户 ID ( cus_…)。customer_id 也customer_id 。设置后, email和name将被忽略。
email 细绳 不 客户邮箱。创建新客户。
name 细绳 不 客户名称。对其进行 URL 编码。创建一个新客户。
metadata 细绳 不 添加到付款中的 URL 编码的 JSON 对象,包含键值对。Stripe 的Stripe数据限制适用。
callback 细绳 不 促销结束后将打开的网址。
autoprocess 布尔值 不 true表示跳过键盘输入,直接开始计费。默认值为false 。
auto_return 布尔值 不 true表示结果确定后立即打开回调函数。默认值为false :回调函数会等待商家关闭结果页面后再打开。
 payment://new?amount=2500&currency=eur&description=Coffee%20and%20pastry
 payment://new?amount=3500&autoprocess=true&auto_return=true&callback=myapp://payment-complete

缺少数量、数量为零或amount为非数字的链接将被忽略。

从您的产品目录创建发票:payment://cart

系统会将Stripe产品目录中的价格信息填充到购物车中。商家随后像往常一样付款,销售记录会以已付款发票的形式保存在Stripe中,其中包含这些商品明细。系统不会向您的客户发送发票邮件。

姓名 类型 必需的 描述
prices 细绳 是的 以逗号分隔的price_id:quantity对,例如 price_abc:2, line_items price_abc:2,price_xyz:1也适用。
coupon 细绳 不 要应用于购物车的Stripe优惠券 ID。
customer 细绳 不 现有Stripe客户 ID。customer_id 也customer_id 。
email 细绳 不 客户邮箱。创建新客户。
name 细绳 不 客户名称。对其进行URL编码。
metadata 细绳 不 以 URL 编码的 JSON 对象,包含键值对。
callback 细绳 不 促销结束后将打开的网址。
autoprocess 布尔值 不 只有在所有价格(和优惠券)加载完毕后,账单才会true开始结算。
auto_return 布尔值 不 与上述相同。默认值为false 。
 payment://cart?prices=price_coffee:2,price_muffin:1&email=customer@example.com

请勿同时发送amount和prices 。总价由价格决定,同时包含金额和价格的链接会被忽略。使用`payment_hidden`隐藏价格仍然有效。

支付现有发票:payment://invoice

用于收取未结清的Stripe发票的线下款项。金额、币种、客户和税费信息均来自发票。成功收款后,应用会将发票标记为已付款。支持 iPhone 和 Android 系统。

姓名 类型 必需的 描述
id 细绳 是的 Stripe发票 ID。必须以in_开头。发送未结发票。在 iPhone 上,草稿会先被最终确定。在 Android 上,草稿会被拒绝,并显示error=invoice_state_changed 。
metadata 细绳 不 已将 URL 编码的 JSON 对象添加到 PaymentIntent 中。
callback 细绳 不 交易完成后要打开的 URL。成功后获取invoice_id和payment_intent_id 。
autoprocess 布尔值 不 只有在连接读卡器后, true从发票核对通过后开始结算。
auto_return 布尔值 不 与上述相同。默认值为false 。
 payment://invoice?id=in_1ABC123xyz&autoprocess=true&callback=myapp://invoice-paid

发票用于设置销售,因此,如果amount 、 currency 、 customer 、 customer_id 、 email 、 name 、 description 、 coupon 、 prices或line_items的任何一项不符合要求,链接都会被拒绝,并显示error=invoice_invalid_param 。已付款、作废、无法收回、金额为 0 美元、与订阅关联或设置为使用默认付款方式计费的发票也会被拒绝,每张发票都有其自身的invoice_…错误。

回调

该应用会将这些信息添加到您的回调 URL 中:

姓名 类型 发送 描述
status 细绳 总是 success 、 error或cancelled 。
charge_id 细绳 成功 支付 ID。在 iPhone 上是Stripe账单( ch_… )。在 Android 上是 PaymentIntent( pi_… )。
stripe_charge_id 细绳 仅限安卓系统 Stripe账单( ch_… )。
payment_intent_id 细绳 成功 PaymentIntent。iPhone 仅在payment://invoice时发送。Android 会在每次刷卡支付时发送。
invoice_id 细绳 发票链接 已付款发票, payment://invoice 。
amount 整数 成功 账单金额,以最小单位表示。
currency 细绳 成功 ISO代码全部小写。
error 细绳 错误 类似charge_in_progress或invoice_already_paid这样的简短代码,或者用于显示信用卡被拒的易读消息。
 myapp://payment-complete?status=success&charge_id=ch_3Qx…&success=true&amount=3500&currency=usd&chargeId=ch_3Qx…

需要在两个平台上使用相同的 ID?先读取stripe_charge_id ,然后回退到charge_id 。

对于较旧的集成,该应用程序还会发送success=true 、 chargeId 、 cancelled=true和error[message] 。新代码应读取status 。

取消操作会立即触发回调。账单的成功或失败会等待商家关闭结果页面,除非您设置了auto_return=true 。在 iPhone 上,现金交易不会触发回调,因为没有产生任何费用。

URL编码

  • 对包含空格或符号的每个值进行编码。空格变为%20 , {和}变为%7B和%7D , "变为%22 :变为%3A 。
  • 如果您的回调 URL 有自己的查询字符串,请对整个回调进行编码,以免其&符号拆分您的payment://链接。
  • prices中的逗号和冒号可以保持不变。

元数据{"order_id":"1234","location":"Store A"}变为:

 payment://new?amount=10000&description=Invoice%20%231234&metadata=%7B%22order_id%22%3A%221234%22%2C%22location%22%3A%22Store%20A%22%7D

旧版metadata[order_id]=1234格式也有效。

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助