# 微信小游戏SDK(unity方案) 接入手册

# 文档修订记录


文档版本 文档更新日期 文档更新内容
1.0.0.0 2024-04-25 初版
1.0.0.1 2024-09-13 增加买量打点相关支持

# 1. 前言


本文用于指导小游戏(unity方案)接入SDK,文中包含小游戏SDK的接入说明及接口介绍。

# 2. 接入准备


  1. 必须要先配置好微信小游戏开发环境以及用于微信小游戏开发的微信授权账号 点击进入 (opens new window)
  2. 微信小游戏通讯域名接入(目前需要接入下列域名) 点击进入 (opens new window)
  3. 下载 SDK对接资源 点我下载 (opens new window)

# 3. 项目接入


# 3.1 项目引入

  1. 将对接资源中的Plugins目录下的GSDKBridge目录(包含 GSDKBridge.csGSDKBridgeCallback.csGSDKBridge.jslib 这3个文件),拷贝到Unity工程的Assets/Plugins目录下。

  2. 下载json解析插件Newtonsoft Jsonpackage manager可直接下载该插件,git url:com.unity.nuget.newtonsoft-json

  3. 将对接资源中的wechat-default目录下的gsdk_unity目录(包含index.js这个文件)拷贝到Unity工程的Assets/WX-WASM-SDK-V2/Runtime/wechat-default目录下。

  4. 打开Untiy工程中的Assets/WX-WASM-SDK-V2/Runtime/wechat-default/game.js文件,在文件中添加如下代码

    import './gsdk_unity/index';
    
    1

接口回调数据格式

属性名 类型 说明
code int 状态码,根据不同状态进行处理和错误原因排查
msg string 错误提示信息
data object 响应数据

以下接口返回响应如无特别说明皆为data内容

# 3.2 接口入参均采用JSON字符串形式

具体对接代码可以参考对接资源中unity demo的范例Demo.cs

# 3.3 接口

# 3.3.1 初始化
  • 方法

    public void Init(string json)
    
    1
  • 入参

    属性名 类型 必填 说明
    appId string 申请分配的appId
  • 响应

    无回调响应,开发者无需关心初始化结果

  • 回调方法

  • 示例

    Dictionary<string, object> inParams = new Dictionary<string, object>
            {
                { "appId", 791000741}
            };
    GSDKBridge.Instance.Init(JsonConvert.SerializeObject(inParams));
    
    1
    2
    3
    4
    5
# 3.3.2 登录
  • 方法

    public void Login(string json)
    
    1
  • 入参

  • 响应

    属性名 类型 说明
    ticket string 游戏登录票据,设置为5分钟
    token string 盛趣小游戏sdk登录态
    userid string 盛趣appmid
    openid string 微信openid
    unionid string 微信unionid
  • 回调方法

    GSDKBridgeCallback.LoginCallback
    
    1
  • 示例

    // 登录
    GSDKBridge.Instance.Login("");
    // 回调监听
    GSDKBridgeCallback.LoginCallback =  (loginInfo) =>
            {
            };
    
    1
    2
    3
    4
    5
    6
# 3.3.3 获取票据
  • 方法

    public void GetTicket(string json)
    
    1
  • 入参

  • 响应

    属性名 类型 说明
    ticket string 游戏登录票据,设置为5分钟
  • 回调方法

    GSDKBridgeCallback.GetTicketCallback
    
    1
  • 示例

    // 获取票据
    GSDKBridge.Instance.GetTicket("");
    // 回调监听
    GSDKBridgeCallback.GetTicketCallback = (ticketInfo) =>
            {
            };
    
    1
    2
    3
    4
    5
    6
# 3.3.4 支付
  • 方法

     public void Pay(string json)
    
    1
  • 入参

    属性名 类型 必填 说明
    areaId string 区ID
    productId string 商品ID
    orderId string 订单ID
    extend string 订单扩展信息,会在服务端发货时原样返回
    groupId string 组ID,按需传递
  • 响应

    属性名 类型 说明
    payType number 支付方式, 1: 原生支付
    orderId string 盛趣订单号
  • 回调方法

    GSDKBridgeCallback.PayCallback
    
    1
  • 示例

    // 支付
    Dictionary<string, object> inParams = new Dictionary<string, object>
            {
                { "areaId", 1},
                { "productId", "test.100"},
                { "orderId", 1},
                { "extend", 1},
                { "groupId", 1},
            };
    GSDKBridge.Instance.Pay(JsonConvert.SerializeObject(inParams));
    // 回调监听
    GSDKBridgeCallback.PayCallback = (payInfo) =>
            {
            };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
# 3.3.5 行为上报
  • 方法

     public void ActionReport(string json)
    
    1
  • 入参

    属性名 类型 必填 说明
    action string 上报行为(目前支持role_create(角色创建),role_login(角色登录),role_level(角色升级)三种)
    actionData JSON 上报数据

    actionData释义

    参数名称 参数说明 是否必须 数据类型
    roleId 角色ID true String
    roleName 角色名称 true String
    roleLevel 角色等级 true Number
    zoneId 区服ID true String
    zoneName 区服名称 true String
    roleCtime 角色创建时间(时间戳) true Number
    shiftLevel 转身等级 true Number
    fight 战力 true Number
  • 响应

    属性名 类型 说明
  • 回调方法

    GSDKBridgeCallback.ActionReportCallback
    
    1
  • 示例

    // 行为上报
    Dictionary<string, object> actionData = new Dictionary<string, object>
            {
                { "ucid", 100},
                { "roleId", "1000"},
                { "roleName", "测试角色名"},
                { "roleLevel", 1},
                { "zoneId", "1"},
                { "zoneName", "测试1区"},
                { "roleCtime", 1725431204651},
                { "shiftLevel", 1},
                { "fight", 100},
            };
    Dictionary<string, object> inParams = new Dictionary<string, object>
            {
                { "action", "role_login"},
                { "actionData", actionData}
            };
    GSDKBridge.Instance.ActionReport(JsonConvert.SerializeObject(inParams));
    // 回调监听
    GSDKBridgeCallback.ActionReportCallback = (actionInfo) =>
            {
            };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

# 3.4 错误码

3.4.1 登录错误码:

错误码 说明
-10403020 db is error
-10403021 get wei xin service error
-10403019 json parse error
-10403013 The system is busy
-10403014 The code is invaild
-10403015 Frequency limitation
-10403016 High-risk level user
-10403022 get lsc4gauth service error
-10403005 Request param error

3.4.2 获取票据错误码:

错误码 说明
-10403005 Request param error
-10403023 token has expired

# 4. FAQ

  • 切换微信账号,提示权限相关错误

    确认微信账号是否开启了相关权限,并重启微信开发者工具

  • 回调数据如何解析

    为了方便游戏扩展参数,SDK没有固定数据模型,开发者拿到data中的dictionary,在转成想要的数据模型

  • 此SDK是对GHOME JS SDK的一层包装转发,更多功能请查看GHOME JS SDK (opens new window)

Last Updated: 9/13/2024, 8:56:15 AM