H5SDK推荐使用标签方式引入JS
<script src="https://sdk.yema6.cn/sdktools/h5sdk.aspx"></script>
请保持域名及路径不变,我们会保持版本最新,请不要下载下来使用,避免受到旧版本的影响
接口调用之前需要初始化
gwsdk.init(app_id)
登录
我方按照你方提供的login_url携带以下参数进行跳转,签名验证成功则进入游戏.Get参数:
签名算法
1.需要签名的字符串A=按照key=value的格式,用&连接并按照参数名ASCII字典序排序(即字母顺序)
2.待签名的字符串B=需要签名的字符串A+"&sign_key="+签名KEY
3.对待签名的字符串B进行MD5签名,编码为UTF-8
var B= "app_id=" + app_id + "&ip=" + ip + "×tamp=" + timestamp + "&uid=" + uid+ "&sign_key=" + login_key; //待签名字符串,这里使用login_key签名
说明:只有我方登录成功,才会执行该跳转
退出登录
方法名称:gwsdk.logout(logout_callback)
参数说明:
logout_callback(status):执行退出登录的回调方法 status:int类型,退出状态 1:退出成功 0:退出失败
gwsdk.logout(function (status) {alert("渠道返回的退出状态:" + status);});
说明:无论渠道方是否退出成功,都会执行回调方法,游戏方需要判断 status
切换账号
方法名称:gwsdk.loginchange(loginchange_callback)
1.loginchange_callback(status):执行切换账号的回调方法;status:int类型,退出状态 1:切换成功 0:切换失败
gwsdk.loginchange(function (status) {alert("渠道返回的退出状态:" + status);});
角色上报
1.方法名称:gwsdk.push_roleinfo(roleinfo,callback)
1. roleinfo(obj):角色信息对象 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="3"; //事件类型:0、未知;1、进入游戏;2、创建角色;3、角色升级;4、角色充值;5、退出登录或者切换账号;99、退出游戏
callback(status,照&):角色上报的回调方法status:int类型,上报状态1:上报成功 0:上报失败ms&:错误原因,只有当 status 为0时,mg,才提示错误原因
gwsdk.push_roleinfo(roleData, function (status,msg) { alert("渠道返回的角色上传状态:" + status); if(status==0) { alert("错误原因:" + msg); } });
说明:游戏方在创建角色,等级提升,修改角色名等等,上报角色信息
充值
方法名称:gwsdk.create_order(roleData ,orderInfo ,timestamp, sign,callback)
2.orderinfo(obj):角色信息对象 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.orderinfo(obj):角色信息对象 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="4"; //事件类型: 4、角色充值
timestamp:时间戳
sign:签名 (见下方”订单发起时Sign计算方法”)
5.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相同
--> $(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 = {}; roleinfo.serverid = "1"; //区服ID roleinfo.servername = "1区"; //区服名称 roleinfo.roleid = "10000"; //角色ID roleinfo.rolename = "H5角色名称"; //角色名称 roleinfo.rolelevel = 58;//角色等级 roleinfo.rolebalance = "1000"; //角色游戏内货币余额 roleinfo.partyid = "dxdy"; //帮派ID roleinfo.rolepower = "100000"; //角色战力 roleinfo.viplevel = "VIP8"; //VIP等级 roleinfo.rolegender = "男"; //角色性别 roleinfo.partyrolename = "天下第一帮"; //帮派名称 roleinfo.professionid = "1"; //角色职业Id roleinfo.profession = "法师"; //角色职业名称 roleinfo.friendlist = "[]"; //角色好友列表 roleinfo.eventname = "升级"; //事件类型: 登录 注册 升级 退出 gwsdk.push_roleinfo(roleinfo, function (status, msg) { if (status == 1) { alert("渠道返回的角色上传成功:" + status); } else { alert("渠道返回的角色上传失败,错误原因:" + msg); } }); }); //创建订单 $("#btn_create_order").click(function () { var roleinfo = {}; roleinfo.serverid = "1"; //区服ID roleinfo.servername = "1区"; //区服名称 roleinfo.roleid = "10000"; //角色ID roleinfo.rolename = "H5角色名称"; //角色名称 roleinfo.rolelevel = 58;//角色等级 roleinfo.rolebalance = "1000"; //角色游戏内货币余额 roleinfo.partyid = "dxdy"; //帮派ID roleinfo.rolepower = "100000"; //角色战力 roleinfo.viplevel = "VIP8"; //VIP等级 roleinfo.rolegender = "男"; //角色性别 roleinfo.partyrolename = "天下第一帮"; //帮派名称 roleinfo.professionid = "1"; //角色职业Id roleinfo.profession = "法师"; //角色职业名称 roleinfo.friendlist = "[]"; //角色好友列表 roleinfo.eventname = "充值"; //事件类型: 充值 var orderinfo = {}; orderinfo.cpOrderID = "20231007162056"; //cp的订单编号 orderinfo.amount = "20.00"; //订单金额 orderinfo.count = "200"; //购买的游戏币数量 即20元可以购买多少游戏币 如果融合sdk传999999 orderinfo.goodsID = "商品ID"; //游戏方商品Id orderinfo.goodsName = "点券"; //商品名称 如:元宝 钻石 点券 orderinfo.goodsdesc = "月卡";//商品描述: 如:周卡 月卡 元旦活动 648送10% orderinfo.extrasParams = "";//透传参数,本参数不参与签名 请求你方服务端发货时会携带本参数,具体参见服务端文档 var timestamp = "1696687507";//此参数应由服务端生成 var sign = "6ceb59279a368a0772a3fc31acbefe9e";//此参数应由服务端根据签名规则使用pay_key,计算签名得出,签名规则参见服务端文档 gwsdk.create_order(roleinfo, orderinfo, timestamp, sign, function (is_pay, cp_order_id, order_id) { alert("渠道返回支付状态" + is_pay); //此返回值不能作为玩家是否支付的依据,只为前端效果提供支持 }); }); }); -->