跳到主要内容

微信小游戏对接

版本

当前版本 1.3.1 历史版本

1.接入前准备

整体结构

红色部分由SDK技术实现,蓝色部分由游戏技术实现 SDK会提供两部分资源文件,一是.unitypackage 结尾的Unity插件,需要放到unity工程里,二是几个.js结尾的sdk文件,需要放到微信小游戏的工程里。说明在2.1 获取SDK 对接原理

接入必备信息

对接参数信息

参数类型提供者使用者描述用途
gameIdintSDK技术游戏技术SDK游戏ID调用SDK【初始化】方法时传入
ssAppIdstring运营游戏技术、SDK技术数数-项目管理-App_ID调用SDK初始化方法时传入
ylyqAccessTokenstring运营游戏技术、SDK技术引力引擎-应用管理-Access Token调用SDK初始化方法时传入
adUnitIdstring运营游戏技术微信-流量主-广告管理-广告位ID调用SDK【激励广告创建并展示】方法时传入
productIdstring运营游戏技术、SDK技术微信-虚拟支付-基本配置-直购配置-道具id调用SDK【支付】方法时传入
tencentSdkDataobject投放游戏技术腾讯后台调用SDK【初始化】方法时传入
tencentSdkData.user_action_set_idint投放游戏技术腾讯后台腾讯数据源ID
tencentSdkData.secret_keystring投放游戏技术腾讯后台腾讯加密key
tencentSdkData.appidstring投放游戏技术腾讯后台微信小游戏APPID
tencentSdkData.silentPeriod数字投放游戏技术腾讯后台沉默天数,即玩家重新登录距离上次登录的天数

功能配置参数

  • 公共部分 需申请微信小游戏

    参数操作者使用者描述用途
    AppID((小程序ID))运营SDK技术微信-开发管理-开发设置-AppID登录、支付等验证
    AppSecret(小程序密钥)运营SDK技术微信-开发管理-开发设置-AppSecret登录、支付等验证
    设置域名白名单运营SDK技术、游戏技术微信-开发管理-开发设置-服务器域名-request合法域名小游戏调用的域名都要设置,游戏域名请问游戏技术(包括下载域名要放downloadFile合法域名),SDK需设置:
    https://pre-minigamesdk-api.miaorui1.com
    https://minigamesdk-api.miaorui1.com
    https://backend.gravity-engine.com
    https://sskj-api.m-co.cn
  • 支付功能 需开通微信虚拟支付、微信公众号支付

    参数提供者使用者描述用途
    OfferID运营SDK技术微信-虚拟支付-基本配置-基础配置-OfferID支付验证用
    现网AppKey运营SDK技术微信-虚拟支付-基本配置-基础配置-现网AppKey支付验证用
    URL(服务器地址)运营SDK技术微信-虚拟支付-基本配置-基础配置-发货推送配置支付成功后微信通知SDK地址
    https://minigamesdk-api.miaorui1.com/order/notify
    Token(令牌)运营SDK技术微信-虚拟支付-基本配置-基础配置-发货推送配置支付成功后微信通知SDK校验令牌
    EncodingAESKey(消息加密密钥)运营SDK技术微信-虚拟支付-基本配置-基础配置-发货推送配置支付成功后微信通知SDK校验密钥
    消息加密方式运营SDK技术微信-虚拟支付-基本配置-基础配置-发货推送配置支付成功后微信通知SDK加密方式,选明文模式,数据格式JSON
    游戏分区ID运营SDK技术微信-虚拟支付-基本配置-分区配置-游戏分区ID支付验证用,目前只支持配一个
    道具发货推送运营SDK技术微信-虚拟支付-基本配置-直购配置-道具发货推送支付成功后微信通知SDK开关,需开启推送
    道具运营SDK技术、游戏技术微信-虚拟支付-基本配置-直购配置-道具配置-添加道具游戏内道具需要在这里配置并发布到线上,然后把道具id、道具名称、道具价格提供给技术
    notify_url游戏技术SDK技术选填,游戏发货回调地址,客户端SDK在创单时也支持传,如果客户端传了就会通知客户端上报的,否则会通知notify_url
    signKeySDK技术游戏技术必填,游戏发货回调验证签名的密钥
  • 激励视频 需开通流量主功能

    参数提供者使用者描述用途
    广告位 ID运营游戏技术微信-流量主-广告管理-激励视频-广告位 ID拉起激励视频需要
  • 数数数据上报

    参数提供者使用者描述用途
    ssAppId(ta_app_id)运营SDK技术、游戏技术数数-项目管理-App_ID数据上报数数
  • 引力引擎数据上报

    参数提供者使用者描述用途
    gravity_app_id运营SDK技术引力引擎-应用管理-应用名称-APPID数字,数据上报引力引擎
    gravity_app_key运营SDK技术引力引擎-应用管理-App Key数据上报引力引擎
    ylyqAccessToken(gravity_access_token)运营SDK技术、游戏技术引力引擎-应用管理-Access Token数据上报引力引擎
    微信自动刷新TokenSDK技术SDK技术引力引擎-设置-应用管理-配置-微信开发者填写token刷行地址(https://minigamesdk-api.miaorui1.com/wxtoken/100001/SDK游戏id),开启,选择“引力调用客户接口刷新”
    自定义事件(不带$符号)运营SDK技术引力引擎-设置-元数据-元事件自定义事件(不带$符号)需要先创建才能上报,如果事件里有属性需要关联属性,属性在【事件属性】里创建
  • 客服功能 开通客服功能,添加客服人员。配置消息推送

    参数提供者使用者描述用途
    URL(服务器地址)运营SDK技术微信-开发管理-开发设置-消息推送用于自动回复客服消息,比如充值链接。填写
    https://minigamesdk-api.miaorui1.com/wechat/receive
    Token(令牌)运营SDK技术微信-开发管理-开发设置-消息推送用于自动回复客服消息,比如充值链接。
    EncodingAESKey(消息加密密钥)运营SDK技术微信-开发管理-开发设置-消息推送用于自动回复客服消息,比如充值链接。
    消息加密方式运营SDK技术微信-开发管理-开发设置-消息推送用于自动回复客服消息,比如充值链接。选择“明文模式”
    数据格式运营SDK技术微信-开发管理-开发设置-消息推送用于自动回复客服消息,比如充值链接。选择“JSON”

SDK名词

参数类型参数描述
sdkUserIdintSDK 用户唯一ID
platformUserIdstring微信小游戏的唯一ID,open_id
clientIdstringSDK生成的设备ID,每次清除缓存后会变

2.SDK接入

集成

集成步骤和示例

2.1 获取SDK

. Unity插件: MiaoJuWxSDK.unitypackage 插件

. Js SDK: 微信小游戏SDK

2.2 配置SDK

1) 添加全局宏参数: MIAOJU_MINIWX【在微信调试工具或微信中运行时 添加】

