简而言之:您的应用或网站会打开一个payment:// URL, Payment for Stripe会收取款项,然后打开您的回调 URL 并显示处理结果。无需 SDK,也无需服务器端操作。它在 iPhone 和 Android 上的工作原理相同,只有以下几点不同。
完整的参考文档位于paymentforstripe.com/api 。
工作原理
- 您的应用会打开一个带有参数的
payment://URL。 - Payment for Stripe启动并设置销售流程。商家使用读卡器、 Tap to Pay或输入卡号的方式收取款项。
- 完成后,应用程序会打开您的
callbackURL,并将结果作为查询参数添加进去。
商家需要登录。如果在另一个账单正在处理时收到链接,应用程序会拒绝该链接,并且您的回调会收到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¤cy=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¤cy=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格式也有效。