最近编辑时间: 2024-05-23 15:58:00
在初始化之前,需要在h5.open.d.cn后台获取游戏相关参数和配置支付回调地址notify_url。
appId:h5.open.d.cn后台获取
appKey:h5.open.d.cn后台获取
paymentKey:h5.open.d.cn后台获取
在游戏调用接口前需要初始化SDK。
在游戏页面加载jssdk,sdk地址:
http://h5raw.d.cn/sdk/1.0.0/dl-sdk.js
<script type="text/javascript" src="http://h5raw.d.cn/sdk/1.0.0/dl-sdk.js"></script>
初始化游戏js
var djGame = new DownjoySdk();
步骤:
打开游戏前,用户需在当乐完成登录
当乐SDK通过iframe打开游戏链接,并把cpToken等相关参数附加在URL中
游戏服务端根据cpToken调用当乐SDK接口getUserInfo获取用户信息,在游戏服务端创建游戏角色,游戏角色与当乐平台的unoinId一一对应
示例:
<iframe src="http://www.gamedemo.com/?appId=0&cpToken=c6f8a5cc943a4c1c8ad5f131700ecec1"></iframe>
参数说明::
appId
: 这里是创建游戏当乐平台提供的游戏唯一标识 (required)
cpToken
: 获取用户信息的唯一凭证,只能使用一次(required)
步骤:
游戏服务器调用当乐SDK服务端getUserInfo接口
请求地址:
http://h5sdk.d.cn/api/cp/getUserInfo
请求参数::
appId
: 这里是创建游戏当乐平台提供的游戏唯一标识 (required)
cpToken
: 上一步获取的值(required)
timestamp
: 游戏方生成的时间戳 (required)
sign
: 签名(required)
签名规则:
格式为 md5(签名字符串+appKey)
注意: 所有参数必须按键名升序排序,如下所示:
appId=xxxx&cpToken=xxxx×tamp=xxxxappKey
appId=0&cpToken=c6f8a5cc943a4c1c8ad5f131700ecec1×tamp=1476863124276jkZ2rU@bt%158pM
其中appKey为jkZ2rU@bt%158pM(此为举例说明,实际值为平台分配)
sign MD5签名密文,不区分大小写:
3E20C42182749D616A2D92A336F735D4
请求示例:
http://h5sdk.d.cn/api/cp/getUserInfo?appId=0&cpToken=c6f8a5cc943a4c1c8ad5f131700ecec1×tamp=1476863124276&sign=3E20C42182749D616A2D92A336F735D4
返回数据:
{"code":0, // 状态码:0成功,非0失败
"message":"success", // 错误信息
"data":
{
"unionId":"uuuuueb3882abf60bab6ff52ef191f9e", // 32位字母数字组合,提供给CP的用户唯一标示
"nickName":"testuser", // 昵称
"icon":"http://res.d.cn/forum/avatar/random/13.gif" // 头像
}
}
返回状态码Code说明:
Code
说明
0 | 成功 |
-1 | 参数或签名错误 |
-2 | 游戏不存在或已下架 |
-3 | token不存在或已过期 |
-100 | 系统异常 |
购买游戏内的道具或金币。
步聚:
由游戏服务器生成购买订单,并调用djGame.pay方法,发起订单
用户通过游戏中心完成付费
游戏中心后台发送回调通知到notify_url,通知游戏付费成功
功能说明:
调用当乐H5 SDK的接口购买游戏内道具
pay接口(JS接口)
djGame.pay(payData,callBack);
参数说明:
支付信息payData参数说明(游戏方服务端生成):
unionId
: 这里是游戏中心提供的用户id(必填)
amount
: 道具支付金额(单位元),精确到小数点后两位,(必填)
cpOrder
: 游戏生成的订单号(必填,唯一)
subject
: 游戏道具名称(必填)
serverName
: 用户所在的游戏服务器名称(选填,没有请传空字符串,且参与签名)
role
Name
: 用户所在的游戏角色名称(选填,没有请传空字符串,且参与签名)
sign
: 签名(必填)
签名规则(请在服务端生成签名):
格式为 md5(签名字
符串+paymentKey)
注意: 所有参数必须按键名升序排序,涉及到中文的地方请不要编码,如下所示:
amount=xxxx&cpOrder=xxxx&roleName=xxxx&serverName=xxxx&subject=xxxx&unionId=xxxxpaymentKey值
示例:
amount=0.01&cpOrder=201609261530&roleName=测试角色名称&serverName=测试服务器名称&subject=测试商品&unionId=1661bbb6c98bac425a14f65aa8b56342NIhmYdfPe05f12313
其中NIhmYdfPe05f12313为paymentKey,从后台获取。
生成的签名,不区分大小写:
670F04CD4CC0C011C0C8BEA4553489E7
前台调用:
<script language="javascript">
var payData = new Object();
payData.amount = "0.01";
payData.unionId = "1661bbb6c98bac425a14f65aa8b56342";
payData.cpOrder = "201609261530";
payData.subject = "测试商品";
payData.sign = "670F04CD4CC0C011C0C8BEA4553489E7";
payData.serverName = "测试服务器名称";
payData.roleName = "测试角色名称";
var callback = function (result)
{
//result结构如下
result.code; // 1=成功,-1=取消,其他失败
result.message;// 错误描述
}
djGame.pay(payData,callback);
</script>
注意:可能会因为浏览器的不同导致支付成功以后,无法返回游戏界面。callback同步回调可能会不成功。
result返回字段说明
字段
说明
code | 1:同步回调成功,-1: 支付取消,-2:参数不全,-3:签名不正确,其他失败 |
message | 错误描述 |
用户通过游戏中心提供的支付功能,在支付宝、微信等支付游戏中心完成付费。
功能说明:
用户支付成功后(只有用户支付成功的情况下,游戏中心才会通知游戏方),游戏会向游戏方下单时指定的notidy_url发送支付成功通知。在未收到成功标志前,会在不同时间段总共发起10次通知。
发起参数说明:
cpOrder
: 游戏方生成的唯一订单号(必填,游戏放传入的游戏订单号,请utf-8编码以后参与签名)
order
: 游戏中心生成的唯一订单号(必填,当乐订单号)
unionId
:这里是游戏中心提供的用户id(必填,用户唯一标示)
result
:支付结果 1为成功(必填,1成功)
time
:支付时间字符串(必填,20161008181431)
amount
:商品价格(单位元),精确到小数点后两位,(必填)
sign
:签名(必填)
签名规则:
格式为 md5(签名字符串+paymentKey)
注意: 所有参数必须按键名升序排序,如下所示:
amount=xxxx&cpOrder=xxxx&order=xxxx&result=xxxx&time=xxxx&unionId=xxxxpaymentKey值
示例:
amount=0.01&cpOrder=201609261530&order=7694373028200iuhy5vu2&result=1&time=20161020140850&unionId=1661bbb6c98bac425a14f65aa8b56342NIhmYdfPe05f12313
生成的签名,不区分大小写:
EACC2CF7A8AEEBD3001639577B4ACF60
请求url示例:
http://115.182.62.53:7031/sdknotify/receivePaymentResult.jsp?order=7694373028200iuhy5vu2&amount=0.01&unionId=1661bbb6c98bac425a14f65aa8b56342&time=20161020140850&result=1&cpOrder=201609261530&sign=EACC2CF7A8AEEBD3001639577B4ACF60
cp游戏返回示例:
success //发放道具成功
或者
failure //发放道具失败