xuguohong

提交js对接资料

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>H5SDK测试</title>
<script type="text/javascript" src="game_Simulate.js"></script>
<script type="text/javascript" src="https://static.public.sdk.guangkatf.com/h5_sdk/guangkaH5SDK.js?" + new Date().getTime().toString()></script>
<script type="text/javascript">
</script>
</head>
<body>
<center>
<h1>H5SDK测试页面</h1>
</center>
<hr>
<center>
<table>
<tr>
<td>
<pre><button type="button" onclick="game.init()"> 初 始 化 </button></pre>
</td>
<td>
<pre><button type="button" onclick="game.submitInfo()">提交角色信息</button></pre>
</td>
</tr>
<tr>
<td>
<pre><button type="button" onclick="game.login()"> 登 录 </button></pre>
</td>
<td>
<pre><button type="button" onclick="game.logout()"> 注 销 </button></pre>
</td>
</tr>
<tr>
<td>
<pre><button type="button" onclick="game.pay()"> 支 付 </button></pre>
</td>
<td>
<pre><button type="button" onclick="game.switchAccount()"> 切换账号 </button></pre>
</td>
</tr>
<tr>
<td>
<pre><button type="button" onclick="game.statistics()"> 统 计 </button></pre>
</td>
<td>
<pre><button type="button" onclick="game.showExitDialog()"> 退出游戏 </button></pre>
</td>
</tr>
<tr>
<td>
<pre><button type="button" onclick="game.expansionInterface()"> 扩展接口 </button></pre>
</td>
</tr>
</table>
</center>
<hr>
</body>
</html>
\ No newline at end of file
//另一种在代码中引入JS文件的方式
// var newScript = document.createElement('script');
// newScript.setAttribute('type', 'text/javascript');
// newScript.setAttribute('src', 'Test2.js');
// document.getElementsByTagName('head')[0].appendChild(newScript);
document.write("<script type=\"text\/javascript\" src=\"youaiH5SDK.js\"><\/script>");
var game = {
/**
* code: {
INIT_SUCCESS: 1,
INIT_FAIL: -1,
LOGIN_SUCCESS: 10,
LOGIN_FAIL: -10,
LOGOUT_SUCCESS: 100,
LOGOUT_FAIL: -100,
SWITCH_SUCCESS: 1000,
SWITCH_FAIL: -1000,
PAY_SUCCESS: 2,//充值以服务端回调结果为准
PAY_FAIL: -2,
PAY_CANCEL:-3,//支付取消
EXIT_SUCCESS = 4,//退出成功
EXIT_CANCEL = -4//取消退出
}
* @param {*} code 为youaiH5SDK.code中对应值
* @param {*} msg
*/
callback: function (code, msg) {
console.log(code, msg);
switch (code) {
case youaiH5SDK.code.INIT_SUCCESS:
console.log("game init success")
break;
case youaiH5SDK.code.LOGIN_SUCCESS:
console.log("game login success")
console.log("openId:" + msg.openId + "custom:" + msg.custom + "serverSign:" + msg.serverSign + "timestamp:" + msg.timestamp);
break;
case youaiH5SDK.code.LOGOUT_SUCCESS:
console.log("game logout success")
break;
case youaiH5SDK.code.SWITCH_SUCCESS:
console.log("game switch account success")
break;
case youaiH5SDK.code.PAY_SUCCESS:
console.log("game pay success")
break;
case youaiH5SDK.code.EXIT_SUCCESS:
//游戏处理退出逻辑
break;
}
},
init: function () {
var SDKInfo = {
"gameSimpleName": "fytx_test",
"sdkSimpleName": "huoshu_h5",
"sdkClientVersion": "1.0",
"sdkVersionCode": "V1_0",
"statisticsUrl": "",
"channelParameter1": "yy",
"channelParameter2": "yy2"
};
var param = window.location.search.substring(1);
console.log(param);
var params = param.split("&");
console.log(params);
for (var i = 0; i < params.length; i++) {
console.log(params[i]);
var values = params[i].split("=");
console.log(values);
switch (values[0]) {
case "ya_game":
SDKInfo.gameSimpleName = values[1];
break;
case "ya_sn":
SDKInfo.sdkSimpleName = values[1];
break;
case "ya_ssv":
SDKInfo.sdkVersionCode = values[1];
break;
case "ya_sv":
SDKInfo.sdkClientVersion = values[1];
break;
default:
break;
}
}
youaiH5SDK.init(SDKInfo, this.callback);
},
login: function () {
var param = "test";
youaiH5SDK.login(param);
},
logout: function () {
if (youaiH5SDK.hasLogout()) {
youaiH5SDK.logout();
}
},
switchAccount: function () {
if (youaiH5SDK.hasSwitchAccount()) {
console.log("end switch account");
youaiH5SDK.switchAccount();
}
},
submitInfo: function () {
/**
* 为youaiH5SDK.type中对应类型值
type: {
arriveEntrance: 1,//首屏日志
arriveLoadingZero: 2,//刚开始加载资源类型
arriveLoadingFinish: 3,//资源加载完成
arriveCreateRolePage: 4,//到达创建角色页面
arriveServerSelectPage: 5,//到达选服页面
enterServer: 6,//选服完成,点击进入对应服时
arriveFirstScene: 7,//到达游戏内第一场景时调用
enterGame: 8,//进入游戏时调用
createRole: 9,//创建角色时调用
upRoleLevel: 10//角色升级日志
}
*/
var submitType = youaiH5SDK.type.enterGame;
var roleInfo = {
"roleID": "15",
"roleName": "test",
"roleLevel": "15",
"roleSex": "test",
"serverID": "15",
"serverName": "test",
"roleCTime": "15",
"partyName": "test",
"roleType": "test",
"roleChangeTime": "test",
"vipLevel": "15",
"diamond": "15",
"moneyType": "test",
"custom": "test"
};
youaiH5SDK.submitData(submitType, roleInfo);
},
pay: function () {
var payInfo = {
"serverId": "15",
"serverName": "test",
"playerId": "15",
"playerName": "test",
"playerLevel": "15",
"postAmount": "15",
"openId":"123643",
"productId": "15",
"productName": "test",
"productDesc": "test",
"custom": "test",
"exchange": "15",
"otherInfo": "15",
"timeStamp": "15"
};
youaiH5SDK.pay(payInfo);
},
showExitDialog: function () {
if (youaiH5SDK.hasShowExitDialog()) {
youaiH5SDK.showExitDialog();
} else {
//游戏自己处理退出逻辑
youaiH5SDK.exitGame();
}
},
statistics: function () {
var data = [{ "headers": { "product": "roh5" }, "body": "2018-03-14 17:57:21|test|5|qd|dqd|xqd|22222|20qd|10|1050055" }];
var statisticsListener = {
onStatisticsSuccess: function () {
alert("Statistic success!");
},
onStatisticsFail: function () {
alert("Statistic fail!");
}
};
youaiH5SDK.statistics(data, statisticsListener);
},
expansionInterface: function () {
/**
* 传公共sdk扩展类型
* {
gameSetting:100,//功能设置
downloadMicroClent:101,//下载微端
share:102,//分享
focus:103,//关注
save2Desktop:104,//保存到桌面
realVerify:105,//实名认证
back2Game:106,//返回游戏
bindPhone:107,//绑定手机有奖接口
}
*/
var expansion_type = youaiH5SDK.expansion_type.gameSetting;//功能设置
/**
* {
code:0,//0:成功 其他为失败
message:"success",//返回描述
data:{//除了gameSetting类型,其他功能暂时不返回data字段
has_micro_client:0,//是否有微端 0:没有,1:有,2已经在微端中
is_share:0,//是否有分享接口 0:没有,1:有
is_focus:0,//是否有关注 0:没,1:有,2:已经关注
is_apple_pay:0,//是否开启苹果支付 0:不开启 1:开启
is_desktop:0,//是否有保存桌面 0:没有 1:有
is_switch_account:0,//是否有切换账号 0:没有 1有
is_realverify:0,//是否有实名认证 0:没有 1:有 2:已认证
is_super_kefu:0,//是否有超级客服 0:没 1:有
is_backtogame:0,//是否有返回按钮 0:没有,1:有
is_lock:0,//是否竖屏 0:研发默认样式 1:强制竖屏
is_focus_gift:0,//关注有礼 0:关闭 1:开启
is_bindphone:0//绑定手机 0:关闭 1:开启 2:已绑定手机
}
}
* @param {*} result
*/
var expansionCallBack = function(result){
}
youaiH5SDK.expansionInterface(expansion_type,"",expansionCallBack);
}
};
\ No newline at end of file
http://gitlab.9133.com:10080/sdk_9133/sdk_public_android/edit/master/doc/%E5%85%AC%E5%85%B1SDK%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%8E%A5%E5%85%A5%E6%96%87%E6%A1%A3.md
\ No newline at end of file
# **公共SDK-H5 JS接入文档** #
>版本:**1.1**
>
>最后修改:**2019年9月17日**
## **一、接入准备** ##
游戏页面引入公共SDK-H5相关JS文件(防止缓存游戏可加个版本或时间戳控制)
- 接公共平台的引入下面js
- https://static.public.sdk.gzyouai.com/h5_sdk/youaiH5SDK.js
- 接入光卡的引入下面js
- https://static.public.sdk.guangkatf.com/h5_sdk/guangkaH5SDK.js
```
注意:壳包的话需要在给定的链接上添加一个uuid参数用来传机身码(ios:传IDFA,Android:imei)
例子:http://game.html?uuid=idfa
```
## **二、JS接口(对接可参考Demo中的game_Simulate.js中的例子)** ##
1. **初始化SDK(必接)**
![Alt text](1.png)
//CP在公共平台填写SDK信息后,我方会生成带有参数的游戏链接(如上图所示),例如:http://gameURL?ya_game=游戏项目代号&ya_sn=SDK代号&ya_sv=SDK客户端版本号&ya_ssv=SDK服务端版本号
//设置公共sdk回调方法
/**
code: {
INIT_SUCCESS: 1,
INIT_FAIL: -1,
LOGIN_SUCCESS: 10,
LOGIN_FAIL: -10,
LOGOUT_SUCCESS: 100,
LOGOUT_FAIL: -100,
SWITCH_SUCCESS: 1000,
SWITCH_FAIL: -1000,
PAY_SUCCESS: 2,//充值以服务端回调结果为准
PAY_FAIL: -2,
PAY_CANCEL:-3,//支付取消
EXIT_SUCCESS: 4,//退出成功
EXIT_CANCEL: -4//取消退出
}
@param {*} code 为youaiH5SDK.code中对应值
@param {*} msg
*/
callback: function (code, msg) {
console.log(code, msg);
switch (code) {
case youaiH5SDK.code.INIT_SUCCESS://初始化成功 msg为描述
console.log("game init success")
break;
case youaiH5SDK.code.LOGIN_SUCCESS://登录成功
/**
*custom: "test"//透传参数
*openId: "x1111dc104b800724d112195b61e1ff5"
*serverSign: "ccb0488a46be85b9fc1b5bd55b532376"//签名校验sign
*timestamp: "1554174508038"
**/
console.log("game login success");
console.log("openId:" + msg.openId + "custom:" + msg.custom + "serverSign:" + msg.serverSign + "timestamp:" + msg.timestamp);
break;
case youaiH5SDK.code.LOGOUT_SUCCESS:
console.log("game logout success")
//回到游戏登录入口,然后调用登录接口
login();
break;
case youaiH5SDK.code.SWITCH_SUCCESS:
console.log("game switch account success")
//游戏处理切换账号成功逻辑
break;
case youaiH5SDK.code.PAY_SUCCESS:
console.log("game pay success")
break;
case youaiH5SDK.code.EXIT_SUCCESS:
//游戏处理退出逻辑
break;
}
},
youaiH5SDK.init(this.callback);
2. **账号登录**
var param = "test";//透传参数
//启用账号登录接口
youaiH5SDK.login(param);
3. **注销账号/切换账号**
//注销接口
if(youaiH5SDK.hasLogout()){//判断是否存在注销接口
youaiH5SDK.logout();
}
//切换账号接口
if(youaiH5SDK.hasSwitchAccount()){//判断是否存在切换账号接口
youaiH5SDK.switchAccount();
}
例子:
/**
* youaiH5SDK.hasLogout()
* youaiH5SDK.hasSwitchAccount()
* 游戏可以根据上面两个接口判断是否提供切换账号接口
*/
switchAccount: function () {
if (youaiH5SDK.hasLogout()) {//存在注销接口,注销后会回调到初始化接口的注销类型的回调中
youaiH5SDK.logout();
}else if (youaiH5SDK.hasSwitchAccount()) {//存在切换账号接口,切换账号成功后会回调到初始化接口中的切换账号类型回调中
console.log("end switch account");
youaiH5SDK.switchAccount();
}else{//不存在切换账号接口,游戏自己处理
}
}
4. **提交数据信息**
在游戏中对应点根据不同的type进行调用
/**
* 为youaiH5SDK.type中对应类型值
type: {
arriveServerSelectPage: 1,//到达选服页面
createRole: 2,//创建角色时调用
enterGame: 3,//进入游戏时调用
upRoleLevel: 4,//角色升级日志
arriveEntrance: 5,//首屏日志
enterServer: 6,//选服完成,点击进入对应服时
arriveFirstScene: 7,//到达游戏内第一场景时调用
arriveLoadingFinish: 8,//资源加载完成
arriveLoadingZero: 9,//刚开始加载资源类型
arriveCreateRolePage: 10//到达创建角色页面
}
*/
var submitType = youaiH5SDK.type.enterGame;//进入游戏
//设置角色信息
var roleInfo = {
"roleId": "角色ID",
"roleName": "角色名称",
"roleLevel": "角色等级",
"roleSex": "角色性别 1:男 0:女",
"serverId": "服务器ID",
"serverName": "服务器名称",
"roleCTime": "角色创建时间",
"partyName": "工会名字",
"roleType": "角色类型",
"roleChangeTime": "角色更新时间",
"vipLevel": "VIP等级",
"diamond": "角色金币数量",
"moneyType": "商品单位",
"custom": "扩展参数",
"isNew":"新创建角色第一次登录进游戏为1,其他为0",
"score":"战力",
"roleLevelReborn":"转生等级,没有传0"
};
//以上信息中,游戏如没有传空值即可
//启用提交信息接口
youaiH5SDK.submitData(submitType, roleInfo);
5. **支付**
//设置订单参数
var payInfo = {
"serverId": "服务器ID",
"serverName": "服务器名字",
"playerId": "角色ID",
"openId":"渠道用户ID",
"playerName": "角色名字",
"playerLevel": "角色等级",
"postAmount": "金额",
"productId": "商品ID",
"productName": "商品名称",
"productDesc": "商品描述",
"custom": "自定义透传参数",
"exchange": "游戏币与人民币(元)的兑换比例",
"otherInfo": "额外信息",
"timestamp": "时间戳"
};
//以上信息中,游戏如没有传空值即可
//启用支付接口
youaiH5SDK.pay(payInfo);
6. **退出游戏**
if(youaiH5SDK.hasShowExitDialog()){//渠道含有退出框,游戏在回调中处理退出逻辑
youaiH5SDK.showExitDialog();
}else{
//游戏自己处理退出逻辑后调用exitGame()接口
youaiH5SDK.exitGame();
}
7. **获取公共层参数接口**
说明:本接口通过键获取对应的参数值,需要在初始化成功后才能调用
/**
获取公共层参数
@param {string} key
*/
getParamValueByKey:function (key)
例子:
youaiH5SDK.getParamValueByKey("custom");//获取公共后台的自定义参数
youaiH5SDK.getParamValueByKey("channelParameter1");//渠道标识1
youaiH5SDK.getParamValueByKey("channelParameter2");//渠道标识2
youaiH5SDK.getParamValueByKey("channelId");//渠道号
8. **扩展接口(游戏可根据渠道要求看是否接入)**
/**
扩展接口
@param {*} type 扩展类型
@param {*} data 传递数据(当type为queryProductsInfo时传递充值项ID数据(具体值与渠道沟通)(eg:["test1","test2"]),其他类型暂时不传)
@param {*} callback 回调方法
*/
expansionInterface: function (type, data, callback);
示例:
/**
* 传公共sdk扩展类型
* {
gameSetting:100,//功能设置
downloadMicroClent:101,//下载微端
share:102,//分享
focus:103,//关注
save2Desktop:104,//保存到桌面
realVerify:105,//实名认证
back2Game:106,//返回游戏
bindPhone:107,//绑定手机有奖接口
score:108,//评分
kefu:109,//客服接口
queryProductsInfo:110,//根据sku(商品ID)查询商品信息
eventTrack:111//事件上报接口
}
*/
var expansion_type = youaiH5SDK.expansion_type.gameSetting;//功能设置
/**
* {
code:0,//0:成功 其他为失败
message:"success",//返回描述
data:{//gameSetting时返回下面数据
has_micro_client:0,//是否有微端 0:没有,1:有,2已经在微端中
is_share:0,//是否有分享接口 0:没有,1:有
is_focus:0,//是否有关注 0:没,1:有,2:已经关注
is_apple_pay:0,//是否开启苹果支付 0:不开启 1:开启
is_desktop:0,//是否有保存桌面 0:没有 1:有
is_switch_account:0,//是否有切换账号 0:没有 1有
is_realverify:0,//是否有实名认证 0:没有 1:有 2:已认证
is_super_kefu:0,//是否有超级客服 0:没 1:有
is_backtogame:0,//是否有返回按钮 0:没有,1:有
is_lock:0,//是否竖屏 0:研发默认样式 1:强制竖屏
is_focus_gift:0,//关注有礼 0:关闭 1:开启
is_bindphone:0,//绑定手机 0:关闭 1:开启 2:已绑定手机
is_kefu:0,//是否有客服 0:没有,1:有(调用对应的客服类型接口(kefu))
is_score:0,//是否有评分接口 0:没有,1:有(调用对应的评分类型接口(score))
is_query_products_info:0,//是否有查询商品信息接口 0:没有 1:有(调用对应的查询商品信息接口(queryProductsInfo))
is_event_track:0// 0:没有 1:有 是否有事件上报接口
}
[//查询商品信息返回数据(queryProductsInfo)
{
"displayPrice": "₩1159.69",//商品显示的价格
"price": "₩1,160",
"priceAmountMicros": 1159687601,
"priceCurrencyCode": "KRW",
"sku": "android.test.purchased",
"title": "名称示例"
},
{
"displayPrice": "₩1159.69",
"price": "₩1,160",
"priceAmountMicros": 1159687601,
"priceCurrencyCode": "KRW",
"sku": "android.test.purchased",
"title": "名称示例"
}
]
}
* @param {*} result
*/
var expansionCallBack = function(result){
}
youaiH5SDK.expansionInterface(expansion_type,"",expansionCallBack);
9. **统计(大数据小组要求游戏接入)**
客户端日志接入说明
接入方式:HTTP
数据格式:JSON
格式说明:
一条完整的日志,json格式为:
{
“headers” : {"product" : "roh5"}, //头信息
“body” : “2017-12-19 12:19:07|click|1|qd|dqd|xqd” //日志内容
}
一次请求发送的格式必须是以上json的数组格式的字符串形式,如:
[
{
“headers” : {"product" : "roh5"},
“body” : “2017-12-19 12:19:07|click|1|qd|dqd|xqd”
}, //发送的第一条日志
{
“headers” : {"product" : "roh5"},
“body” : “2017-12-19 12:19:07|click|1|qd|dqd|xqd”
}, //发送的第二条日志
…… //第三条……
]
如果一次只发一条记录,也需要用长度为1的数组,如:
[
{
“headers” : {"product" : "roh5"},
“body” : “2017-12-19 12:19:07|click|1|qd|dqd|xqd”
}
]
其他说明:
Json中的headers暂时先传一个产品代号,后续有需要再扩展日志中,头两个字段是固定的,第一个字段必须是“yyyy-MM-dd HH:mm:ss”格式的时间戳,第二个字段是日志类型名称(如login,click等…),各个字段以“|”号进行分隔。
如果数据本身存在竖线,则需要使用中文竖线”丨”进行替换
---------------------------------
//以上是大数据小组要的统计信息格式
//设置信息
var data = 统计信息,例如:[{ "headers": { "product": "roh5" }, "body": "2018-03-14 17:57:21|test|5|qd|dqd|xqd|22222|20qd|10|1050055" }];
//设置统计监听
var statisticsListener = {
onStatisticsSuccess: function () {
alert("Statistic success!");
},
onStatisticsFail: function () {
alert("Statistic fail!");
}
};
//启用统计接口
youaiH5SDK.statistics(data, statisticsListener);