微信小游戏H5 SDK 接入说明

本文档将介绍 小游戏SDK 的接入流程以及相关接口的使用方法。

SDK 提供了以下接口:

  1. 初始化接口 Init
  2. 登录接口 Login
  3. 设置角色接口 SetRoleInfo
  4. 支付接口 Pay
  5. 分享接口 Share
  6. 日志上报接口 Log
  7. 获取平台ID GetServiceId
  8. 获取发行区域 GetLocaleId
  9. 获取客户端IP GetClientIP
  10. 获取ServiceCode GetServiceCode
  11. 拉起客服 CustomerService
  12. 打开公告 OpenNotice
  13. 打开调查问卷 OpenQuestionnaire
  14. 被动分享 PassiveShare
  15. 礼包码兑换 GiftCodeExchange
  16. 打开协议 OpenPrivacy
  17. 获取客户端平台 GetDevicePlatform

接入流程

一、下载 SDK

微信小游戏:

安装微信Unity工具包

安装微信Unity工具包后,在菜单栏中会多出‘微信小游戏’菜单,如需转化小游戏

1.请添加平台WebGL
2.准备微信appID
3.提示配置node的bin目录, 配置路径: Assets/WX-WASM-SDK/Editor/MiniGameConfig.asset, 在文件中找到配置项CustomNodePath 指定本机node的bin目录
例: CustomNodePath: /Users/wangliang/.nvm/versions/node/v14.19.1/bin

注意:使用稳定且长期支持的node版本

安装平台小游戏SDK

1.安装MINIGAME SDK Unity工具包 MINIGAME_SDK.unitypackage

MINIGAME_SDK.unitypackage 目录结构

  1. Assets
  2. MINIGAME_SDK
  3. Models.cs
  4. SDK.cs
  5. SDKBase.cs
  6. SDKBridgeManager.cs
  7. SDKManager.cs
  8. Plugins
  9. SDK_BRIDGE_CALL_JS.jslib
  10. WX-WASM-SDK
  11. wechat-default
  12. minigame-sdk
  13. index.js

2.修改微信SDK文件 WX-WASM-SDK/wechat-default/game.js 添加内容如下

  1. // 在文件头部添加
  2. import './minigame-sdk/index';
  3. // ...

3.复制GSC配置文件config.json(该文件由技术支持提供)到打包后的minigame-sdk目录中或者放到源工程的WX-WASM-SDK/wechat-default/minigame-sdk目录中

4.因微信小游戏在未发布前无法获取到微信小游戏版本, 现支持研发在开发/体验阶段手动配置小游戏版本, 配置方法如下(如不进行版本配置默认小游戏版本为 0.0.0)

在打包后的minigame-sdk目录下添加gameversion.json 文件内容如下(可选配置)

  1. {
  2. "minigameVersion": "2.0.0"
  3. }

Patch更新说明: 解压后将index.js文件覆盖到游戏打包后的minigame-sdk目录下来完成Patch更新, 可节省Unity打包时间. 需要注意的是每次Unity打包后还需要进行替换

二、接口API

初始化 SDK

在应用程序中,调用Init接口初始化 SDK。

  1. using MINIGAME_SDK;
  2. SDK.Init(new InitOption() {
  3. /// 游戏版本号
  4. version = "1.0.0",
  5. // 游戏资源版本号
  6. resVersion = '1.0.0',
  7. share = new Share() {
  8. title = '分享标题',
  9. imageUrl = '分享图片URL',
  10. imageUrlId = '分享图片在微信后台的编码'
  11. },
  12. success = () => {
  13. // 初始化成功
  14. },
  15. fail = (error) => {
  16. // 初始化失败
  17. }
  18. });
参数名 类型 是否必填 描述
version string 游戏版本号
resVersion string 资源版本号
share Share 分享配置
success Action 初始化成功回调
fail Action 初始化失败回调

Share 说明

参数名 类型 是否必填 描述
title string 分享标题
imageUrl string 分享图片地址
imageUrlId string 微信小游戏平台审核通过的图片 ID,详见 转发 微信开放文档

登录

在需要登录的地方,调用Login接口以获取用户登录状态。注意调用之前需要初始化成功。

  1. using MINIGAME_SDK;
  2. SDK.Login(new LoginOption() {
  3. success = (user) => {
  4. // ...
  5. },
  6. fail = (error) => {
  7. // ...
  8. }
  9. });
