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 其他字段可以随意定义,不与默认字段重复即可
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容

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