退款收藏我的收藏
收藏
我的收藏抖音侧向服务商发起退款的申请。
使用限制
1、需要支持单券维度退款
2、若抖音侧请求的 orderId 在服务商查询不到对应的订单,且 code 为空时,返回【待审核】(这种场景一般为下单时服务商没有正确处理,需自行排查)
3、同券码的多次退款请求,服务商需保证返回结果幂等
4、若退款申请时报错,抖音侧会每小时重试
接口 SLA
- 1.服务商服务SLA请保证在99.9%以上
- 2.接口响应延时不能超过8s,超过8s则当作未响应
- 3.由于存在过期退场景,因此服务商需要确保能承受100~400QPS(根据自身用户量来定)
接口说明
1、抖音侧向服务商发起退款申请,可多个券码批量退款(不会跨订单),同步返回审核结果时不支持同一个退款请求中通过一部分拒绝一部分,如果要实现部分通过部分拒绝请返回【待审核】并后续调用「审核回调」接口通知抖音侧审核结果。重要: 务必做到券维度的退款申请幂等
2、接口请求成功(正常处理退款请求,并返回退款结果)时务必确保 error_code=0,退款的结果通过 data.result 字段标识, 如果不按照该规范返回, 统一会认为是待确认,等待服务商后续调「审核回调」接口
3、请求 body 中有 code 为空的券,表示该券没有发码成功。若该券需要拒绝退款(例如:已经在服务商侧已经发码、核销等),接口返回中需要回传对应的 code,否则认为拒绝退款失败,等待服务商调「审核回调」同步结果。
4、服务商返回响应的 result 标识退款的结果:
(1)待确认,后续需要调「审核回调」接口告知抖音侧退款结果
(2)允许,表示同意本次退款申请,允许所有券退款 (后面不再需要调「审核回调」)
(3)拒绝,表示拒绝本次退款申请 (后面 不再需要调「审核回调」)
5、对于上述所有需要调「审核回调」接口的场景,请务必24 小时内完成回调,若超时未回调将自动通过退款申请,并完成退款流程
基本信息
HTTP URL | 地址由服务商提供 | |||
HTTP Method | POST | |||
申请权限 | 三方码发布 | |||
权限要求 |
|
服务商/商家侧 SPI 接口配置
配置路径:开放平台-服务商平台/开发者平台-控制台-应用详情页-开发设置-SPI 回调
需配置接口:
接口 | 回调场景(配置SPI回调地址时可见) | 需提供信息 | 是否必填 |
预下单 | 抖音请求三方系统预下单 | 回调地址:预下单URL | 必填 |
发券 | 抖音请求三方系统发码 | 回调地址:发券URL | 必填 |
退款 | 抖音请求三方系统退款审核 | 回调地址:退款URL | 必填 |
信息同步 | 抖音向三方系统同步退款信息 | 回调地址:信息同步URL | 必填 |
签名规则
请求参数
Body 请求
参数名称 | 参数类型 | 参数描述 | 必需 |
order_id | string | 抖音侧的订单号 | 是 |
after_sale_id | string | 抖音侧售后单号 多张券属于同一售后单才会返回 | 否 |
certificates | list(object) | 申请退款的券码列表 | 是 |
.certificate_id | string | 代表一张券码的标识 | 是 |
.code | string | 三方 码(若发码失败则为空) | 否 |
.total_count | int64 | 次卡商品总次数(仅次卡商品有) | 否 |
.verify_count | int64 | 次卡商品已核销次数(仅次卡商品有) | 否 |
.refund_count | int64 | 次卡商品退款次数(仅次卡商品有) | 否 |
.origin_amount | int64 | 应退金额,应退金额=实退金额+退款违约补偿金额(仅次卡商品有) | |
.refund_amount | int64 | 实退金额(仅次卡商品有) | |
.deduct_fee_amount | int64 | 退款违约补偿金额(仅次卡商品有) | 否 |
.sub_item_list | list(object) | 次卡商品次数信息列表(仅次卡商品有)(仅次卡商品有) | 否 |
..sub_item_id | string | 次卡退款次序号(仅次卡商品有) | 否 |
..origin_amount | int64 | 应退金额,应退金额=实退金额+退款违约补偿金额(仅次卡商品有) | 否 |
..refund_amount | int64 | 实退金额,次序号实退金额=次序号用户实退金额 + 次序号营销实退金额(仅次卡商品有) | 否 |
..marketing_amount | int64 | 营销实退金额(仅次卡商品有) | 否 |
..user_amount | int64 | 用户实退金额(含支付优惠退款)(仅次卡商品有) | 否 |
..deduct_fee_amount | int64 | 退款违约补偿金额(仅次卡商品有) | 否 |
请求示例
{ "order_id": "12345678", "after_sale_id": "123456", "certificates": [ { "certificate_id": "987654321", "code": "abcd1234" }, { "certificate_id": "123456789", "code": "abcd5678" } ] }
响应参数
| 字段类型 | 字段描述 |
data | object | |
.error_code | int64 | 接口错误码 |
.description | string | 接口错误描述 |
.result | int | 退款审核结果. 0:待确认,1:允许,2:拒绝 |
.reason | string | 拒绝原因,若结果为拒绝时必填 |
.codes | list(string) | 若拒绝退款 并且 请求的body中有code字段为空的券,则必填 1)填写后,平台将对订单执行补发码; 2)次卡场景,购买多数量时,每份次卡的code不能重复 |
.vouchers | list(string) | 补码凭证信息 json |
.certificate | list | result=2,需指定券补码时必须返回,根据请求certificate返回所有对应的凭证code |
..certificate_id | string | 抖音内部券ID |
..code | string | 服务商侧券码 |
响应示例
单张券正常示例
{ "data": { "error_code": 0, "description": "success", "result": 2, "codes": ["abcd1234"] } }
多张券正常示例
{ "data": { "error_code": 0, "description": "success", "result": 2, "codes": "", "certificate": [ { "certificate_id": "12323", "code": "xxxx" }, { "certificate_id": "45645", "code": "yyyy" } ] } }