2.2.2 退款通知
- 接入要求:支付按需选接。
- sdk版本:sdk2.x以上。
版本说明:
版本号 |
日期 |
说明 |
V1.0 |
2021-04-29 |
初始版本 |
简要描述:
- 退款通知接口
- 玩家在Google/ios后台申请退款并成功后,此接口功能是向CP服务器发送退款的订单数据。
- 1.sdk server 会访问Google/ios服务器 获取退款成功的订单数据。
- 2.sdk server会在北京时间的每天零点时分向游戏 server 发送请求,该请求的RequestBody中包含24小时内退款订单数据(以下都为北京时间)。例:5月1日 00:00分 发送 4月30日 00:00-5月1日00:00的退款订单数据。
- 3.游戏 server应按照相应的算法验证签名数据,确定请求是否合法。
- 4.建议游戏 server 对退款的玩家进行相应的惩罚,具体可与ulu 运营协商。
- 5.游戏 server在接收到请求后,需在3s的时间进行响应。
- 6.游戏 server在接收到请求后,需要验证sign签名。
- 7.游戏 server在响应失败或者响应超时后,sdk server 会在请求发送后的第3分钟后,第10分钟后,第30分钟后,第1小时后,第4小时后重新发送请求,期间响应成功后即停止。
- sign签名算法,详情请见2.4.2 HMAC-SHA256的sign签名算法示例:
签名信息,根据参数名称a-z排序,将参数值拼接后+ secret(密钥) finalString,在进行md5()加密,例如:md5(amount+channelReceipt+currency+…+uid+secret)。
请求URL:
请求方式:
支持方式:
RequestBody参数:
参数名 |
必传 |
类型 |
说明 |
orderVoidedList |
是 |
List< object>集合 |
游戏退款详细数据。 |
signature |
是 |
Str |
验证签名,详情请见 HMAC-SHA256的sign签名算法示例 |
orderVoidedList参数:
参数名 |
必传 |
类型 |
说明 |
gameId |
是 |
int(10) |
游戏id,ulu定义 |
payChannel |
是 |
int(2) |
付款渠道,1:ios,2:Google,ulu定义 |
orderNo |
是 |
str(50) |
退款订单所属的ulu订单号,唯一 |
uid |
是 |
str(50) |
退款订单所属的ulu玩家id |
productId |
是 |
str(50) |
购买对象 |
channelReceipt |
是 |
str(50) |
退款的渠道订单号 |
amount |
否 |
str(50) |
玩家实际付款的金额 |
areaAmount |
否 |
str(50) |
区域金额,gameId为100030的项目不含有该参数,其他必有 |
areaCurrency |
是 |
str(50) |
区域币种,gameId为100030的项目不含有该参数,其他必有 |
roleId |
否 |
str(255) |
退款订单所属的角色id,在生成订单时cp提供 |
roleName |
否 |
str(255) |
退款订单所属的角色名,在生成订单时cp提供 |
serverId |
否 |
str(255) |
退款订单所属的角色所在区服id,在生成订单时cp提供 |
serverName |
否 |
str(255) |
退款订单所属的角色所在区服名,在生成订单时cp提供 |
extraData |
否 |
str(255) |
退款订单在生成订单时cp发送的透传参数 |
purchaseTimeMillis |
是 |
int(13) |
订单购买时间,时间戳 |
voidedTimeMillis |
是 |
int(13) |
退款时间,时间戳 |
请求示例
{
"signature": "52a739629c3fc2daddd71018817158b7e4ddbc65e1d50290d3a238dfbebb98b4",
"orderVoidedList": [{
"gameId": 100000,
"amount": "65000.00",
"orderNo": "GOOGLE1379511923569100000",
"productId": "ulu_xxx_00",
"extraData": "1379511918716477440",
"roleId": "3016200000",
"channelReceipt": "GPA.3364-3153-5941-00000",
"serverName": "구릉지대000",
"areaCurrency": "KRW",
"serverId": "30000",
"uid": "1377123541488525000",
"voidedTimeMillis": 1619527807483,
"roleName": "리오0",
"payChannel": 2,
"currency": "KRW",
"areaAmount": "65000.00",
"purchaseTimeMillis": 1617736252052
}, {
"gameId": 100000,
"amount": "65000.00",
"orderNo": "GOOGLE1380556615295500000",
"productId": "ulu_xxxxx_00",
"extraData": "1380556610409291776",
"roleId": "3016200000",
"channelReceipt": "GPA.3394-5235-0100-00000",
"serverName": "구릉지대000",
"areaCurrency": "KRW",
"serverId": "30000",
"uid": "1377123541488520000",
"voidedTimeMillis": 1619527868144,
"roleName": "리오0",
"payChannel": 2,
"currency": "KRW",
"areaAmount": "65000.00",
"purchaseTimeMillis": 1617985327373
}, {
"gameId": 100000,
"amount": "65000.00",
"orderNo": "GOOGLE1380556615295500000",
"productId": "ulu_xxxxx_00",
"extraData": "1380556610409291776",
"roleId": "3016200000",
"channelReceipt": "1000000786730146",
"serverName": "구릉지대000",
"areaCurrency": "KRW",
"serverId": "30000",
"uid": "1377123541488520000",
"voidedTimeMillis": 1619527868144,
"roleName": "리오0",
"payChannel": 1,
"currency": "KRW",
"areaAmount": "65000.00",
"purchaseTimeMillis": 1617985327373
}]
}
游戏 server参数返回方式:
游戏 server 返回参数:
参数名 |
必传 |
类型 |
说明 |
示例 |
returnCode |
是 |
str(10) |
请求结果代码:1为成功,其他为失败 |
1 |
returnMsg |
是 |
str(255) |
请求结果描述,失败为失败原因 |
"SUCCESS" |
游戏 server 返回示例
{
"returnCode":"1",
"returnMsg":"SUCCESS",
}
礼包发送returnCode代码
备注