参数名 类型 是否必填 描述
success Action 登录成功回调, 返回用户信息
fail Action 登录失败回调

User 说明

属性名 类型 是否必填 描述
userId string 平台用户的唯一标识
userName string 用户名
token string token
logintype string 登录类型
userServiceCode string 设备当前serviceCode数据,用于服务端打点使用
returnJson string 完整用户信息 json字符串

支付

在需要支付的地方,调用Pay接口以发起支付请求。注意调用之前需要初始化、登录、角色 注册/登录 信息上报。

  1. using MINIGAME_SDK;
  2. SDK.Pay(new PayOption() {
  3. // 商品ID
  4. goodsId = "goodsId",
  5. // 商品名称
  6. goodsName = "goodsName",
  7. // 商品描述
  8. goodsDesc = "goodsDesc",
  9. // 商品价格,单位为分
  10. price = "goodsPrice",
  11. // 购买的虚拟货币名称,比如 钻石,金币,宝石 等
  12. currency = "钻石",
  13. // 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器(最
  14. 大支持150字符)
  15. extension = "extension",
  16. // 商品数量
  17. quantity = 2,
  18. // 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)
  19. currencyType = "1",
  20. success: (order) => {
  21. // ...
  22. },
  23. fail = (error) => {
  24. // ...
  25. }
  26. });
参数名 类型 是否必填 描述
goodsId string 商品ID
goodsName string 商品名称
goodsDesc string 商品描述
price string 商品价格,单位为分
currency string 购买的虚拟货币名称,比如 钻石,金币,宝石 等
extension string 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器(最大支持150字符)
quantity long 商品数量
currencyType string 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)
success Action 成功回调, 返回订单信息(只是下单成功)
fail Action 失败回调

Order 说明

属性名 类型 是否必填 描述
goodsId string 商品ID
orderId string 定单ID

分享

在需要分享的地方,调用Share接口以发起分享请求。注意调用之前需要初始化成功。

  1. using MINIGAME_SDK;
  2. SDK.Share(new ShareOption() {
  3. title = "分享标题",
  4. imageUrl = "https://inews.gtimg.com/newsapp_bt/0/12171811596_909/0",
  5. success = () => {
  6. // ...
  7. }
  8. });
参数名 类型 是否必填 描述
title string 分享标题
imageUrl string 分享图片地址
imageUrlId string 微信小游戏平台审核通过的图片 ID,详见_ 转发 微信开放文档
path string 微信小游戏平台独立分包路径。详见_ 小游戏独立分包
query string 查询字符串,从这条转发消息进入后,可通过 wx.getLaunchOptionsSync() 或 wx.onShow() 获取启动参数中的 query。必须是 key1=val1&key2=val2 的格式。
toCurrentGroup string 是否转发到当前群。该参数只对从群工具栏打开的场景下生效,默认转发到当前群,填入false时可转发到其他会话。
success Action 成功回调 (微信小程序分享后直接回调, 无法监听分享是否发送)

设置角色

在角色注册、角色登录、角色信息变更、角色注销时, 调用SetRoleInfo接口上报角色信息。注意调用之前需要初始化、登录成功。

  1. using MINIGAME_SDK;
  2. SDK.SetRoleInfo(new SetRoleInfoOption() {
  3. sendtype = RoleSendtype.register,
  4. serverName = "serverName",
  5. serverId = "serverId",
  6. roleName = "roleName",
  7. roleId = "roleId",
  8. roleLevel = "1",
  9. vipLevel = "v2",
  10. // 角色创建时间(服务器采集)时间类型:long 精度:秒 (即10位数)
  11. roleCreateTime = 1680598796,
  12. // 角色等级变化时间(服务器采集)时间类型:long 精度:秒 (即10位数)
  13. roleLevelMTime = 1680598796,
  14. success = () => {
  15. }
  16. });
参数名 类型 是否必填 描述
sendtype RoleSendtype 角色上报类型 注册/登录/变更/注销
roleId string 角色ID 当为注册/登录时 必填
roleName string 角色名 当为注册/登录时 必填
serverId string 游戏服ID 当为注册/登录时 必填
serverName string 游戏服名称 当为注册/登录时 必填
roleLevel string 角色等级 当为注册/登录时 必填
vipLevel string VIP等级 当为注册/登录时 必填
roleCreateTime long 角色创建时间(服务器采集)时间类型:long 精度:秒 (即10位数)
roleLevelMTime long 角色等级变化时间(服务器采集)时间类型:long 精度:秒 (即10位数)
success Action 角色上报成功回调

