H5SDK接入文档
一. 适用范围
该SDK适用于H5网页游戏。
二. 如何集成
H5SDK推荐使用标签方式引入JS:
<script src="http://domain/sdktools/h5sdk.aspx"></script>
请保持http域名及路径不变,我们会保持版本最新,请不要下载下来使用,避免受到旧版本的影响。domain向商务索要。
三. 接口调用
3.1 接口调用之前需要初始化:
gwsdk.init(app_id);
- app_id: 我方分配的游戏唯一编号。
3.2 登录
我方按照你方提供的login_url携带以下参数进行跳转, 签名验证成功则进入游戏。
- Get参数:
参数 | 类型 | 说明 | 备注 |
---|---|---|---|
app_id | string | 我方分配的游戏唯一编号 | |
ip | string | IP地址 | |
ext | string | 透传信息,不参与签名 | |
timestamp | string | 当前时间戳 | |
uid | string | 我方玩家唯一标识 | |
sign | string | 签名结果,使用login_key进行签名 |
签名算法:
- 需要签名的字符串A=按照key=value的格式,用&连接并按照参数名ASCII字典序排序(即字母顺序)。
- 待签名的字符串B=需要签名的字符串A+"&sign_key="+签名KEY。
- 对待签名的字符串B进行MD5签名,编码为UTF-8。
签名示例:
var B= "app_id=" + app_id + "&ip=" + ip + "×tamp=" + timestamp + "&uid=" + uid + "&sign_key=" + login_key;
//待签名字符串,这里使用login_key签名
说明:只有我方登录成功,才会执行该跳转。
3.3 退出登录
方法名称:gwsdk.logout(logout_callback)
参数说明:
- logout_callback(status): 执行退出登录的回调方法
- status: int类型, 退出状态 1:退出成功 0:退出失败
示例:
gwsdk.logout(function (status) {
alert("渠道返回的退出状态:" + status);
});
说明:无论渠道方是否退出成功,都会执行回调方法,游戏方需要判断status。
3.4 切换账号
方法名称:gwsdk.loginchange(loginchange_callback)
参数说明:
- loginchange_callback(status): 执行切换账号的回调方法
- status: int类型, 退出状态 1:切换成功 0:切换失败
示例:
gwsdk.loginchange(function (status) {
alert("渠道返回的退出状态:" + status);
});
说明:无论渠道方是否切换成功,都会执行回调方法,游戏方需要判断status。如果渠道方切换成功,会重新打开登录窗口,无需游戏方调用登录接口。
3.5 角色上报
方法名称:gwsdk.push_roleinfo(roleinfo, callback)
参数说明:
roleinfo(obj): 角色信息对象
javascriptVar 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="升级"; //事件类型: 登录 注册 升级 退出
callback(status, msg): 角色上报的回调方法
- status: int类型, 上报状态 1:上报成功 0:上报失败
- msg: 错误原因, 只有当status为0时, msg才提示错误原因
示例:
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): 角色信息对象
javascriptvar 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: 渠道方(我方)的订单号
示例:
gwsdk.create_order(roleinfo, orderinfo, timestamp, sign, function (is_pay,
cp_order_id, order_id) {
alert("支付状态" + is_pay);
//此返回值不能作为玩家是否支付的依据,只为前端效果提供支持
});
订单发起时Sign计算方法如下:
string app_id = "de13612d5e934590";
string cporder = "20231007162056";//cp的订单号
string timestamp = "1696687507"; //时间戳
string signstr =
"amount={amount}&app_id={app_id}&cporder={cporder}×tamp={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示例:
<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 = {};