2018-07-16 h5 sdk

小游戏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放入工程目录

使用

  1. 在小游启动文件头部引入sdk 和 conf 文件
  2. 初始化sdk
  3. 调用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
callBack 参数
cb 接口返回值

获取小程序码中的自定义参数

//异步
sdk.getMiniCode((resp) => {
  console.log("getQRQuery:", resp)
})
//同步
sdk.getMiniCodeSync()
resp 返回值
resp 字符串,自定义参数

防沉迷提醒


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)

传参
obj 查看微信API

加密登录(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)

传参
obj 查看微信API

游戏圈图标展示


// 展示游戏圈入口图标,只支持设置一个游戏圈图标,
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 其他字段可以随意定义,不与默认字段重复即可
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,209评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,103评论 19 139
  • 风里有云,云中有画。 空有皮囊奈何萧消!
    阿空啊阅读 269评论 0 0
  • 关键词:健康/家人/亲子教育/自我提升 目标:健康、亲子教育、自我提升 1、健康:颈椎操已做,半小时 2、亲子教育...
    勇敢的每一天阅读 171评论 0 0
  • 为什么同性恋会遭到歧视?为什么膏粱子弟只能娶大家闺秀?为什么不同世界的人不能相爱? 此时,我们不得不思考一个问题:...
    _Spectator阅读 531评论 0 0

友情链接更多精彩内容