RoleSendtype 说明: RoleSendtype.register、RoleSendtype.login、RoleSendtype.change、RoleSendtype.logout

注: 当sendtype为RoleSendtype.logout时 其它属性均可不传

日志上报

在需要上报日志的地方,调用Log接口以上报日志。注意调用之前需要初始化、登录成功、设置角色成功。

  1. using MINIGAME_SDK;
  2. SDK.Log(new MINIGAME_SDK.LogOption() {
  3. eventId = "fight.mineer",
  4. eventName = "战斗.狗头人矿工",
  5. classifiedId = "Dungeons",
  6. classifiedName = "副本",
  7. detail = "begin"
  8. });
参数名 类型 是否必填 描述
eventId string 事件标识,英文或数字
eventName string 事件名称,最好传中文
classifiedId string 分类ID
classifiedName string 分类名称
detail string 相关信息,全为英文
success Action 日志上报成功回调

获取平台ID

在需要获取平台ID的地方,调用GetServiceId接口以获取。(游戏联运渠道ID,游戏可根据此ID区分各发行渠道)。注意调用之前需要初始化成功。

  1. using MINIGAME_SDK;
  2. SDK.GetServiceId(new Callbacks<string>() {
  3. success = (serviceId) => {
  4. // ...
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 获取serviceId成功回调

获取发行区域获取发行区域

在需要获取发行区域的地方,调用GetLocaleId接口以获取。注意调用之前需要初始化成功。

  1. using MINIGAME_SDK;
  2. SDK.GetLocaleId(new Callbacks<string>() {
  3. success = (localeId) => {
  4. // ...
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 获取localeId成功回调

获取客户端IP

在需要获取客户端IP的地方,调用GetClientIP接口以获取。

  1. using MINIGAME_SDK;
  2. SDK.GetClientIP(new Callbacks<string>() {
  3. success = (ip) => {
  4. // ...
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 获取clientIP成功回调

获取ServiceCode

在需要获取ServiceCode的地方,调用GetServiceCode接口以获取。注意调用之前需要初始化、登录成功。获取服务器端 发送日志使用的ServiceCode 提供给BI日志用。

  1. using MINIGAME_SDK;
  2. SDK.GetServiceCode(new Callbacks<string>() {
  3. success = (serviceCode) => {
  4. // ...
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 获取serviceCode成功回调

客服

在需要拉起客服的地方,调用CustomerServer接口以发起拉起客服请求。注意调用之前需要初始化成功。

  1. using MINIGAME_SDK;
  2. SDK.CustomerServer(new Callbacks() {
  3. success = () => {
  4. // ...
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 拉起客服成功回调

打开公告

在需要打开公告的地方, 调用OpenNotice接口以发起打开公告请求.

  1. using MINIGAME_SDK;
  2. SDK.OpenNotice(new Callbacks() {
  3. success = () => {
  4. /// 成功打开公告
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 打开公告成功回调

打开调查问卷

在需要打开调查问卷的地方, 调用OpenQuestionnaire接口以发起打开调查问卷请求.

  1. using MINIGAME_SDK;
  2. var customParams = new Dictionary
  3. customParams.Add("key1", "value1");
  4. customParams.Add("key2", "value2");
  5. SDK.OpenQuestionnaire(new OpenQuestionnaireOption() {
  6. questionId = "745",
  7. customParams = customParams,
  8. success = () => {
  9. /// 成功打开问卷
  10. }
  11. });
参数名 类型 是否必填 描述
success Action 打开公告成功回调

被动分享

调用PassiveShare接口来监听并修改用户点击平台提供的分享内容, 每一次的接口调用将取消上一次的监听和修改

  1. using MINIGAME_SDK;
  2. SDK.PassiveShare((callback) => {
  3. // 在此可监听用户点击了平台提供的分享 通过shareType可以区分是好友分享 还
  4. 是朋友圈分享
  5. Debug.Log("分享类型" + callback.shareType);
  6. callback.SetShare(new ShareOption() {
  7. title = "转发标题"
  8. });
  9. });

参数类型: Action

PassiveShareCallback 说明

参数名 类型 是否必填 描述
shareType ShareType 分享类型: 好友/群、朋友圈
SetShare Action 设置分享内容

礼包码兑换

调用GiftCodeExchange接口来进行礼包码兑换

  1. using MINIGAME_SDK;
  2. SDK.GiftCodeExchange(new ShareOption() {
  3. code = "xxxx",
  4. url = "xxxx",
  5. extendParams = "xxx",
  6. success = (result) => {
  7. }
  8. });
参数名 类型 是否必填 描述
giftCode string 需要兑换的礼包码
extendParams string 游戏透传参数,通知发货时会原样返回。
success Action 成功回调
url string 兑换成功后,计费中心会通知此地址发货。(游戏服发货地址)

GiftCodeExchangeResult 说明

参数名 类型 是否必填 描述
giftCode string 需要兑换的礼包码
extendParams string 游戏透传参数

打开协议

调用OpenPrivacy接口来打开协议

  1. using MINIGAME_SDK;
  2. SDK.OpenPrivacy(new Callbacks() {
  3. success = () => {
  4. }
  5. });
参数名 类型 是否必填 描述
success Action 成功打开协议页面

获取客户端平台

调用GetDevicePlatform接口来获取客户端平台

  1. using MINIGAME_SDK;
  2. SDK.GetDevicePlatform(new Callbacks<string>() {
  3. success = (platform) => {
  4. // ios android mac windows devtools
  5. }
  6. });
参数名 类型 是否必填 描述
success Action 返回客户端平台, 有下面五个平台 ios, android, mac, windows, devtools

三、Error说明

参数名 类型 是否必填 描述
code number 错误码
platformCode string 平台细分的错误码(SDK, SDK服务端、微信)
message string 错误描述

1.code错误码规则说明:

  1. 固定为4位数字

  2. 左数2位数字表示接口类型(11: 初始化, 12: 登录, 13: 支付, 14: 分享, 15: 日志上报, 16: 角色上报, 17:获取平台ID, 18:获取区域ID, 19:获取IP, 20: 获取ServiceCode, 21: 客服)

  3. 左数第3位数字表示 错误来源(0: SDK, 1: 服务端, 2: 平台(微信), 其它预留)

  4. 最后一位预留

2.状态码:

类型 code platformCode message 备注
初始化 1100 0 初始化配置文件加载异常
初始化 1100 1 参数异常(参数version不能为空)
初始化 1101 http状态错误码 网络异常
初始化 1120 微信平台错误码 三方平台异常 平台请求错误
初始化 1110 服务端错误码 服务端异常
登录 1200 2 未初始化异常
登录 1201 http状态错误码 网络异常
登录 1200 微信平台错误码 三方平台异常 平台请求错误/平台获取用户code失败
登录 1210 服务端错误码 服务端异常
支付 1300 2 未初始化异常
支付 1300 3 未登录异常
支付 1300 4 未设置角色异常
支付 1300 5 用户取消了支付
支付 1301 http状态错误码 网络异常
支付 1320 微信平台错误码 三方平台异常 平台请求错误/拉起支付失败
支付 1310 服务端错误码 服务端异常
分享 1400 2 未初始化异常
分享 1420 微信平台错误码 三方平台异常
设置角色 1500 1 参数异常(_参数sendType不为logout时其它参数不能为空)
设置角色 1500 2 未初始化异常
设置角色 1500 3 未登录异常
日志上报 1600 1 参数异常(参数eventId, eventName, classifiedId, classifiedName不能为空 )
日志上报 1600 2 未初始化异常
日志上报 1600 3 未登录异常
日志上报 1600 4 未设置角色异常
日志上报 1601 http状态错误码 网络异常
日志上报_ 1620 微信平台错误码 三方平台异常 平台请求错误
日志上报_ 1610 服务端错误码 服务端异常
获取平台ID 1700 2 未初始化异常
获取区域ID 1800 2 未初始化异常
获取IP 1920 微信平台错误码 三方平台异常 获取IP失败
获取ServiceCode 2000 2 未初始化异常
获取ServiceCode 2000 3 未登录异常
客服 2100 2 未初始化异常
客服 2100 3 用户取消了拉起客服
客服 2120 微信平台错误码 三方平台异常
礼包码兑换 2510 21187 服务端异常 礼包码不存在或不可用
公告

四、Debug

在开发阶段可以开启debug模式, 开启方法在配置文件config.json中添加 “debug”: true

  1. {
  2. "debug": true
  3. }

开启后每次的接口调用都会以确认框的形式打印接口返回的成功信息或失败信息, 方便调试接口

  • 注: 发布到线上时需要把debug改为false或去掉debug属性