小游戏SDK-1.3.0
公众号需要为SDK配置的可访问域名
测试:
https://wxmini-test.xxx.com,
https://ipregion-test.xxx.com(使用checkIP接口再添加,已废弃)
https://platform-test.xxx.com(使用checkIP接口再添加)
正式:
https://wxmini-log.xxx.com,
https://wxmini.xxx.com,
https://ipregion.xxx.com(使用checkIP接口再添加,已废弃)
https://platform.xxx.com(使用checkIP接口再添加)
SDK目录结构
--sdk.js
--sdk-conf.js
安装方法
把sdk.min.js 和 sdk-conf.js放入工程目录
使用
- 在小游启动文件头部引入sdk 和 conf 文件
- 初始化sdk
- 调用sdk内方法
// 在小游启动文件头部引入sdk 和 conf 文件
let sdk = require("./hortor-sdk/sdk.min.js");
let conf = require('./hortor-sdk/sdk-conf.js')
// config 配置项详解
// conf.env = 'Test' // 必填 运行环境:测试Test 上线Prod,上线审核要把环境改为Prod
// conf.gameId = 'sdk-minigame-test' // 必填 游戏ID,去平台后台创建
// conf.gameVersion = '1.0.1' // 可选 当前游戏版本号 当要根据游戏版本使用IP检测时必填
// conf.shareData = { ... } // 可选 默认的分享数据
// conf.getUserInfoBtn = { ... } // 可选 默认的获取用户信息按钮的样式
// config.gameClubBtn = { ... } // 可选 默认游戏圈按钮样式
...
// 初始化sdk
sdk.init(conf);
// 登陆
// sdk.login(...);
...
}
API列表
弱授权登录
sdk.weakLogin(onSuccess, onShowBtn)
强授权登录
sdk.login(onSuccess, onShowBtn)
解密弱授权登录
// 解密登录的用户信息由 sdk 解密 适用于没有后台的单机游戏
sdk.decodeWeakLogin(onSuccess, onShowBtn)
解密强授权登录
// 解密登录的用户信息由 sdk 解密 适用于没有后台的单机游戏
sdk.decodeLogin(onSuccess, onShowBtn)
所有用户登录参数详解
参数 |
|
onSuccess |
成功回调 function(user, error, checkedSession) {} 必填 |
onShowBtn |
展示获取用户信息展示按钮 function() {} 必填 |
// 登录参数 onSuccess
function(user, error, checkedSession) {}
返回参数user |
用户信息 |
gameId |
游戏id |
sign |
签名用于用户信息解密 |
timestamp |
时间戳 |
userInfo |
返回加密用户信息(请使用下面解密算法解密用户资料,注意保护secret,解密过程建议由自己服务器做), 解密登录时这里返回的是用户信息明文 |
code |
加密登录的时候会返回明文的code |
签名:字典序md5(secret=xxxtimestamp=xxxuserInfo=xxx)校验数据
用户信息解密:base64Decode(userInfo),secret 作为key, AES256 PKCS7解密
secret请询问HortorGame对接人获取,注意保存
返回参数userInfo |
解密后用户信息 |
UserId |
用户uniqueId |
UserId2 |
平台id |
UserId3 |
小游戏openId |
UserName |
用户信息 |
UserImg |
头像 |
UserSex |
性别 |
ShareCode |
分享码 |
LoginPlatform |
登录平台 |
IsShowSubscribe |
是否显示关注 |
Province |
省 |
City |
市 |
IsSubscribe |
是否关注 |
解密登录时 userInfo 直接返回明文
返回参数error |
错误信息 |
errCode |
错误码 1000/1001/网络错误/微信Code获取失败 |
errMsg |
错误信息 |
登录成功时 error 为 null
返回参数checkedSession |
session是否过期 |
true |
session过期 |
false |
session没期 |
checkedSession基本没啥用
/*
* 登录参数 onShowBtn 示例代码
* 1. onShowBtn调用的时机是由SDK判断的,游戏只需定义展示的样式
* 2. 游戏控制按钮的展示,以及要一同展示的内容
* 3. 点击后按钮的隐藏由游戏控制,并伴随自定义内容的隐藏
*/
function() {
// 先获取 “获取用户信息按钮” 自行定义按钮类型及样式
let button = sdk.getGetUserInfoBtn({
type: 'text',
text: '获取用户信息',
style: {
left: 10,
top: 76,
width: 200,
height: 40,
lineHeight: 40,
backgroundColor: '#ff0000',
color: '#ffffff',
textAlign: 'center',
fontSize: 16,
borderRadius: 4
}
}, function(data, err, button) {
// 授权成功
if (data) {
// 隐藏 button
button.hide()
}
})
// 然后绑定获取用户信息后回调,用户拒绝和允许都走这个方法,拒绝时返回res
// {
// errMsg: "getUserInfo:fail auth deny"
// }
// button的隐藏由游戏控制,
// button.onTap((res) => {
// 再用这个方法需要自己判断 res
// 隐藏 button
// button.hide()
// })
// 最后展示button,并执行自定义的其他展示逻辑
button.show()
}
配置获取用户信息按钮
登陆按钮样式配置API
sdk.getGetUserInfoBtn(config, callback)
传入参数 |
|
config |
必填,配置按钮类型及样式 |
callback |
必填,按钮点击后回调,根据返回数据判断是否需要隐藏按钮 |
callback |
回调函数 |
data |
获取用户信息成功后返回,主要是用户信息,失败没有返回值 |
err |
用户拒绝授权获取用户信息,或者获取用户信息失败会返回err |
button |
返回按钮便于进行隐藏操作 |
支付接口
sdk.pay(orderData, callback)
传入参数 |
|
orderData |
订单数据,游戏请求平台创建订单后返回的数据 |
callback |
支付结果回调 |
orderData |
参数详细 |
orderId |
订单id |
midashiPayInfo |
米大师订单信息 object |
callback |
返回参数,成功时返回null |
errCode |
错误码 1003/支付回调服务器请求失败 |
errMsg |
错误信息 |
midashiPayInfo |
obejct参数详细 |
buyQuantity |
|
currencyType |
|
env |
|
mode |
|
offerId |
|
platform |
|
zoneId |
|
二维码支付(测试版,不建议使用)
sdk.QRCodePay(orderData, callback)
传入参数 |
|
orderData |
订单数据,游戏请求平台创建订单后返回的数据 |
callback |
支付结果回调 |
orderData |
参数详细 |
orderId |
订单id |
backUrl |
二维码背景图 750 * 1334 px |
callback |
返回参数,成功时返回 null,失败时返回err |
res |
成功返回信息, 为空 |
err |
错误信息 |
err.errCode |
错误码 1001/图片加载失败 |
err.errMsg |
错误信息 |
主动唤起分享
sdk.shareAppMessage(obj)
// 示例
sdk.shareAppMessage({
title: '分享:' + channel,
query: 'channel=' + channel + '&shareConfigId=' + shareConfigId,
success: (resp) => {
console.log('sdk.shareAppMessage:', resp)
}
})
obj |
参数 |
title |
转发标题,不传则默认使用当前小游戏的昵称。 |
imageUrl |
转发显示图片的链接,可以是网络图片路径或本地图片文件路径或相对代码包根目录的图片文件路径。 |
query |
查询字符串,从这条转发消息进入后,可通过 wx.onLaunch() 或 wx.onShow 获取启动参数中的 query。必须是 key1=val1&key2=val2 的格式。 channel、shareConfigId等其他字段均由此方式传入 |
success |
接口调用成功的回调函数 |
fail |
接口调用失败的回调函数 |
complete |
接口调用结束的回调函数(调用成功、失败都会执行) |
用户点击右上角唤起分享
sdk.onShareAppMessage(()=>{
return shareObj
})
如果未注册被动分享回调则使用conf里默认分享模版
shareObj |
方法返回参数 |
title |
转发标题,不传则默认使用当前小游戏的昵称。 |
imageUrl |
转发显示图片的链接,可以是网络图片路径或本地图片文件路径或相对代码包根目录的图片文件路径。 |
query |
查询字符串,从这条转发消息进入后,可通过 wx.onLaunch() 或 wx.onShow 获取启动参数中的 query。必须是 key1=val1&key2=val2 的格式。channel、shareConfigId等其他字段均由此方式传入 |
success |
接口调用成功的回调函数 |
fail |
接口调用失败的回调函数 |
complete |
接口调用结束的回调函数(调用成功、失败都会执行) |
获取分享信息Gid
sdk.getShareInfo({
shareTicket: option.shareTicket,
userId: 'xxxx',
gameId:conf.gameId
}, callBack)
obj |
参数 |
shareTicket |
分享的shareTicket |
userId |
当前用户的userId |
gameId |
当前游戏的gameId |
获取小程序码中的自定义参数
//异步
sdk.getMiniCode((resp) => {
console.log("getQRQuery:", resp)
})
//同步
sdk.getMiniCodeSync()
防沉迷提醒
sdk.checkRest(callback, setting)
// 示例
sdk.checkRest(function() {
console.log('玩家需要休息')
})
传参 |
|
callback |
微信返回玩家需要休息时候的回调,必填 |
setting |
自定义心跳检测配置,选填 |
setting |
传入值详细 |
space |
心跳间隔(单位秒),默认 5*60(5分钟),即每5分钟做一次检测) |
maxGameTime |
最长游戏时间(单位秒),默认 3 * 60 * 60(3小时),即累计游戏三小时后向微信请求是否需要防沉迷 |
IP区域检测(是否是可访问)
如果调用此接口需要添加可访问域名(request):
测试:https://platform-test.xxx.com
正式:https://platform.xxx.com
在 sdk-conf文件中(即 sdk配置参数)配置游戏版本号 gameVersion 用于判断不同版本的游戏是否开启 IP 检测
在游戏后台设置不同版本的游戏检测配置 由 gameVersion 区分
在游戏后台设置不同场景的检测配置,由 interfaceId 区分
sdk.checkIP('interfaceId', callback)
// 示例 ip 后端会根据请求自动判断
sdk.checkIP( (res) => { console.log('checkIP: ', res) });
传参 |
|
ip |
要检测的ip地址,可以为空,已废弃 |
interfaceId |
配置ID 可选 可不传 |
callback |
检测回调,返回res: true 可访问,false 不可访问 |
调起客服
sdk.customerService(obj)
加密登录(1.2.7)
调用加密登录需要引用 sdk.encode.min.js 文件(不需要 sdk.min.js)
不需要加密登录引用 sdk.min.js 文件即可,此时调用加密登录控制台会警告此SDK不支持加密登录
特殊版本sdk,比其他版本大,传参和正常登录一样,与服务器传输的code会加密,返回给游戏的用户信息参数中会有明文code;游戏端要拿code与后端校验
// 加密强授权
sdk.encodeLogin(next, onBtnshow)
// 加密弱授权
sdk.encodeWeakLogin(next, onBtnshow)
获取默认配置(1.3.1开始废弃)
// 获取默认配置信息
sdk.getDefaultSet(interfaceId, function(data) {
console.log(data)
})
传参 |
|
interfaceId |
配置ID |
callback |
获取成功回调 |
callback 返回参数 |
data |
data |
成功返回配置JSON,失败或者为空返回 null |
上报用户托管数据
// 上报用户托管数据到微信云端,用于排行榜展示
sdk.setUserCloudStorage(obj)
游戏圈图标展示
// 展示游戏圈入口图标,只支持设置一个游戏圈图标,
sdk.gameClub.show({
icon: 'green',
style: {
left: 10,
top: 76,
width: 40,
height: 40
},
})
// 隐藏游戏圈图标
sdk.gameClub.close()
// 清除游戏圈图标
sdk.gameClub.clear()
传参 |
opt结构 |
icon |
游戏圈按钮的图标 |
style |
按钮的样式 |
opt.icon |
合法值 |
green |
绿色的图标 |
white |
白色的图标 |
dark |
有黑色圆角背景的白色图标 |
light |
有白色圆角背景的绿色图标 |
opt.style |
结构 |
left |
左上角横坐标 以微信窗口左上角为基准 |
top |
左上角纵坐标 |
width |
宽度 尺寸要转换为微信尺寸 |
height |
高度 |
视频广告接口
成为流量主后才能向微信申请广告权限
微信要求在展示广告之前要判断该广告数据是否可以加载 即调用 sdk.checkVideoAd
// 验证是否广告是否可用
sdk.checkVideoAd(obj)
// 展示视频广告
sdk.showVideoAd(obj)
// 验证是否广告是否可用
sdk.checkVideoAd({ adUnitId, success, error })
传参 |
obj结构 |
adUnitId |
广告ID |
success |
获取广告数据成功 |
error |
获取广告数据失败 |
// 展示视频广告
sdk.showVideoAd({ adUnitId, onShow, onClose, onError })
传参 |
obj结构 |
adUnitId |
广告ID |
onShow |
展示成功回调 |
onClose |
视频关闭回调 |
onError |
视频展示出错回调 |
错误上报
sdk.errorLog(data)
默认传参 |
注意自定义参数不要命名重复 |
gameId |
游戏id |
gameVersion |
游戏版本 |
sysInfo |
当前系统信息,微信sdk版本,系统,sdk版本等 |
uniqueId |
唯一Id,登陆后有值,弱授权也有 |
userId |
用户Id,登陆后有值,弱授权也有 |
建议传参 |
建议要带的字段 |
msg |
会默认记为graylog 的message |
logTp |
log类型 |
xx |
其他字段可以随意定义,不与默认字段重复即可 |