宏定义

2) 解压MiaojuWxSdk.zip,将目录中的所有文件复制到根目录,与game.js同级,向game.js文件添加代码[game.js中引入miaoju sdk的js 并设置全局设置]

    import miaoju_sdk from 'miaoju_wx_sdk';

GameGlobal.MiaojuSdk = miaoju_sdk;

js引入

3)

2.3 SDK回调

公共返回字段

参数类型参数描述
codeint1000成功,其他失败
messagestring错误信息
dataobject/数据,看具体接口

初始化

提示

说明:必接功能,其他接口必须在初始化功能回调之后

数据流图

代码示例

object initParam = new Dictionary<string, object> {
{"gameId",1001},
{"gameVersion","v1.0.0"},
{"ssAppId", "822bb3ff1009407ebd76ed1787717c54"},
{"ylyqAccessToken", "IlmBjXF4dngy7c3amghAic6utl1EbHdy"},
{"envConfig", "production"},
{"tencentSdkData",new Dictionary<string, object>{
{ "user_action_set_id",1207341440 },//腾讯数据源ID,问投放人员
{ "secret_key","3e94210352fc5d69c388da836a2fa168"},//腾讯加密key,问投放人员
{ "appid","wx8f8a79d64b59d5f2"},//微信小游戏APPID
{ "silentPeriod",7}//沉默天数,即玩家重新登录距离上次登录的天数,问投放人员
}}
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.Init(initParam);//无需处理初始化回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.Init(initParam, InitCallBack);//需要处理初始化回调


void InitCallBack(string callback)
{
// 处理初始化回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
gameIdintSDK游戏ID,SDK技术提供
gameVersionint游戏版本号
ssAppIdstring数数应用App ID,运营提供
ylyqAccessTokenstring引力引擎应用Access Token,运营提供
envConfigstring环境配置,production正式,test测试 默认production

sdk回调返回值 [data]

 {
"userInfo": {//用户信息
"platformUserId": "微信open_id",//(string)微信openId
"sdkUserId": "SDK用户id",//(string)SDK用户id
"clientId":"客户端SDK生成的唯一标识,小游戏缓存清除后会变",//(string)客户端SDK生成的唯一标识
"isNew": 1 // (int)是否新用户 0非新用户,1新用户
},
"launchOptions": {//启动参数
"scene":1001,//场景值
"query":{"from":"youusername","to":"wx"},//启动参数
"referrerInfo":{},//来源信息
//小游戏启动参数,见微信文档https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html
},
"systemInfo": {//系统信息
"brand":"devtools",//品牌
"model":"iPhone X",//型号
"system":"iOS 10.0.1",//系统
"platform":"devtools",//平台
"memorySize":"2048",//内存
"screenWidth":"375",//屏幕宽度
"screenHeight":"812",//屏幕高度
"SDKVersion":"3.2.5",//微信SDK版本
"language":"zh_CN",//语言
"version":"8.0.5"//微信版本
}
}

获取启动参数

数据流图

代码示例


string launchInfo = MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetUserLaunchInfo(); //用户设备及启动参数

参数说明

sdk回调返回值 [data]

{
"launchOptions": {//启动参数
"scene":1001,//场景值
"query":{"from":"youusername","to":"wx"},//启动参数
"referrerInfo":{},//来源信息
//小游戏启动参数,见微信文档https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html
},
"systemInfo": {//系统信息
"brand":"devtools",//品牌
"model":"iPhone X",//型号
"system":"iOS 10.0.1",//系统
"platform":"devtools",//平台
"memorySize":"2048",//内存
"screenWidth":"375",//屏幕宽度
"screenHeight":"812",//屏幕高度
"SDKVersion":"3.2.5",//微信SDK版本
"language":"zh_CN",//语言
"version":"8.0.5"//微信版本
}
}

支付

数据流图

代码示例

object payDataDeFault = new Dictionary<string, object> {
{"productId","mj_unity_sdk_test"},
{"gameOrderId", "10000123456"},
{"customData",""},
{"productName", "MJSDK道具"},
{"serverId","4"},
{"serverName", "5"},
{"roleId", "6"},
{"roleName", "7"},
{"roleLevel", "8"},
{"buyQuantity", 1},
{"goodsPrice",100},
{"payNoticeUrl", ""},
{"conversationParams",new Dictionary<string, object>{
{ "showMessageCard",true },
{ "sendMessageTitle","我是一个小程序"},
}},
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.Pay(payDataDeFault);//无需回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.Pay(payDataDeFault, PayCallBack);//需要处理回调


void PayCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
productIdstring商品ID,跟微信虚拟支付配置的道具ID一致
productNamestring商品名称
gameOrderIdstring游戏订单ID
serverIdstring服ID
serverNamestring服名称
roleIdstring角色ID
roleNamestring角色名
roleLevelstring角色等级
buyQuantityint购买数量
goodsPriceint单位分
customDatastring自定义参数
payNoticeUrlstring支付回调服务端地址,传了就会回调这个地址,不传则回调系统配置的
conversationParamsDictionary<string, object>ios客服会话参数配置,同openCustomerService接口参数 https://developers.weixin.qq.com/minigame/dev/api/open-api/customer-message/wx.openCustomerServiceConversation.html

sdk回调返回值 [data]

{
"sdkOrderId":""//SDK订单ID 如果创单失败就不返回 data={}
}

激励广告创建并展示

数据流图

代码示例

object rewardVideoAdCreateDataDeFault = new Dictionary<string, object> {
{"adUnitId","adunit-b2c1849f409b5d48"},
{"otherProperties",new Dictionary<string, object> { } }
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.RewardVideoAdCreate(rewardVideoAdCreateDataDeFault);不需要处理回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.RewardVideoAdCreate(rewardVideoAdCreateDataDeFault, RewardVideoAdCreateCallBack);需要处理回调


void RewardVideoAdCreateCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
adUnitIdstring广告ID
otherPropertiesDictionary<string, object>引力引擎上报观看广告其他参数

sdk回调返回值 [data]

{
//data 为空
}

share分享 监听转发

提示

说明:是一个监听功能,可以在初始化后调用,用户在右上角分享时会用到参数内容以及回调

数据流图

代码示例

object shareDataDeFault = new Dictionary<string, object> {
{"title","我是一个转发标题!!!!"},
{"imageUrl","" },
{"imageUrlId","" },
{"query","a=1&b=2"},
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.Share(shareDataDeFault); //无需回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.Share(shareDataDeFault, ShareCallBack); //需要回调


void ShareCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
titlestring转发标题
imageUrlstring转发显示图片的链接,网络图片/本地图片文件路径/相对代码包根目录的图片
imageUrlIdstring审核通过的图片 ID,微信后台上传审核
querystring查询字符串,必须是 key1=val1&key2=val2 的格式。从这条转发消息进入后,可通过 wx.getLaunchOptionsSync() 或 wx.onShow() 获取启动参数中的 query。不传则默认使用当前页面query。

sdk回调返回值 [data]

{
"title":"标题",
"imageUrl":"",
"imageUrlId":"",
"query":"a=1&b=1&platform_id=1001&platfrom_user_id=xxx", // 带上分享参数 platform_id platfrom_user_id
}

shareOpen 主动分享给好友

提示

说明:主动拉起分享功能

数据流图

代码示例

object shareDataDeFault = new Dictionary<string, object> {
{"title","我是一个转发标题 shareopen!!!!"},
{"imageUrl","" },
{"imageUrlId","" },
{"query","a=1&b=2"},
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.ShareOpen(shareDataDeFault); //不需要处理回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.ShareOpen(shareDataDeFault, ShareOpenCallBack);//有回调


void ShareOpenCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
titlestring转发标题
imageUrlstring转发显示图片的链接,网络图片/本地图片文件路径/相对代码包根目录的图片
imageUrlIdstring审核通过的图片 ID,微信后台上传审核
querystring查询字符串,必须是 key1=val1&key2=val2 的格式。从这条转发消息进入后,可通过 wx.getLaunchOptionsSync() 或 wx.onShow() 获取启动参数中的 query。不传则默认使用当前页面query。

sdk回调返回值 [data]

{
"title":"标题",
"imageUrl":"",
"imageUrlId":"",
"query":"a=1&b=1&platform_id=1001&platfrom_user_id=xxx", // 带上分享参数 platform_id platfrom_user_id
}

openCustomerService 打开客服

数据流图

代码示例

object openCustomerServiceDataDeFault = new Dictionary<string, object> {
{"sessionFrom",""},
{"showMessageCard",true},
{"sendMessageTitle","" },
{"sendMessagePath",""},
{"sendMessageImg",""},
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.OpenCustomerService(openCustomerServiceDataDeFault); //不需要处理回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.OpenCustomerService(openCustomerServiceDataDeFault, OpenCustomerServiceCallBack); //有回调


void OpenCustomerServiceCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
sessionFromstring会话来源
showMessageCardbool是否显示会话内消息卡片
sendMessageTitlestring会话内消息卡片标题
sendMessagePathstring会话内消息卡片路径
sendMessageImgstring会话内消息卡片图片路径

sdk回调返回值 [data]

{

}

注意事项:向用户发送消息48小时限5条,见文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/send.html

getUserInfo 获取用户信息

数据流图

代码示例

object getUserInfoDataDeFault = new Dictionary<string, object> {};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetUserInfo(getUserInfoDataDeFault); //不需要回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetUserInfo(getUserInfoDataDeFault, GetUserInfoCallBack); //有回调


void GetUserInfoCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述

sdk回调返回值 [data]

{
"nickName":"王二麻子",//昵称
"avatarUrl":"https://weixin.qq.com/kasrls",//头像,获取方式同上
"unionId":"23infos2384jwsflkw34r2",//同一开发者账号下的唯一标识
"createTime": "2024-09-05 13:14:15",
"gender": "男",//性别:男、女、未知
"platformUserId": "kswrlwsfhkwsfnkwf",//微信openId
"sdkUserId": 10000001,//SDK用户id
"sdkUserId": 10000001,//SDK用户id
"scopeUserInfo": true //本地头像昵称授权状态,如果true会自动更新头像昵称(一般2-4小时),false则需要游戏创建授权按钮让用户重新授权
}

createUserInfoButton 创建授权按钮

数据流图

代码示例

object createUserInfoButtonDataDeFault = new Dictionary<string, object>
{
{"button",new Dictionary<string, object>{
{"type","text"},
{"text","获取用户信息"},
{"withCredentials",true},
{"style",
new Dictionary<string, object>{
{"left",10},
{"top",76},
{ "width",200},
{"height", 40},
{"lineHeight",40},
{"backgroundColor","#ff0000"},
{"color","#ffffff"},
{"textAlign","center"},
{"fontSize",16},
{"borderRadius",4},
}
},
} }
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.CreateUserInfoButton(createUserInfoButtonDataDeFault);//不需要回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.CreateUserInfoButton(createUserInfoButtonDataDeFault, CreateUserInfoButtonCallBack);//有回调


void CreateUserInfoButtonCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
buttonobject同微信参数 https://developers.weixin.qq.com/minigame/dev/api/open-api/user-info/wx.createUserInfoButton.html

sdk回调返回值 [data]

{
"nickName":"",//昵称,按钮点击授权后回调的参数到服务端解析 https://developers.weixin.qq.com/minigame/dev/guide/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95
"avatarUrl":"",//头像,获取方式同上
"unionId":"",//同一开发者账号下的唯一标识,获取方式同上
}

destoryUserInfoButton 授权铵钮消失

数据流图

代码示例

object destoryUserInfoButtonDeFault = new Dictionary<string, object>{};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.DestoryUserInfoButton(destoryUserInfoButtonDeFault);//不需要回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.DestoryUserInfoButton(destoryUserInfoButtonDeFault, DestoryUserInfoButtonCallBack);//有回调


void DestoryUserInfoButtonCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述

sdk回调返回值 [data]

{
}

createRole 创建角色上报数据

数据流图

代码示例

object createRoleDataDeFault = new Dictionary<string, object>
{
{"serverId","1" },
{"serverName","传奇盛世" },
{"roleId","123" },
{"roleName","重生之我是吗喽" },
{"roleLevel","999" },
{"roleCreateTime","1" },
{"location","浙江" },
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.CreateRole(createRoleDataDeFault);//不需要回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.CreateRole(createRoleDataDeFault, CreateRoleCallBack);//有回调


void CreateRoleCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
serverIdstring服ID
serverNamestring服名称
roleIdstring角色ID
roleNamestring角色名
roleLevelstring角色等级
roleCreateTimeint角色创建时间戳,秒
locationstring大区

sdk回调返回值 [data]

{

}

loginRole 登录角色上报数据

数据流图

代码示例

object loginRoleDataDeFault = new Dictionary<string, object>
{
{"serverId","1" },
{"serverName","传奇盛世" },
{"roleId","123" },
{"roleName","重生之我是吗喽" },
{"roleLevel","999" },
{"roleCreateTime","1" },
{"location","浙江" },
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.LoginRole(loginRoleDataDeFault); //不需要回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.LoginRole(loginRoleDataDeFault, LoginRoleCallBack); //有回调


void LoginRoleCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
serverIdstring服ID
serverNamestring服名称
roleIdstring角色ID
roleNamestring角色名
roleLevelstring角色等级
roleCreateTimeint角色创建时间戳,秒
locationstring大区

sdk回调返回值 [data]

{

}

changeRole 切换角色上报数据

数据流图

代码示例

object createRoleDataDeFault = new Dictionary<string, object>
{
{"serverId","1" },
{"serverName","传奇盛世" },
{"roleId","123" },
{"roleName","重生之我是吗喽" },
{"roleLevel","999" },
{"roleCreateTime","1" },
{"location","浙江" },
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.ChangeRole(createRoleDataDeFault); //不需要回主调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.ChangeRole(createRoleDataDeFault, ChangeRoleCallBack); //用回调


void ChangeRoleCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
serverIdstring服ID
serverNamestring服名称
roleIdstring角色ID
roleNamestring角色名
roleLevelstring角色等级
roleCreateTimeint角色创建时间戳,秒
locationstring大区

sdk回调返回值 [data]

{

}

ssUserSet 设置用户属性 上报数数 设置用户属性

数据流图

代码示例

object SsUserSetDataDeFault = new Dictionary<string, object>
{
{"type",1},
{"properties",new Dictionary<string, object>{
{ "mj_role_name","myRoleName"}
} },
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.SsUserSet(SsUserSetDataDeFault); //不需要回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.SsUserSet(SsUserSetDataDeFault, SsUserSetDataCallBack); //有回调


void SsUserSetDataCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
typeint设置用户属性的类型 1 user_set 2 userSetOnce 3 userAdd
propertiesDictionary<string, object>属性值对象

sdk回调返回值 [data]

{

}

ssReport 上报数数

数据流图

代码示例

object SsReportDataDeFault = new Dictionary<string, object>
{
{"eventName","mj_login_account"},
{"properties",new Dictionary<string, object>{
{"mj_login_method","微信小游戏"}
}
},
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.SsReport(SsReportDataDeFault); //无需处理回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.SsReport(SsReportDataDeFault, SsReportDataCallBack); //有回调


void SsReportDataCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
eventNamestring事件名
propertiesDictionary<string, object>属性值对象

sdk回调返回值 [data]

{

}

ylyqReport 上报引力引擎

数据流图

代码示例

object ylyqReportDataDeFault = new Dictionary<string, object>
{
{"eventName","gravity_app_order"},
{"properties",new Dictionary<string, object>{
{"pay_reason","productName" },
{"pay_amount",1000},
{"order_id","orderid_123213123"}
}
},
};
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.YlyqReport(ylyqReportDataDeFault); //无需处理回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.YlyqReport(ylyqReportDataDeFault, YlyqReportCallBack); //有回调


void YlyqReportCallBack(string callback)
{
// 处理回调---无需处理回调不用实现
}

参数说明

参数类型是否必传参数描述
eventNamestring事件名,TutorialFinish为完成新手引导
propertiesDictionary<string, object>属性值对象

sdk回调返回值 [data]

{

}

JoinVoIPChat 加入语音房间

前提:
        一、接入前需要在【微信后台-账号设置-服务内容声明-用户隐私保护指引】 增加访问你的麦克风的权限
        二、需要在【微信后台-游戏能力地图-实时语音】申请开通下功能,另外注册用户大于1000才能申请

数据流图

代码示例

object joinVoIPChatObj = new Dictionary<string, object>
{
"groupId":"111111111",//字符串,小游戏内此房间/群聊的 ID。同一时刻传入相同 groupId 的用户会进入到同个实时语音房间
"muteConfig":{
"muteMicrophone":true,//boolean,是否静音麦克风
"muteEarphone":true,//boolean,是否静音耳机
}//静音设置
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.JoinVoIPChat(joinVoIPChatObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.JoinVoIPChat(joinVoIPChatObj, JoinVoIPChatCallback,JoinVoIPChatListenerCallback); //用回调
void JoinVoIPChatCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

void JoinVoIPChatListenerCallback(string callback)
{
// 处理回调---监听回调,监听用户语音在线状态、成员在线状态回调
}

参数说明

参数类型是否必传参数描述
groupIdstring此房间/群聊的 ID。同一时刻传入相同 groupId 的用户会进入到同个实时语音房间
muteConfigDictionary<string, boolean>对象键值:muteMicrophone是否静音麦克风,muteEarphone是否静音耳机

方法回调返回值 [data]

{
"openIdList":["a1","a2"]//Array.<String>,在此通话中的成员 openId 名单,即sdk的platformUserId
}

监听回调返回值 [data]

{
"type":"onVoIPChatSpeakersChanged",//监听类型,onVoIPChatSpeakersChanged 监听成员通话状态变化,还在实时语音通话中的成员 openId 名单就在openIdList里,onVoIPChatMembersChanged 监听成员在线状态变化,还在实时语音通话中的成员 openId 名单就在openIdList里
"openIdList":["a1","a2"]//微信的openId,即sdk的platformUserId
}

ExitVoIPChat 退出语音房间

数据流图

代码示例

object exitVoIPChatObj= new Dictionary<string, object>
{
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.ExitVoIPChat(exitVoIPChatObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.ExitVoIPChat(exitVoIPChatObj, ExitVoIPChatCallback); //用回调
void ExitVoIPChatCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述

方法回调返回值 [data]


UpdateVoIPChatMuteConfig - 更新实时语音静音设置

数据流图

代码示例

object updateVoIPChatMuteConfigObj= new Dictionary<string, object>
{
"muteConfig":{
"muteMicrophone":false,//boolean,是否静音麦克风
"muteEarphone":false,//boolean,是否静音耳机
}//静音设置
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.UpdateVoIPChatMuteConfig(updateVoIPChatMuteConfigObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.UpdateVoIPChatMuteConfig(updateVoIPChatMuteConfigObj, UpdateVoIPChatMuteConfigCallback); //用回调
void UpdateVoIPChatMuteConfigCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述
muteConfigDictionary<string, boolean>对象键值:muteMicrophone是否静音麦克风,muteEarphone是否静音耳机

方法回调返回值 [data]


RequestSubscribeMessage - 一次性订阅消息

前提:接入前需要在【微信后台-订阅消息-公共模版库】 增加你的订阅模版,获取模版ID数据流图

代码示例

object requestSubscribeMessageObj= new Dictionary<string, object>
{
"tmplIds":["aaa","bbb"],//需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.RequestSubscribeMessage(requestSubscribeMessageObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.RequestSubscribeMessage(requestSubscribeMessageObj, RequestSubscribeMessageCallback); //用回调
void RequestSubscribeMessageCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述
tmplIdsArray<string>需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息,模版id在微信后台申请

方法回调返回值 [data]


{
"aaa": "accept",
"bbb": "reject"
}//'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁,'filter'表示该模板因为模板标题同名被后台过滤

RequestSubscribeSystemMessage - 系统订阅消息和版本更新订阅消息

数据流图

代码示例

object requestSubscribeSystemMessageObj= new Dictionary<string, object>
{
"msgTypeList":['SYS_MSG_TYPE_WHATS_NEW', 'SYS_MSG_TYPE_INTERACTIVE', 'SYS_MSG_TYPE_RANK']//系统订阅的类型集合:SYS_MSG_TYPE_WHATS_NEW代表版本更新,SYS_MSG_TYPE_INTERACTIVE游戏交互,SYS_MSG_TYPE_RANK排行榜
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.RequestSubscribeSystemMessage(requestSubscribeSystemMessageObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.RequestSubscribeSystemMessage(requestSubscribeSystemMessageObj, RequestSubscribeSystemMessageCallback); //用回调
void RequestSubscribeSystemMessageCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述
msgTypeListArray<string>系统订阅的类型集合:SYS_MSG_TYPE_WHATS_NEW代表版本更新,SYS_MSG_TYPE_INTERACTIVE游戏交互,SYS_MSG_TYPE_RANK排行榜

方法回调返回值 [data]


{
"SYS_MSG_TYPE_WHATS_NEW": "accept",//版本更新
"SYS_MSG_TYPE_INTERACTIVE": "accept",//游戏交互
"SYS_MSG_TYPE_RANK": 'reject'//排行榜
}//'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁,'filter'表示该模板因为模板标题同名被后台过滤

CheckIsAddedToMyMiniProgram - 检查是否加入收藏

数据流图

代码示例

object checkIsAddedToMyMiniProgramObj= new Dictionary<string, object>
{
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.CheckIsAddedToMyMiniProgram(checkIsAddedToMyMiniProgramObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.CheckIsAddedToMyMiniProgram(checkIsAddedToMyMiniProgramObj, CheckIsAddedToMyMiniProgramCallback); //用回调
void CheckIsAddedToMyMiniProgramCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述

方法回调返回值 [data]


{
"added":false//Boolean,是否被添加至 「我的小程序」
}

GetLocation - 获取用户当前位置信息

前提:接入前需要在【微信后台-账号设置-服务内容声明-用户隐私保护指引】 增加访问你的位置的权限前提:需要在game.json加一段配置,文字根据实际情况配置

"permission": {
"scope.userFuzzyLocation": {
"desc":"你的位置信息将用于小游戏排行版功能"
}
}

数据流图

代码示例

object getLocationObj= new Dictionary<string, object>
{
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetLocation(getLocationObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetLocation(getLocationObj, GetLocationCallback); //用回调
void GetLocationCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述

方法回调返回值 [data]


{
"latitude":"30.36975",
"longitude":"120.269501",
"country":"中国",
"province":"浙江省",
"city":"杭州市"
}

GetSetting - 获取用户设置权限信息

数据流图

代码示例

object getSettingObj= new Dictionary<string, object>
{
}
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetSetting(getSettingObj); //无回调
MiaoJuWxSDK.MiaoJuWxSDKBridge.Instance.GetSetting(getSettingObj, GetSettingCallback); //用回调
void GetSettingCallback(string callback)
{
// 处理回调---方法调用成功或失败回调
}

参数说明

参数类型是否必传参数描述

方法回调返回值 [data]


{
"authSetting":{
"scope.record":true,//语音麦克风权限,true为允许,其他或无此key则表示没开此权限
"scope.userFuzzyLocation":true,//位置权限,true为允许,其他或无此key则表示没开此权限
"scope.userInfo:":true//用户信息(昵称头像)权限,true为允许,其他或无此key则表示没开此权限
},
"subscriptionsSetting":{
"SYS_MSG_TYPE_INTERACTIVE":"reject",//系统消息-用户互动消息,accept为允许,其他或无此key则表示没开此权限
"SYS_MSG_TYPE_RANK":"accept",//系统消息-排行榜,accept为允许,其他或无此key则表示没开此权限
"SYS_MSG_TYPE_WHATS_NEW":"accept",//系统消息-版本更新,accept为允许,其他或无此key则表示没开此权限
"6doVBAYuVp-yIavDyyBDVCjhltUD7LFwOfFXF8TOQ4g": "accept"//一次性订阅消息-后台设置的模版号,accept为允许,其他或无此key则表示没开此权限
}
}

3.服务端接入

3.1 游戏发货通知

当SDK服务端接收到微信服务器或集团充值推送的支付成功通知时,SDK服务端会向游戏发送发货请求,通知游戏服给玩家发货。回调地址由游戏下单时传递的,不传的话,可以在SDK服务端数据后台配置。优先使用游戏传入。
发货签名密钥:signKey 由SDK提供
请求地址:游戏服接收请求的http地址,游戏下单时,传入。
请求方式:POST
参数格式:application/json
请求参数(JSON格式):
{
game_order_id:游戏订单号,必传
order_sn: SDK订单号,必传
user_id: SDK用户ID,必传
server_id: 服ID,必传
role_id: 角色ID,必填
platform_user_id: 微信openID,必传
product_id: 商户唯一标识,必传
price:商品单价,单位分,必传
number: 购买数量,必传
money:付款金额,单位分,必传
real_pay:实付金额,单位分,必传
custom_data:获取订单号服务器传过来的自定义参数,原样返回
time: 请求发生的时间戳,必传
sign:签名值。 该字段不参与签名,签名规则:md5(order_sn&platform_user_id&product_id&custom_data&time&signKey),必传
}

游戏服务器返回(JSON格式):
{
code: 1000表示发货成功,其它值表示发货异常
message: 状态码对应的提示信息
}

请求参数说明(SDK发起请求)

参数类型是否必传参数描述
game_order_idstring游戏订单号
order_snstringSDK订单号:25位长度
user_idnumberSDK用户ID
platform_user_idstring即微信openID
server_idstring服ID
role_idstring角色ID
product_idstring道具ID
pricenumber道具单价,单位分
numbernumber购买数量,如果大于1,需要按量发货
moneynumber付款金额,单位分
real_paynumber实付金额,单位分
custom_datastring获取游戏创建订单时透传过来的自定义参数,原样返回
timenumber请求发生的时间戳
signstring签名值。 该字段不参与签名
签名规则:md5(order_sn&platform_user_id&product_id&custom_data&time&signKey)

返回参数说明(游戏返回)

参数类型参数描述
codenumber状态码:1000表示发货成功,其它表示发货异常
messagestring状态码对应的提示说明
dataobject返回的其它数据,可为空或不传

3.2 发送微信订阅模版服务通知

当游戏服需要对玩家进行下发微信订阅模版服务通知时,游戏服务端向SDK服务端进行请求。
请求地址:https://minigamesdk-api.miaorui1.com/tools/sendsubscribemsg
请求方式:GET
特别说明:platform_id 与 game_id 由SDK提供
签名密钥:signKey 由SDK提供

请求参数说明(游戏服务端发起请求)

参数类型是否必传参数描述
platform_idnumber平台ID,由SDK提供
game_idnumber游戏ID,由SDK提供
server_idstring游戏服
role_idstring角色
template_idstring消息模版ID
sdk_uidstringSDK 用户唯一ID,与touser参数不能同时为空,都不为空则以touser为准
touserstring消息接收者 - 微信用户openid,与sdk_uid参数不能同时为空,都不为空则以touser为准
pagestring服务通知消息点击后的跳转地址,小程序跳转地址,例:/page/index
datastring模版内容,格式如: { "key1": { "value": any }, "key2": { "value": any } },具体查看微信模版对应的各字段
timenumber请求发生的时间戳
signstring签名值。 该字段不参与签名
签名规则:md5(platform_id&game_id&template_id&time&signKey)

返回参数说明(SDK服务端返回)

参数类型参数描述
codenumber状态码:1000表示成功,其它表示异常
messagestring状态码对应的提示说明
dataobject返回的其它数据,可为空或不传

3.3 获取小游戏的微信服务端调用凭证

当需要自行操作微信小游戏的部分服务接口调用时,可使用该接口先获取调用凭证(即access_token),由需求方向SDK服务端进行请求。
请求地址:https://minigamesdk-api.miaorui1.com/wxtoken/{platform_id}/{game_id}
请求方式:GET
特别说明:platform_id 与 game_id 由SDK提供
签名密钥:signKey 由SDK提供

请求参数说明(游戏服务端发起请求)

参数类型是否必传参数描述
timenumber请求发生的时间戳
signstring签名值。 该字段不参与签名
签名规则:md5(platform_id&game_id&time&signKey)

返回参数说明(SDK服务端返回)

参数类型参数描述
codenumber状态码:1000表示成功,其它表示异常
messagestring状态码对应的提示说明
dataobject返回的其它数据,可为空或不传
-------当code = 1000时,以下返回
object{"access_token": "23****893","expire_in": 1729146965}

3.4 游戏礼包发货通知

当SDK服务端接收到微信服务器推送的礼包道具发货通知时,SDK服务端会向游戏发送礼包道具发货请求,通知游戏服给玩家发送礼包。礼包发货地址由游戏提供给SDK服务端。
发货签名密钥:signKey 由SDK提供
请求地址:游戏服务器接收请求的http地址,由游戏提供,如有变更需及时通知SDK服务端。
请求方式:POST
参数格式:application/json
请求参数(JSON格式):
{
oid:礼包发货订单唯一标识,必传
user_id: SDK用户ID,必传
platform_user_id: 微信openID,必传
gift_type_id: 礼包类型ID,必传,值有可能为空,参与签名
gift_id:礼包ID,必传
zone:分区:1001: iOS, 2001: Android、PC,必传
props: 道具列表:[{"Id": "test_prop_1", "Num": 2}],必传
time: 请求发生的时间戳,必传
sign:签名值。 该字段不参与签名,签名规则:md5(oid&platform_user_id&gift_type_id&gift_id&time&signKey),必传
}

游戏服务器返回(JSON格式):
{
code: 1000表示发货成功,其它值表示发货异常
message: 状态码对应的提示信息
}

请求参数说明(SDK发起请求)

参数类型是否必传参数描述
oidstring礼包发货订单唯一标识
user_idnumberSDK用户ID
platform_user_idstring即微信openID
gift_type_idstring礼包类型ID,必传,值有可能为空,参与签名
gift_idstring礼包ID
zonestring分区:1001: iOS, 2001: Android、PC
propsstring道具列表:[{"Id": "test_prop_1", "Num": 2}],其中Id为道具唯一标识,Num为待发的数量
timenumber请求发生的时间戳
signstring签名值。 该字段不参与签名
签名规则:md5(oid&platform_user_id&gift_type_id&gift_id&time&signKey)

返回参数说明(游戏返回)

参数类型参数描述
codenumber状态码:1000表示发货成功,其它表示发货异常
messagestring状态码对应的提示说明
dataobject返回的其它数据,可为空或不传

老版本微信小游戏对接

微信小游戏对接