支付回调
1、支付流程图
2、充值回调接口(项目必须提供)
接口描述:用于向游戏添加游戏币。(如果有充值失败的情况,会用同一个订单号来进行补单请求)
接口提供方:由项目(游戏)开发人员提供,必须含正式和测试的两个接口地址。
输入参数:JSON
输入参数举例:{"accountid":"1350000001", "areaid":"1", "orderid":"14284108827665633280", "paytime":"20190101010300", "money":6, "source":1707, "productid":"com.dianhun.test.a001", "productname":"com.dianhun.test.a001", "param":"", "remark":"", "region":"0", "currency":"USD" , "sign":"f16bb5008c0da22aff0bb7aee75bf900"}
输入参数说明
序号 | 变量名 | 类型 | 长度 | 说明 |
---|---|---|---|---|
1 | orderid | String | 20 | 订单号id(唯一),SDK服务端生成的订单号 |
2 | accountid | String | 20 | 账号数字id,对应客户端接入支付的[uid]参数 |
3 | areaid | String | 4 | 支付服务器标识,对应客户端接入支付的[aredId]参数具体请参考下面 【6、说明】 |
4 | paytime | String | 14 | 充值时间YYYMMDDHHmmss(位数固定,24小时制) |
5 | money | Int | 4 | 对应客户端接入支付的[price]参数,国内单位为元,海外金额单位为分,建议必须校对商品id跟金额是否一致 |
6 | source | Int | 4 | 充值来源 |
7 | productid | String | 30 | 商品id,对应客户端接入支付的[proId]参数, 建议校对商品id跟金额是否一致 |
8 | productname | String | 30 | 商品名,对应客户端接入支付的[proName]参数 |
9 | param | String | 200 | 透传参数,对应客户端接入支付的[memo]参数,根据下单的值原样返回,请勿使用JSON字符串或者JSON对象转换成的字符串 |
10 | remark | String | 200 | 透传参数,对应客户端接入支付的[remark]参数,游戏自定,param 不足时使用,请勿使用JSON字符串或者JSON对象转换成的字符串【历史字段,已经废弃使用】 |
11 | region | String | 4 | 地区。1:中国大陆;0:港澳台及海外 |
12 | currency | String | 3 | 货币单位,国际货币标准单位,比如:CNY |
13 | sandbox | String | 2 | 是否测试订单,1:测试订单;0:正式 |
14 | sign | String | 20 | 加密参数,加密规则:加密字符串MD5 accountid+areaid+money+orderid+paytime+productid+source+appkeyappkey的值跟登录的appkey是同一个。例如:accountid:1350000001 areaid:1money:6ordered:14284108827665633280paytime:20190101010300productid:com.dianhun.test.a001source:1010appkey:12345678加密前的值:1350000001161428410882766563328020190101010300com.dianhun.test.a001101012345678 加密后: f16bb5008c0da22aff0bb7aee75bf900 |
输出参数:Json
序号 | 变量名 | 类型 | 长度 | 说明 |
---|---|---|---|---|
1 | status | String | ok查询成功fail查询失败,paramerror参数错误,repeat 订单号重复 (如游戏返回重复,我们认为成功,其他的错误继续提交) othererror 其他错误 |
3、角色信息查询接口(主体线下与海外线下充值必须提供)
接口描述:用来充值时判断此大区有无相关角色信息
接口提供方:由项目(游戏)开发人员提供,必须含正式和测试的两个接口地址。
一个账号同一大区有多角色的情况下,角色ID可以通过透传来处理
输入参数:Json
输入参数举例:{"areaid":"2", "accountid":"123456", "param":"memo", "region":"1"}
序号 | 变量名 | 类型 | 长度 | 说明 |
---|---|---|---|---|
1 | accountid | String | 20 | 账号数字id |
2 | areaid | String | 4 | 支付服务器标识,对应客户端接入支付的[aredId]参数,多大区的情况,具体请参考下面 【6、说明】 |
3 | param | String | 200 | 透传参数,对应客户端接入支付的[memo]参数,游戏自定;根据下单的值原样返回;请勿使用JSON字符串或者JSON对象转换成的字符串 |
4 | region | String | 4 | 地区。1:中国大陆;0:港澳台及海外 |
输出参数:Json
序号 | name | DataType | Len | Description |
---|---|---|---|---|
1 | status | String | 必须输出。ok:成功;fail:角色不存在 | |
2 | account | String | 账号数字id | |
3 | areaid | String | 大区id | |
4 | name | String | 角色名字 |
4、账号信息查询接口(海外线下网页充值必须提供)
接口描述:用来海外网页充值时查询相关的账号ID和大区ID信息
接口提供方:由项目(游戏)开发人员提供,必须含正式和测试的两个接口地址。
输入参数:JSON
序号 | 变量名 | 类型 | 长度 | 说明 |
---|---|---|---|---|
1 | playerid | String | 20 | 游戏角色ID |
2 | areaid | String | 4 | 大区ID,如果角色ID能够确认账号ID,则这个参数传0。 |
输出参数:JSON
序号 | name | DataType | Len | Description |
---|---|---|---|---|
1 | status | String | 必须输出。ok:成功;fail:角色不存在 | |
2 | account | String | 账号数字id | |
3 | areaid | String | 大区id | |
4 | name | String | 角色名字 | |
5 | areaname | string | 大区名称 |
5、游戏大区查询接口(废弃)
接口描述:用于获取大区信息(不需要开线下充值的不需要提供此接口)
接口提供方:由项目(游戏)开发人员提供,必须含正式和测试的两个接口地址。
输入参数:JSON
序号 | 变量名 | 类型 | 长度 | 说明 |
---|---|---|---|---|
输出参数:JSON
序号 | 变量名 | 类型 | 长度 | 说明 |
---|---|---|---|---|
1 | areaid | String | 大区id | |
2 | name | String | 大区名称 | |
3 | status | String | 大区状态(1新开,2爆满,3推荐,4维护,5测试) | |
4 | channel | String | 大区渠道标识AppStore:就是正版iOS all:所有渠道 other:除了AppStore,dh,应用宝的其他渠道yyb:应用宝 | |
例如:[{"areaid":"1","name":"游戏1区","status":"ok","channel":"AppStore"}] |
开区频次较高的游戏,大区信息更新和添加大区的时候需要请求接口地址,来刷新缓存,具体接口地址请联系相关开放人员。
6、说明
请求方式统一为:POST;数据格式统一用:JSON
以上接口请分别提供正式环境、测试环境两个接口地址
限购道具,需游戏自己增加逻辑处理(如果在回调的时候返回限制结果,
但是实际用户已经支付成功了
充值回调必须校验金额和商品id是否匹配,根据传入的商品id来进行发货处理。
如果透传字段放了游戏的订单号,也必须校验订单号跟传入的金额是否匹配。
支付服务器标识(充值回调,角色查询中的areaid)
100:测试 ,会回调提供的测试地址 9999:iOS提审服,会回调提供的提审地址
PS:明确不开线下充值的游戏,海外网页充值的情况下,整个流程的支付服务器标识可以固定成上面几个值,支付服务器会根据固定的这几个值来区分调用不同的回调地址和角色查询地址。如果查询角色,充值如果要区分大区ID来匹配处理,可以使用透传参数的方式来处理。
目前平台默认回调一个地址(除测试提审之外),如果需要分发不同回调地址,默认是游戏进行分发逻辑;平台侧也可以支持分发逻辑处理 1、根据 areaid(游戏客户端调用SDK充值接口给的areaid)来进行回调分发不同的地址。 2、根据游戏,在提供的回调地址上增加 areaid 路由:callback/{areaid} ,可以游戏根据这个规则进行不同地址分发。 3、根据 source(充值来源)回调分发不同的地址。
一个账号同一大区有多角色的情况下,角色ID可以通过透传来处理