stripe 一次性购买 server to server
注:该页面的接口都是 server to server 接口,不支持 client 端使用。使用以下 S2S 接口不需要在 bytepower console 配置资产(assets) 和 商品(products)。
1. 创建一次性支付(one-off payment) 的 stripe 订单
POST /bp/server/user/{user_id}/asset/stripe_payment_intent
接口功能: 该接口创建一个一次性支付(one-time payment) 的 stripe 订单,即 stripe payment intent。
请求头部参数 (Headers)
- X-BytePower-Auth-Token:JWT token
请求体
参数 | 类型 | 说明 |
---|---|---|
pay_platform_config_name | string | 选填参数,使用的 stripe platfrom config 名字,不填默认为 Default |
string | 选填参数,用户邮箱,可以用于关联订单 | |
use_default_payment_method | bool | 选填。 是否使用 stripe customer 的 default payment method,默认为 false,即不使用。 如果本次支付需要用户输入支付信息(如卡号),则可以不使用该选项,这样支付会使用用户填写的支付方式; 如果本次支付希望让用户跳过输入支付信息(如卡号)的步骤,设置该选项为 true,则服务端会尝试使用 stripe customer 的 default payment method 来配置该订单,如果 default payment method 有效,客户端就不再需要用户输入支付信息,可以直接 confirm 订单。 目前只支持【通过 setup_intent 创建订阅订单】 (即接口 /bp/asset/stripe_setup_intent 和 /bp/asset/stripe_sub 的联合使用)来设置 stripe customer 的 default payment method。 |
amonut | int | 必填参数,订单的价格。对于美元来说,单位是分,其它币种请和服务端再确认。 |
currency | string | 必填。订单的币种,格式为 3 个字母的缩写,遵循 ISO 规范,如 usd |
响应
- HTTP 状态码:200
参数 | 类型 | 说明 |
---|---|---|
stripe_payment_intent | object | 返回的 stripe payment intent 对象(即一次性支付订单) |
stripe_payment_intent 数据结构见 stripe_payment_intent 对象说明。
响应示例:
json
{
"stripe_payment_intent": {
"amount": 1000,
"client_secret": "pi_3OoGrUJeDjdpBmRt0ckNRnep_secret_R2XJduJouWqBJ5cI22xEakzT9",
"currency": "usd",
"customer_id": "cus_PdXvHigq3f3svX",
"id": "pi_3OoGrUJeDjdpBmRt0ckNRnep",
"payment_method_id": "",
"status": "requires_payment_method"
}
}
HTTP 状态码:4xx 描述:错误 响应示例:
json
{
"error": {
"error_type": "invalid_parameter",
"message": "xxxxx"
}
}
error_type:
- invalid_parameter (请求参数错误)
- config_invalid (console 配置问题)
- backend unavailable (stripe 第三方错误)
2. 获取 stripe 一次性支付(one-off payment) 订单信息
GET /bp/server/user/{user_id}/asset/stripe_payment_intent/{payment_intent_id}?pay_platform_config_name=
接口功能: 获取 stripe 一次性支付(one-time payment) 订单的信息。stripe 订单 id 由 URL 路径中的 payment_intent_id 给出,stripe 平台配置名字由 query string 中的 pay_platform_config_name 参数给出。
请求头部参数 (Headers)
- X-BytePower-Auth-Token:JWT token。
query string
参数 | 类型 | 说明 |
---|---|---|
pay_platform_config_name | string | 可选参数,stripe platform config 名称,不填默认为 Default |
请求体
无
响应
- HTTP 状态码:200
参数 | 类型 | 说明 |
---|---|---|
stripe_payment_intent | object | 返回的 stripe payment intent 对象(即一次性支付订单) |
assets | array | 用户的 asset 信息 |
stripe_payment_intent 数据结构见 stripe_payment_intent 对象说明。
响应示例:
json
{
"assets": [
{
"custom_expire_time": "0001-01-01T00:00:00Z",
"expire_time": "2024-02-28T06:33:24Z",
"is_auto_renewable": true,
"is_consumable": true,
"is_trial_period": true,
"name": "vip",
"origin": "purchase",
"platform": "stripe",
"product_id": "prod_Nf6dZGfCIERbqP",
"quantity": 300,
"receipt_id": "sub_1OnxkeJeDjdpBmRtQTvwiUeA",
"sub_canceled": false,
"sub_canceled_time": "0001-01-01T00:00:00Z",
"sub_canceled_ts": 0,
"total_quantity": 300,
"type": "subscription",
"valid_seconds": 101407
}
],
"stripe_payment_intent": {
"amount": 1000,
"client_secret": "pi_3OoGrUJeDjdpBmRt0ckNRnep_secret_R2XJduJouWqBJ5cI22xEakzT9",
"currency": "usd",
"customer_id": "cus_PdXvHigq3f3svX",
"id": "pi_3OoGrUJeDjdpBmRt0ckNRnep",
"payment_method_id": "",
"status": "requires_payment_method"
}
}
HTTP 状态码:4xx 描述:错误 响应示例:
json
{
"error": {
"error_type": "invalid_parameter",
"message": "xxxxx"
}
}
error_type:
- invalid_parameter (请求参数错误)
- config_invalid (console 配置问题)
- backend unavailable (stripe 第三方错误)