外观
Stripe
一、资料准备
产品方(研发)提供以下内容,后续用于支付校验
| 项目 | 项目别名 | 描述 | 示例 |
|---|---|---|---|
| Webhook 密钥 | Webhook Secret | 查看获取步骤 | whsec_xxx |
| 私钥 | Secret Key | 查看获取步骤 | sk_xx |
二、业务时序图

三、产品技术支持
创建 Checkout Session 时,按支付类型填充 metadata 写到对应对象上。
json
{
"adjust_id": "adjust_adid_xxx",
"app_id": 9999 // zeus app id
}3.1 一次性支付
必须开启 invoice_creation ,否则无法正常追踪,开启代码: invoice_creation.enabled = true
在以下位置填充 adjust id 相关的 metadata
Checkout Session 自身的 metadatapayment_intent_data的 metadatainvoice_creation.invoice_data的 metadata
参数示例
json
metadata.adjust_id = adjust_id_xxx
metadata.app_id = 9999 // zeus app id
payment_intent_data.metadata.adjust_id = adjust_id_xxx
payment_intent_data.metadata.app_id = 9999 // zeus app id
invoice_creation.enabled = true
invoice_creation.invoice_data.metadata.adjust_id = adjust_id_xxx
invoice_creation.invoice_data.metadata.app_id = 9999 // zeus app id伪代码
javascript
stripe.checkout.sessions.create({
mode: 'payment',
line_items: [{ price: 'price_xxx', quantity: 1 }],
metadata: {
adjust_id: 'adjust_id_xxx',
app_id: 9999 // 替换为真实的app id
},
payment_intent_data: {
metadata: {
adjust_id: 'adjust_id_xxx',
app_id: 9999 // 替换为真实的app id
},
},
invoice_creation: {
enabled: true,
invoice_data: {
metadata: {
adjust_id: 'adjust_id_xxx',
app_id: 9999 // 替换为真实的app id
},
},
},
})3.2 订阅支付
适用于:普通订阅、付款订阅、带试用订阅,在以下位置填充 adjust id 相关的 metadata
Checkout Session 自身的 metadatasubscription_data的 metadata
示例参数
json
metadata.adjust_id = adjust_id_xxx
metadata.app_id = 9999 // 替换为真实的app id
subscription_data.metadata.adjust_id = adjust_id_xxx
subscription_data.metadata.app_id = 9999 // 替换为真实的app id伪代码
javascript
stripe.checkout.sessions.create({
mode: 'subscription',
line_items: [{ price: 'price_xxx', quantity: 1 }],
metadata: {
adjust_id: 'adjust_id_xxx',
app_id: 9999 // 替换为真实的app id
},
subscription_data: {
metadata: {
adjust_id: 'adjust_id_xxx',
app_id: 9999 // 替换为真实的app id
},
},
})需要注意的是,如果订阅商品支持试用: 还需要在 subscription_data 中额外追加 trial_period_days
javascript
subscription_data: {
trial_period_days: 1,
metadata: {
adjust_id: 'adjust_id_xxx',
app_id: 9999 // 替换为真实的app id
},
}3.3 退款
退款也需要在metadata 中 传入 app_id
示例参数
json
metadata.app_id = 9999 // 替换为真实的app id伪代码
javascript
const params = {
metadata: { app_id: 9999 },
}
if (paymentIntentId) params.payment_intent = paymentIntentId
if (chargeId) params.charge = chargeId
if (amount != null && amount > 0) params.amount = Math.round(Number(amount))
const refund = await stripe.refunds.create(params)四、接口对接
4.1、域名环境
正式域名:https://sdkapi.zeusai.dev
测试域名:https://sdkapi-sandbox.zeusai.dev
对接期间建议先用测试环境测试,便于双方排查问题
4.2、客户端上报接口
调用时机见时序图步骤 2️⃣
接口URL:/api/s2s/v1/partner/order/stripe
请求方式:POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| app_id | Int | 是 | 发行应用ID(我方提供) | 10001 |
| adjust_id | String | 是 | 第三方adjust的 adid | "1e873a4a-7a1b-4453-9274..." |
| receipt_data | String | 是 | 组装支付信息 | "{}" |
返回参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | Int | http status = 200 且 code = 0 为成功状态 |
| message | String | 成功或错误信息 |
注意事项
- Receipt Data 需按以下格式组装,示例如下
json
{
"appId": 10001, // 请替换为正确的AppID
"productID": "prod_xxx", // 商品ID
"priceID": "price_xx", // 价格ID
"invoiceId": "in_xxx",
"subscriptionId": "sub_xxx", // 订阅商品必传,一次性商品传空
"sessionId": "nochajllnojjbangbonjedhc.AO-J1OxL..."
}- 网络超时情况下,需至少重试1次
4.3、Webhook通知设置
- 方式一:产品方(研发)服务端转发到我方回传地址的方式,贵芳需要增加
指数退避策略进行重试,避免网络抖动带来的数据丢失 - 方式二:直接在开发者后台填写我方回传地址
需要转发或勾选的事件:

建议采用方式二
接口兼容
接口URL(旧):/api/callback/v1/stripe/{app_id}/notification
请求方式:POST
请求参数:通知的原始内容,包括 Header和 Body
接口URL(新):/api/callback/v1/stripe/notification
请求方式:POST
请求参数:通知的原始内容,包括 Header和 Body