订阅支付接口
1778字约6分钟
注意
涉及到扣款,为避免投诉,平台需提供以下功能或服务:
1、客服24小时在线服务,或者主推地区在工作时间需有人在线值班
2、在平台的个人中心页面需要明确展示订阅扣款入口,有清晰的页面指引让客户知悉扣款周期等信息
3、需有明确的退订入口
4、订阅成功和扣款前后都要有邮件或者其他(非平台内)通知给到客户服务相关事宜,告知客户扣款内容等
5、需要提供平台上订阅服务的协议内容,并经过客户操作确认才能发起订阅扣款申请
注意事项:信用卡扣款,180天内消费者都能发起投诉,拒付投诉如果卡组不认可反驳材料,将会扣除投诉人工费20刀单笔,同时退还消费者的支付金额
限额
交易类型 | 限额(单位:USD) |
---|---|
订阅 | 0.99-1000 |
订阅API
订阅申请
简要描述:
- 创建订阅订单
URL:
/subscription/apply
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appId | 是 | Long | 业务ID(后台获取,需要根据参数currency传递对应的业务ID) |
subscriptionOrderId | 是 | String | 商户订单号(必须保证唯一性,长度不超过48) |
amount | 是 | String | 交易金额(精确到小数点后两位;禁止添加标点符号,例如:”,”) |
name | 是 | String | 用户姓名,推荐使用真实姓名,格式:包含firstName和lastName,以空格分割的,示例:Donald John Trump |
phone | 是 | String | 真实手机号(格式参考 电话号码格式 ) |
是 | String | 真实电子邮件 | |
subject | 是 | String | 订阅标题 |
body | 否 | String | 备注详情 |
inBankCode | 是 | String | CREDIT_CARD |
payType | 是 | String | SUBSCRIPTION |
callBackUrl | 是 | String | 支付完成后跳转地址 |
notifyUrl | 是 | String | 异步通知地址 |
country | 是 | String | 国家 |
currency | 是 | String | 币种,目前支持:USD |
partnerUserId | 是 | String | 用户唯一标识(如用户ID userId),用于风控系统,必须真实有效,否则会影响交易。 格式要求:数字、大小写字母或常用符号-~!@#$%&*()_。 |
recurringInterval | 是 | String | 循环周期类型 W,M,Y |
recurringIntervalCount | 是 | Integer | 循环周期间隔 |
recurringMaxNumber | 是 | Integer | 最大循环次数,无论循环周期是哪个,最长时间不能超过三年,到期订阅自动取消 |
website | 是 | String | 交易网站 |
retryTimes | 是 | Integer | 定期扣款失败重试次数,默认为3 |
sign | 是 | String | 签名 |
request
{
"country": "USA",
"referer": "https://test.com",
"amount": "0.5",
"callBackUrl": "https://www.google.com",
"inBankCode": "CREDIT_CARD",
"subject": "Test subscription",
"subscriptionOrderId": "1736739758574",
"recurringIntervalCount": 1,
"sign": "JeJR4N40eKncoohebUN31aNqPqpBxR799rmMutqrSmMaBn0Sjmqbskl4Wiitmatvvx6tqvuwkOYtk6ryrYj7YqJxDeNfDqthWzOxv2ixkKY0YDoWEAra9sWc4CnXBBssP0VIKg0jSTMNzdvmvuNBa7sLEQj5YjgswUnCGtYCmsz154JHSSRpdeYDLL+Nt5b96pzQn8WyRr6b/9SSCrLCWSdt22gJmY5sQh7cc9OcJfAGb5E1XflTq5Va78cV+fw9hHhaZmFzKncg4wxrdaatxg9tCElMJpL1OuWO7XLfcfqgA/8Y/qRCWmNf11Ji3ZSrr7rU4+V7Egrfu1Fcr5DTlw==",
"partnerUserId": "H20241231",
"payType": "SUBSCRIPTION",
"phone": "0845632145871",
"appId": 1724,
"name": "howard",
"notifyUrl": "https://www.google.com",
"currency": "USD",
"email": "[email protected]",
"recurringInterval": "D"
}
response
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"subscriptionNo": "4025011311423010028",
"subscriptionOrderId": "1736739758574",
"appId": 1724,
"subject": "Test subscription",
"payType": "SUBSCRIPTION",
"inBankCode": "CREDIT_CARD",
"amount": 0.5,
"recurringInterval": "D",
"recurringIntervalCount": 1,
"status": "2",
"sign": "QrOo7yPJMTRk92bP9WU8P0ATdRvCm8dWElhbxqV6qmZEWZDRXeJAwUvd3839zErg+3tN/U4Rwyru219AkXg9CJZtocna3fiYj7uLxwD6bpAp+i9DGz5ZKV9ab5mwIEPWIQXKuY6wATzmlz6W4TvAkRqgGtqLkwYUaeqsmgJrh4WlIMK13GW/zvoCmYfFD6pNZUByVixpll8JPeZG7F9d+x7yjDigJZ2S1wm4F307OzZJkUSKSvQn6Q0lOvp1JS0feXSC+hwCfrdllFXIE10TDV0itoPY5G7+3QdmHpINWp3kWmepR/1pOsN+09hLxe8xKAIZrX2GFHY00xo3QnxBIw=="
}
}
返回data参数说明
参数名 | 类型 | 说明 |
---|---|---|
subscriptionOrderId | String | 商户订阅号(必须保证唯一性) |
subscriptionNo | String | 平台订阅号 |
appId | String | 业务ID |
subject | String | 支付备注 |
payType | String | 订阅固定为SUBSCRIPTION |
inBankCode | String | 银行编码 |
amount | String | 金额 |
payUrl | String | 授权链接 |
recurringInterval | String | 循环周期 W,M,Y |
recurringIntervalCount | String | 环周期间隔 |
status | String | 订阅状态(-1: 订阅异常, 1: 处理中, 2: 订阅成功, 3: 订阅失败, 4: 订阅取消) |
sign | String | 签名 |
查询订阅
简要描述:
- 查询订阅订单
URL:
/subscription/query
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
subscriptionNo | 是 | String | 平台订阅号 |
sign | 是 | String | 签名 |
request
{
"appId": 1724,
"sign": "gETp00ngwiG0qPVcpldPGEsWRCShOJUbwxWizbL9xGbWCtlBsTPFshQtClLtBCRAdhoVNZAD7UQXjdiAsr74neYu1akj1a6d3sNapGaqoTdBgykXyr1hLVe14AIUhLRg0Mj2elOlMPiWMdccSC+i4G/lfPpJLpS/T08S8qttExTOjML5Rrny5jNsYedjf+Jo3jrPsLcfZFX3QrWA4txPG+x7ZrShXUonOiZMoH6hwU8PcETrC0vpGqTwySJ6siS2AwyPOZElR6nf3geIx7GAllFUuZSyjCvRDE+9JeZl5Y2Ohlm9xcRxqHgMi4YB3jSJcwo7GqGqnPapZnO2GvcbGw==",
"subscriptionNo": "4025011311423010028"
}
response
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"subscriptionOrderId": "1736739758574",
"subscriptionNo": "4025011311423010028",
"appId": 1724,
"subject": "Test subscription",
"payType": "SUBSCRIPTION",
"inBankCode": "CREDIT_CARD",
"amount": 0.50000000,
"recurringInterval": "D",
"recurringIntervalCount": 1,
"status": "2",
"deductList": [
{
"deductNo": "4125011311423010028",
"amount": "0.99",
"status": 2,
"orderNo": "2025011311423010028",
"startTime": "2024-12-18 09:25:11",
"endTime": "2024-12-25 09:25:11"
}
],
"sign": "fscM1XiVPqDb/NxrZuVv33zvqFxsXsKri6+MzIsWqdMlcsa7E3ayGNHg6ChiVxFVdow3NAlmg4szGXp0AtvOLDdQ/BAfC8DWpbktjDXeiEQ7ma1/ZKsmVrrLHzF01B5UI33xYX+qMsjMQ/yJBHwY1LTOhPq3lIwShwhB92CCd6IfPPkSi1EPDL6QLKAll3NNRVUw3vktIx+ghePojrmkgOesD7ujCPlXPjvznJ4o99BFhwPr6i+a0w++ZvfoE/NuClTCP4mf1n4umnw70GqHDv3OfwVk9FeE27SC/TMJIgVJiVc9L3o+mJNUyaIT3o9EyKkfUl+lNsz1KnUyfjycUg=="
}
}
返回data参数说明
参数名 | 类型 | 说明 |
---|---|---|
subscriptionOrderId | String | 商户订阅号(必须保证唯一性) |
subscriptionNo | String | 平台订阅号 |
appId | String | 业务ID |
subject | String | 支付备注 |
currency | String | 币种 |
payType | String | 订阅固定为SUBSCRIPTION |
inBankCode | String | 银行编码 |
amount | String | 金额 |
recurringInterval | String | 循环周期 W,M,Y |
recurringIntervalCount | String | 循环周期间隔 |
status | String | 订阅状态(-1: 订阅异常, 1: 处理中, 2: 订阅成功, 3: 订阅失败, 4: 订阅取消) |
deductList | String | 扣款列表 |
sign | String | 签名 |
deductList参数说明
参数名 | 类型 | 说明 |
---|---|---|
deductNo | String | 订阅扣款号 |
amount | String | 扣款金额 |
status | Integer | 扣款状态(0未开始,1扣款中,2扣款成功,3扣款失败) |
orderNo | String | 支付备注 |
startTime | String | 订阅扣款周期-起始时间 |
endTime | String | 订阅扣款周期-结束时间 |
取消订阅
简要描述:
- 取消订阅
URL:
/subscription/cancel
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
subscriptionNo | 是 | String | 平台订阅号 |
sign | 是 | String | 签名 |
request
{
"appId": 1724,
"sign": "gETp00ngwiG0qPVcpldPGEsWRCShOJUbwxWizbL9xGbWCtlBsTPFshQtClLtBCRAdhoVNZAD7UQXjdiAsr74neYu1akj1a6d3sNapGaqoTdBgykXyr1hLVe14AIUhLRg0Mj2elOlMPiWMdccSC+i4G/lfPpJLpS/T08S8qttExTOjML5Rrny5jNsYedjf+Jo3jrPsLcfZFX3QrWA4txPG+x7ZrShXUonOiZMoH6hwU8PcETrC0vpGqTwySJ6siS2AwyPOZElR6nf3geIx7GAllFUuZSyjCvRDE+9JeZl5Y2Ohlm9xcRxqHgMi4YB3jSJcwo7GqGqnPapZnO2GvcbGw==",
"subscriptionNo": "4025011311423010028"
}
response
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"appId": 1724,
"subscriptionNo": "4025011311423010028",
"status": "4",
"payType": "SUBSCRIPTION",
"inBankCode": "CREDIT_CARD",
"sign": "lynHvI+9JhVbhwHiinJGlDEq7CVU67WkNUsNURs1wu4bI2/2ePVORGqbVdnaU+L9qV4JN35gM2hHadn4pye/Xk+iztLVSbDh5F9XpKAmLeLCcYj+II0pt4Eo4QPxnYJjmMzbDu6fdWgjgi/go2M75N7Fqv2QgV/tIu1O2pe4/LRPe3l/IODvW+ppvbf5FHk5hO2AaLUX/Fn7H0MIv6kcKAhu7ImBrNpF79VPj9YC1qXghJE11q4aHx7xfDDCn4GiqDJBXbzLtqGP6cS2CVXlyLxGziKDxM1+Bv02XNbjzYKwcaS1VDNfmzlglVH+GHZcgVpiEa3u4ffezu2NN2B4Yg=="
}
}
返回data参数说明
参数名 | 类型 | 说明 |
---|---|---|
subscriptionOrderId | String | 商户订阅号(必须保证唯一性) |
subscriptionNo | String | 平台订阅号 |
appId | String | 业务ID |
payType | String | 订阅固定为SUBSCRIPTION |
inBankCode | String | 银行编码 |
status | String | 订阅状态(-1: 订阅异常, 1: 处理中, 2: 订阅成功, 3: 订阅失败, 4: 订阅取消) |
sign | String | 签名 |
2.异步通知
简要描述:
- 当客户订阅状态发生变化或订阅周期扣款,我方会推送回调通知
URL:贵方提供
订阅状态变更回调参数:
参数名 | 类型 | 说明 |
---|---|---|
type | String | 固定值 SUBSCRIPTION |
appId | Long | 业务ID |
currency | String | 币种 |
subscriptionOrderId | String | 商户订阅号 |
subscriptionNo | String | 平台订阅号 |
status | String | 订阅状态(-1: 订阅异常, 1: 处理中, 2: 订阅成功, 3: 订阅失败, 4: 订阅取消) |
recurringInterval | String | 循环周期 W,M,Y |
recurringIntervalCount | String | 循环周期间隔 |
subject | String | 订阅标题 |
sign | String | 签名, |
订阅扣款回调参数:
参数名 | 类型 | 说明 |
---|---|---|
type | String | 固定值 SUBSCRIPTIONS_DEDUCT |
appId | Long | 业务ID |
currency | String | 币种 |
subscriptionOrderId | String | 商户订阅号 |
subscriptionNo | String | 平台订阅号 |
deductNo | String | 订阅扣款号 |
orderNo | String | 扣款订单号 |
amount | String | 本次扣款金额 |
status | Integer | 扣款状态(0未开始,1扣款中,2扣款成功,3扣款失败) |
startTime | String | 订阅周期扣款-起始时间 格式: yyyy-MM-dd HH:mm:ss |
endTime | String | 订阅周期扣款-结束时间 格式: yyyy-MM-dd HH:mm:ss |
sign | String | 签名, |
说明
收到回到通知之后,请在响应体中返回SUCCESS (大写),不需要前后引号