H5游戏开发文档

H5游戏SDK接入文档

一、初始化

获取游戏相关参数

在初始化之前,需要在h5.open.d.cn后台获取游戏相关参数和配置支付回调地址notify_url

示例:

appId:h5.open.d.cn后台获取

appKey:h5.open.d.cn后台获取

paymentKey:h5.open.d.cn后台获取


说明

在游戏调用接口前需要初始化SDK。

加载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();

二、登录


步骤:

  1. 打开游戏前,用户需在当乐完成登录

  2. 当乐SDK通过iframe打开游戏链接,并把cpToken等相关参数附加在URL中

  3. 游戏服务端根据cpToken调用当乐SDK接口getUserInfo获取用户信息,在游戏服务端创建游戏角色,游戏角色与当乐平台的unoinId一一对应



获取登录cpToken

示例:

<iframe src="http://www.gamedemo.com/?appId=0&cpToken=c6f8a5cc943a4c1c8ad5f131700ecec1"></iframe>

参数说明:

  • appId : 这里是创建游戏当乐平台提供的游戏唯一标识 (required)

  • cpToken : 获取用户信息的唯一凭证,只能使用一次(required)


根据cpToken获取用户信息

步骤:

    游戏服务器调用当乐SDK服务端getUserInfo接口

请求地址:

    http://h5sdk.d.cn/api/cp/getUserInfo

请求参数:

  • appId : 这里是创建游戏当乐平台提供的游戏唯一标识 (required)

  • cpToken : 上一步获取的值(required)

  • timestamp : 游戏方生成的时间戳 (required)

  • sign : 签名(required)


签名规则:

格式为 md5(签名字符串+appKey) 

注意: 所有参数必须按键名升序排序,如下所示:

    appId=xxxx&cpToken=xxxx&timestamp=xxxxappKey

    appId=0&cpToken=c6f8a5cc943a4c1c8ad5f131700ecec1&timestamp=1476863124276jkZ2rU@bt%158pM

    其中appKey为jkZ2rU@bt%158pM(此为举例说明,实际值为平台分配)

    sign MD5签名密文,不区分大小写:

    3E20C42182749D616A2D92A336F735D4


    请求示例:

    http://h5sdk.d.cn/api/cp/getUserInfo?appId=0&cpToken=c6f8a5cc943a4c1c8ad5f131700ecec1&timestamp=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游戏不存在或已下架
-3token不存在或已过期
-100系统异常




三、支付

购买游戏内的道具或金币。

步聚:

  1. 由游戏服务器生成购买订单,并调用djGame.pay方法,发起订单

  2. 用户通过游戏中心完成付费

  3. 游戏中心后台发送回调通知到notify_url,通知游戏付费成功

发起购买订单

功能说明:

调用当乐H5 SDK的接口购买游戏内道具

pay接口(JS接口)

djGame.pay(payData,callBack);

参数说明:

支付信息payData参数说明(游戏方服务端生成):

  • unionId : 这里是游戏中心提供的用户id(必填)

  • amount : 道具支付金额(单位元),精确到小数点后两位,(必填)

  • cpOrder : 游戏生成的订单号(必填,唯一)

  • subject : 游戏道具名称(必填)

  • serverName : 用户所在的游戏服务器名称(选填,没有请传空字符串,且参与签名)

  • roleName : 用户所在的游戏角色名称(选填,没有请传空字符串,且参与签名)

  • 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返回字段说明

字段说明
code1:同步回调成功,-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 //发放道具失败