Skip to content

H5SDK接入文档

一. 适用范围

该SDK适用于H5网页游戏。

二. 如何集成

H5SDK推荐使用标签方式引入JS:

html
<script src="http://domain/sdktools/h5sdk.aspx"></script>

请保持http域名及路径不变,我们会保持版本最新,请不要下载下来使用,避免受到旧版本的影响。domain向商务索要。

三. 接口调用

3.1 接口调用之前需要初始化:

javascript
gwsdk.init(app_id);
  • app_id: 我方分配的游戏唯一编号。

3.2 登录

我方按照你方提供的login_url携带以下参数进行跳转, 签名验证成功则进入游戏。

  • Get参数:
参数类型说明备注
app_idstring我方分配的游戏唯一编号
ipstringIP地址
extstring透传信息,不参与签名
timestampstring当前时间戳
uidstring我方玩家唯一标识
signstring签名结果,使用login_key进行签名

签名算法:

  1. 需要签名的字符串A=按照key=value的格式,用&连接并按照参数名ASCII字典序排序(即字母顺序)。
  2. 待签名的字符串B=需要签名的字符串A+"&sign_key="+签名KEY。
  3. 对待签名的字符串B进行MD5签名,编码为UTF-8。

签名示例:

javascript
var B= "app_id=" + app_id + "&ip=" + ip + "&timestamp=" + timestamp + "&uid=" + uid + "&sign_key=" + login_key;
//待签名字符串,这里使用login_key签名

说明:只有我方登录成功,才会执行该跳转。

3.3 退出登录

方法名称:gwsdk.logout(logout_callback) 参数说明:

  1. logout_callback(status): 执行退出登录的回调方法
    • status: int类型, 退出状态 1:退出成功 0:退出失败

示例:

javascript
gwsdk.logout(function (status) {
    alert("渠道返回的退出状态:" + status);
});

说明:无论渠道方是否退出成功,都会执行回调方法,游戏方需要判断status。

3.4 切换账号

方法名称:gwsdk.loginchange(loginchange_callback) 参数说明:

  1. loginchange_callback(status): 执行切换账号的回调方法
    • status: int类型, 退出状态 1:切换成功 0:切换失败

示例:

javascript
gwsdk.loginchange(function (status) {
    alert("渠道返回的退出状态:" + status);
});

说明:无论渠道方是否切换成功,都会执行回调方法,游戏方需要判断status。如果渠道方切换成功,会重新打开登录窗口,无需游戏方调用登录接口。

3.5 角色上报

方法名称:gwsdk.push_roleinfo(roleinfo, callback) 参数说明:

  1. roleinfo(obj): 角色信息对象

    javascript
    Var roleData ={};
    roleData.serverid="1"; //区服ID
    roleData.servername="1区"; //区服名称
    roleData.roleid="10000";  //角色ID
    roleData.rolename="孙悟空"; //角色名称
    roleData.rolelevel=58;//角色等级
    roleData.rolebalance="1000"; //角色游戏内货币余额
    roleData.partyid="你好";  //帮派ID
    roleData.rolepower="100000";  //角色战力
    roleData.viplevel="VIP8";  //VIP等级
    roleData.rolegender="男";     //角色性别
    roleData.partyrolename="天下第一帮"; //帮派名称
    roleData.professionid="1";   //角色职业Id
    roleData.profession="法师";   //角色职业名称
    roleData.friendlist="[]";  //角色好友列表
    roleData.eventname="升级";  //事件类型:  登录 注册 升级 退出
  2. callback(status, msg): 角色上报的回调方法

    • status: int类型, 上报状态 1:上报成功 0:上报失败
    • msg: 错误原因, 只有当status为0时, msg才提示错误原因

示例:

javascript
gwsdk.push_roleinfo(roleData, function (status,msg) {
    alert("渠道返回的角色上传状态:" + status);
    if(status==0)
    {
        alert("错误原因:" + msg);
    }
});

说明:游戏方在创建角色,等级提升,修改角色名等等,上报角色信息。

3.6 游戏充值

方法名称:gwsdk.create_order(roleData ,orderInfo ,timestamp, sign,callback) 参数说明:

  • orderinfo(obj): 角色信息对象

    javascript
    var orderInfo ={};
    orderInfo.cpOrderID="20231007162056"; //cp的订单编号
    orderInfo.amount="20.00";  //订单金额
    orderInfo.count="200"; //购买的游戏币数量 即20元可以购买多少游戏币
    if融合sdk传999999
    orderInfo.goodsID="商品ID";  //游戏方商品Id
    orderInfo.goodsName="点券"; //商品名称  如:元宝 钻石 点券
    orderInfo.goodsdesc="月卡"; //商品描述: 如:周卡 月卡 元旦活动 648送10%
    orderInfo.extrasParams(""); //透传参数
  • timestamp: 时间戳

  • sign: 签名 (见下方”订单发起时Sign计算方法”)

  • callback(is_pay,cp_order_id,order_id): 游戏充值的回调方法

    • is_pay: 玩家是否完成付款 1:已完成 0:未完成
    • cp_order_id: 游戏方的订单号
    • order_id: 渠道方(我方)的订单号

示例:

javascript
gwsdk.create_order(roleinfo, orderinfo, timestamp, sign, function (is_pay,
cp_order_id,  order_id) {
    alert("支付状态" + is_pay);
//此返回值不能作为玩家是否支付的依据,只为前端效果提供支持
});

订单发起时Sign计算方法如下:

javascript
string app_id = "de13612d5e934590";
string cporder = "20231007162056";//cp的订单号
string timestamp = "1696687507";  //时间戳
string signstr =
"amount={amount}&app_id={app_id}&cporder={cporder}&timestamp={timestamp}&uid
={uid}" + "d027b0e2d1bc4b5a9a0f8caf734f90db"; //待签的字符
这里使用pay_key进行签名
signstr = signstr.Replace("{amount}", Convert.ToInt32(20 *
100).ToString());
signstr = signstr.Replace("{app_id}", app_id);
signstr = signstr.Replace("{cporder}", cporder); //cp方的订单号
signstr = signstr.Replace("{timestamp}", timestamp);
signstr = signstr.Replace("{uid}", "2-196");
string sign = Common.Utils.MD5(signstr).ToLower();

说明:不论玩家是否完成充值,都会执行回调方法,游戏方需要判断is_pay是否为1(是否支付成功)。注意:玩家是否支付成功,以服务端通知为准,H5SDK返回的is_pay=1, 不可作为玩家充值成功状态。服务端通知请参阅服务端对接文档。与安卓IOS相同。

下方为完成的demo示例:

html
<script type="text/javascript">
    $(function () {
        var app_id = "dcc63538a2d04d71";
        //初始化
        gwsdk.init(app_id);

        //打开登录窗口(当玩家在你方掉线时,可以调用此方法)
        $("#btn_login").click(function () {
            gwsdk.login();
        });

        //退出登录
        $("#btn_logout").click(function () {
            gwsdk.logout(function (status) {
                alert("渠道返回的退出状态:" + status);
            });
        });

        //切换账号
        $("#btn_loginchange").click(function () {
            gwsdk.loginchange(function (status) {
                alert("渠道返回的切换账号状态:" + status);
            });
        });

        //角色上报
        $("#btn_push_roleinfo").click(function () {
            var roleinfo = {};