Skip to content

支付回调通知

支付流程

U8SDK完整支付流程如下图,

U8SDK完整支付流程

上图中各个步骤说明:

1、游戏客户端,向游戏服务器请求充值数据.

2、如果游戏有自己的订单系统,这个时候游戏服务器比如生成一条订单数据,然后将订单号等信息返回给客户端.

3、游戏客户端调用U8SDK的支付接口(Pay方法),并将需要在支付通知回调中原封不动传给游戏服务器的数据,比如上一步中的游戏订单号,放入PayParams的extension中.

4、U8SDK框架请求U8Sever充值.

5、U8Server会在订单系统中生成一条订单记录,并将订单状态设置为“支付中”.

6、U8Server返回生成的唯一订单号给客户端.

7、U8SDK调用渠道SDK的支付接口,客户端会打开SDK的支付界面,玩家在SDK支付界面上完成支付操作.

8、玩家完成支付操作之后,SDK服务器端会异步通知给U8Server.

9、U8Server收到充值回调,根据当前渠道SDK的要求,验证合法,并将之前U8Server生成的订单状态改为“处理成功”.

10、U8Server验证成功,给渠道SDK服务器返回一个成功(SUCCESS)或者失败(FAIL)的状态.

11、然后U8Server会异步通知给游戏服务器。 回调通知的地址,优先使用游戏客户端调用U8SDK支付接口传入的payNotifyUrl;如果没传,则使用U8Server后台——>游戏管理中配置的支付回调地址.

12、游戏服务器收到U8Server支付回调时,从回调数据的extension字段中取出之前存放的自定义数据,并校验U8Server返回的商品ID,金额等信息.

13、游戏服务器收到回调,验证成功与否,立马返回给U8Server一个成功或者失败的信息.

14、然后游戏服务器给玩家对应的角色账户中,增加对应的游戏币,并通知给游戏客户端.

签名规则

登录认证协议中的sign字段生成规则如下:

1)除了sign字段和值为空的字段, 将其余字段按照字段key值的升序排列, 然后按照key=value&key=value.....拼接成字符串。(注意接收到字段后,需要先进行url decode,再进行签名计算);

2) 将上述生成的字符串,最后附加&secretKey={SDK Key参数}格式生成待签名字符串。 {SDK Key参数}替换为分配的AppSecret参数;

3)对上面得到的待签名字符串,做md5(32位大写)计算,生成对应的sign;

4) 如果是支付回调协议,将生成的sign和协议请求返回的sign进行比对,如果一致才给玩家发货。

协议内容

当U8聚合SDK服务端收到渠道平台的支付回调,并处理成功时(失败的时候不会通知游戏服务器),我们会请求游戏服务器的发货通知地址,通知游戏服给玩家发货。

这个回调的地址, 客户端在调用支付接口的时候, 通过payNotifyUrl字段传入; 也可以在U8SDK后台-》游戏管理中配置。

1 请求协议

请求地址:游戏服接收请求的http地址
请求方式:POST
请求参数格式:application/x-www-form-urlencoded
参数编码: UTF-8

请求参数:

参数名称参数类型参数说明
appIDString当前游戏的appID
orderIDStringSDK 平台订单号
userIDStringSDK 平台用户唯一ID
priceString充值金额,单位:分
currencyString货币单位,固定值:CNY
cpOrderIDString游戏订单号
channelOrderIDString渠道平台的订单号
extraString客户端调用支付接口传入extension字段的值
orderTimeString充值时间,从1970年到现在的时间戳,单位秒
timestampString回调通知时的时间戳,单位毫秒
productIDString商品ID
roleIDString角色ID
serverIDString服务器ID
testStatusString是否是测试订单 1: 测试订单; 0:正式订单
signString签名,签名算法规则见下方《签名规则》部分,这里使用的secretKey是分配的AppSecret参数

2 响应内容

游戏服务器收到支付回调请求之后, 校验签名正确后, 给聚合SDK服务端返回文本字符串:SUCCESS; 否则返回文本字符串:FAIL

3 注意事项

1) 因为SDK服务器在极端情况下,同一笔订单,有可能会重复通知给游戏服务器。 所以,建议游戏服务器对同一笔订单,如果已经给玩家发货,应该对该订单做好发货标记,当再次受到该订单的发货通知时,应直接忽略,并给SDK服务器返回SUCCESS响应

2) 游戏服务器收到回调后, 应检查当前商品金额,商品ID,角色信息是否匹配, 只有匹配的情况下,才应给玩家发货。

版权所有© 2021-2030 上海丞诺网络科技有限公司