Appearance
H5端接入指引
SDK说明
1.接入须知
SDK通过iFrame的形式加载游戏页面;
SDK通过iFrame加载游戏页面时会给iFrame的src附带GET参数,游戏可通过获取GET参数拿到SDK提供的信息,GET参数中包含了用户的UID信息,以及是否为游客模式;
游戏可以根据自身逻辑选择是否允许游客玩家游戏,若不允许可主动调用登录接口;
每当玩家切换帐号时SDK会重新加载iframe以更新传递给游戏的GET参数;
SDK通过GET参数形式传递账号和签名信息给游戏,所以游戏无需再接入服务端验证用户信息接口
2.支付流程
游戏通过SDK提供的JSAPI调用支付接口,SDK会弹出支付页面;
当玩家支付完成后,SDK服务器会向游戏服务器发送发货通知;
游戏处理发货通知向玩家发送道具完成购买;
接入流程
1.导入SDK
引入JSSDK类库
html
<script type="text/javascript" src="https://api.x6xy.com/static/lib/libSDK.js"></script>2.初始化SDK(必接)
调用SDK提供的H5SDK.init方法,传入参数productCode完成SDK初始化。
javascript
// 参数productCode为必填,由对接的运营提供
H5SDK.init('productCode')3.登录
拉起用户登录弹窗,需要在初始化成功之后调用,否则调用无效。游戏可以主动调用此接口显示一个用户登录弹窗。
H5SDK.login提供一个回调函数,其中参数loginNotify中将返回玩家登录的信息,失败时为失败原因,成功后登录后会刷新页面重新加载游戏。
javascript
H5SDK.login(function(loginNotify){
console.log(loginNotify);
})通知示例:
json
{status: false, data: "", message: "账号或密码错误"}4.处理用户登录
游戏链接被加载时SDK会向游戏链接添加GET参数
| 参数 | 说明 |
|---|---|
| uid | 玩家uid |
| username | 玩家用户名 |
| sign | MD5签名,游戏需验证签名是否正确,不正确拒绝登录 |
| isLogin | 是否游客,0游戏,1正式帐号 |
| time | 时间戳 |
| marketTag | 投放标示 |
本地计算sign:md5(uid+’&’ + username + ‘&’ + time + ’&‘ + callbackkey)
玩家唯一标识uid,游戏应获取uid匹配玩家角色信息,使用uid前需进行签名验证验证。若本地签名与GET参数的sign一致,则签名通过,不一致则拒绝玩家登录游戏。
注:callbackkey由SDK后台分配,可通过运营获取。
5.退出登录
当玩家退出登录时,SDK会重新加载游戏链接,更新链接上的GET参数。
javascript
H5SDK.logOut()6.充值
回调函数参数payStatusObject对象中status为true时为支付成功。注客户端的通知应仅仅作为UI展示,发货需以最终的服务器通知为准,且发送金额需为服务器通知中的告知的金额。(服务器通知接口参见《服务器对接文档》)
javascript
var orderInfo = new Object();
orderInfo.productCode = 'productCode'
orderInfo.uid = 'uid'
orderInfo.userRoleId = 'roleId1'
orderInfo.userRoleName = '沙巴克杀手'
orderInfo.userServer = '沙巴克一区'
orderInfo.userLevel = 1
orderInfo.cpOrderNo = 'cpOrderNo000001'
orderInfo.amount = '0.01'
orderInfo.subject = '麻痹戒指'
orderInfo.desc = '麻痹戒指999个'
orderInfo.callbackUrl = ''
orderInfo.extrasParams = ''
orderInfo.goodsId = ''
orderInfo.count = 60
orderInfo.quantifier = '个'
var orderInfoJson = JSON.stringify(orderInfo)
H5SDK.pay(orderInfoJson,function(payStatusObject){
console.log('GameDemo:下单通知' + JSON.stringify(payStatusObject))
})| 字段 | 类型 | 说明 |
|---|---|---|
| productCode | 必传 | SDK后台分配的参数,由对接的运营提供 |
| uid | 必传 | 用户uid |
| username | 选传 | 用户username |
| userRoleId | 必传 | 游戏角色ID |
| userRoleName | 必传 | 游戏角色名称 |
| userServer | 必传 | 游戏角色所在区服 |
| userLevel | 必传 | 游戏角色等级 |
| cpOrderNo | 必传 | 游戏内的订单,服务器通知中会回传 |
| goodsId | 必传 | 商品ID |
| amount | 必传 | 购买金额(元),如:648 |
| count | 必传 | 购买商品个数 |
| quantifier | 必传 | 购买商品单位,如:个 |
| subject | 必传 | 商品名称 |
| desc | 选传 | 商品描述 |
| callbackUrl | 选传 | 服务器通知地址,订单支付成功后SDK向游戏通知发货的地址。可在SDK后台配置,创建支付订单时传了通知地址,则以支付传的为最终通知地址 |
| extrasParams | 选传 | 透传参数,服务器通知中原样回传。扩展字段请勿传特殊符号(如单引号,双引号等),如果无法避免建议先进行base64编码后再传 |
注:选传字段的值可以为空字符串,但是字段必须传
7.角色上报
回调函数参数response对象中status为true时为上报角色成功。
javascript
let roleInfo = new Object()
roleInfo.serverName = '沙巴克一区'
roleInfo.userRoleName = '沙巴克杀手'
roleInfo.userRoleId = 'roleId1'
roleInfo.userRoleBalance = 1000
roleInfo.vipLevel = 1
roleInfo.userRoleLevel = 1
roleInfo.partyName = '行会名称'
roleInfo.uid = 'uid'
let roleInfoJson = JSON.stringify(roleInfo)
H5SDK.uploadGameRoleInfo(roleInfoJson,function(response){
if(response.status){
// ...
} else {
// ...
}
})| 字段 | 类型 | 说明 |
|---|---|---|
| uid | 必传 | 用户uid |
| serverName | 选传 | 区服名称 |
| userRoleName | 必传 | 游戏角色 |
| userRoleBalance | 选传 | 角色游戏内货币余额 |
| userRoleId | 必传 | 角色ID |
| userRoleLevel | 必传 | 角色等级 |
| vipLevel | 选传 | 角色VIP等级 |
| partyName | 选传 | 公会/社团名称 |
注:选传字段的值可以为空字符串,但是字段必须传