微信小游戏对接
版本
当前版本 1.3.1 历史版本
1.接入前准备
整体结构
红色部分由SDK技术实现,蓝色部分由游戏技术实现
SDK会提供两部分资源文件,一是.unitypackage 结尾的Unity插件,需要放到unity工程里,二是几个.js结尾的sdk文件,需要放到微信小游戏的工程里。说明在2.1 获取SDK
接入必备信息
对接参数信息
参数 | 类型 | 提供者 | 使用者 | 描述 | 用途 |
---|---|---|---|---|---|
gameId | int | SDK技术 | 游戏技术 | SDK游戏ID | 调用SDK【初始化】方法时传入 |
ssAppId | string | 运营 | 游戏技术、SDK技术 | 数数-项目管理-App_ID | 调用SDK初始化方法时传入 |
ylyqAccessToken | string | 运营 | 游戏技术、SDK技术 | 引力引擎-应用管理-Access Token | 调用SDK初始化方法时传入 |
adUnitId | string | 运营 | 游戏技术 | 微信-流量主-广告管理-广告位ID | 调用SDK【激励广告创建并展示】方法时传入 |
productId | string | 运营 | 游戏技术、SDK技术 | 微信-虚拟支付-基本配置-直购配置-道具id | 调用SDK【支付】方法时传入 |
tencentSdkData | object | 投放 | 游戏技术 | 腾讯后台 | 调用SDK【初始化】方法时传入 |
tencentSdkData.user_action_set_id | int | 投放 | 游戏技术 | 腾讯后台 | 腾讯数据源ID |
tencentSdkData.secret_key | string | 投放 | 游戏技术 | 腾讯后台 | 腾讯加密key |
tencentSdkData.appid | string | 投放 | 游戏技术 | 腾讯后台 | 微信小游戏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/notifyToken(令牌) 运营 SDK技术 微信-虚拟支付-基本配置-基础配置-发货推送配置 支付成功后微信通知SDK校验令牌 EncodingAESKey(消息加密密钥) 运营 SDK技术 微信-虚拟支付-基本配置-基础配置-发货推送配置 支付成功后微信通知SDK校验密钥 消息加密方式 运营 SDK技术 微信-虚拟支付-基本配置-基础配置-发货推送配置 支付成功后微信通知SDK加密方式,选明文模式,数据格式JSON 游戏分区ID 运营 SDK技术 微信-虚拟支付-基本配置-分区配置-游戏分区ID 支付验证用,目前只支持配一个 道具发货推送 运营 SDK技术 微信-虚拟支付-基本配置-直购配置-道具发货推送 支付成功后微信通知SDK开关,需开启推送 道具 运营 SDK技术、游戏技术 微信-虚拟支付-基本配置-直购配置-道具配置-添加道具 游戏内道具需要在这里配置并发布到线上,然后把道具id、道具名称、道具价格提供给技术 notify_url 游戏技术 SDK技术 选填,游戏发货回调地址,客户端SDK在创单时也支持传,如果客户端传了就会通知客户端上报的,否则会通知notify_url signKey SDK技术 游戏技术 必填,游戏发货回调验证签名的密钥 激励视频 需开通流量主功能
参数 提供者 使用者 描述 用途 广告位 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 数据上报引力引擎 微信自动刷新Token SDK技术 SDK技术 引力引擎-设置-应用管理-配置-微信开发者 填写token刷行地址(https://minigamesdk-api.miaorui1.com/wxtoken/100001/SDK游戏id),开启,选择“引力调用客户接口刷新” 自定义事件(不带$符号) 运营 SDK技术 引力引擎-设置-元数据-元事件 自定义事件(不带$符号)需要先创建才能上报,如果事件里有属性需要关联属性,属性在【事件属性】里创建 客服功能 开通客服功能,添加客服人员。配置消息推送
参数 提供者 使用者 描述 用途 URL(服务器地址) 运营 SDK技术 微信-开发管理-开发设置-消息推送 用于自动回复客服消息,比如充值链接。填写
https://minigamesdk-api.miaorui1.com/wechat/receiveToken(令牌) 运营 SDK技术 微信-开发管理-开发设置-消息推送 用于自动回复客服消息,比如充值链接。 EncodingAESKey(消息加密密钥) 运营 SDK技术 微信-开发管理-开发设置-消息推送 用于自动回复客服消息,比如充值链接。 消息加密方式 运营 SDK技术 微信-开发管理-开发设置-消息推送 用于自动回复客服消息,比如充值链接。选择“明文模式” 数据格式 运营 SDK技术 微信-开发管理-开发设置-消息推送 用于自动回复客服消息,比如充值链接。选择“JSON”
SDK名词
参数 | 类型 | 参数描述 |
---|---|---|
sdkUserId | int | SDK 用户唯一ID |
platformUserId | string | 微信小游戏的唯一ID,open_id |
clientId | string | SDK生成的设备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;
3)
2.3 SDK回调
公共返回字段
参数 | 类型 | 参数描述 |
---|---|---|
code | int | 1000成功,其他失败 |
message | string | 错误信息 |
data | object | /数据,看具体接口 |
初始化
说明:必接功能,其他接口必须在初始化功能回调之后
数据流图
代码示例
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)
{
// 处理初始化回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
gameId | int | 是 | SDK游戏ID,SDK技术提供 |
gameVersion | int | 是 | 游戏版本号 |
ssAppId | string | 是 | 数数应用App ID,运营提供 |
ylyqAccessToken | string | 是 | 引力引擎应用Access Token,运营提供 |
envConfig | string | 否 | 环境配置,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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
productId | string | 是 | 商品ID,跟微信虚拟支付配置的道具ID一致 |
productName | string | 是 | 商品名称 |
gameOrderId | string | 是 | 游戏订单ID |
serverId | string | 是 | 服ID |
serverName | string | 是 | 服名称 |
roleId | string | 是 | 角色ID |
roleName | string | 是 | 角色名 |
roleLevel | string | 否 | 角色等级 |
buyQuantity | int | 是 | 购买数量 |
goodsPrice | int | 是 | 单位分 |
customData | string | 否 | 自定义参数 |
payNoticeUrl | string | 否 | 支付回调服务端地址,传了就会回调这个地址,不传则回调系统配置的 |
conversationParams | Dictionary<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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
adUnitId | string | 是 | 广告ID |
otherProperties | Dictionary<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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
title | string | 是 | 转发标题 |
imageUrl | string | 否 | 转发显示图片的链接,网络图片/本地图片文件路径/相对代码包根目录的图片 |
imageUrlId | string | 否 | 审核通过的图片 ID,微信后台上传审核 |
query | string | 否 | 查询字符串,必须是 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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
title | string | 是 | 转发标题 |
imageUrl | string | 否 | 转发显示图片的链接,网络图片/本地图片文件路径/相对代码包根目录的图片 |
imageUrlId | string | 否 | 审核通过的图片 ID,微信后台上传审核 |
query | string | 否 | 查询字符串,必须是 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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
sessionFrom | string | 否 | 会话来源 |
showMessageCard | bool | 否 | 是否显示会话内消息卡片 |
sendMessageTitle | string | 否 | 会话内消息卡片标题 |
sendMessagePath | string | 否 | 会话内消息卡片路径 |
sendMessageImg | string | 否 | 会话内消息卡片图片路径 |
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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
button | object | 是 | 同微信参数 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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
serverId | string | 是 | 服ID |
serverName | string | 是 | 服名称 |
roleId | string | 是 | 角色ID |
roleName | string | 是 | 角色名 |
roleLevel | string | 是 | 角色等级 |
roleCreateTime | int | 否 | 角色创建时间戳,秒 |
location | string | 是 | 大区 |
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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
serverId | string | 是 | 服ID |
serverName | string | 是 | 服名称 |
roleId | string | 是 | 角色ID |
roleName | string | 是 | 角色名 |
roleLevel | string | 是 | 角色等级 |
roleCreateTime | int | 否 | 角色创建时间戳,秒 |
location | string | 是 | 大区 |
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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
serverId | string | 是 | 服ID |
serverName | string | 是 | 服名称 |
roleId | string | 是 | 角色ID |
roleName | string | 是 | 角色名 |
roleLevel | string | 是 | 角色等级 |
roleCreateTime | int | 否 | 角色创建时间戳,秒 |
location | string | 是 | 大区 |
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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
type | int | 是 | 设置用户属性的类型 1 user_set 2 userSetOnce 3 userAdd |
properties | Dictionary<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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
eventName | string | 是 | 事件名 |
properties | Dictionary<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)
{
// 处理回调---无需处理回调不用实现
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
eventName | string | 是 | 事件名,TutorialFinish为完成新手引导 |
properties | Dictionary<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)
{
// 处理回调---监听回调,监听用户语音在线状态、成员在线状态回调
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
groupId | string | 是 | 此房间/群聊的 ID。同一时刻传入相同 groupId 的用户会进入到同个实时语音房间 |
muteConfig | Dictionary<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)
{
// 处理回调---方法调用成功或失败回调
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
muteConfig | Dictionary<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)
{
// 处理回调---方法调用成功或失败回调
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
tmplIds | Array<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)
{
// 处理回调---方法调用成功或失败回调
}
参数说明
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
msgTypeList | Array<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_id | string | 是 | 游戏订单号 |
order_sn | string | 是 | SDK订单号:25位长度 |
user_id | number | 是 | SDK用户ID |
platform_user_id | string | 是 | 即微信openID |
server_id | string | 是 | 服ID |
role_id | string | 是 | 角色ID |
product_id | string | 是 | 道具ID |
price | number | 是 | 道具单价,单位分 |
number | number | 是 | 购买数量,如果大于1,需要按量发货 |
money | number | 是 | 付款金额,单位分 |
real_pay | number | 是 | 实付金额,单位分 |
custom_data | string | 是 | 获取游戏创建订单时透传过来的自定义参数,原样返回 |
time | number | 是 | 请求发生的时间戳 |
sign | string | 是 | 签名值。 该字段不参与签名 签名规则:md5(order_sn&platform_user_id&product_id&custom_data&time&signKey) |
返回参数说明(游戏返回)
参数 | 类型 | 参数描述 |
---|---|---|
code | number | 状态码:1000表示发货成功,其它表示发货异常 |
message | string | 状态码对应的提示说明 |
data | object | 返回的其它数据,可为空或不传 |
3.2 发送微信订阅模版服务通知
当游戏服需要对玩家进行下发微信订阅模版服务通知时,游戏服务端向SDK服务端进行请求。
请求地址:https://minigamesdk-api.miaorui1.com/tools/sendsubscribemsg
请求方式:GET
特别说明:platform_id 与 game_id 由SDK提供
签名密钥:signKey 由SDK提供
请求参数说明(游戏服务端发起请求)
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
platform_id | number | 是 | 平台ID,由SDK提供 |
game_id | number | 是 | 游戏ID,由SDK提供 |
server_id | string | 是 | 游戏服 |
role_id | string | 是 | 角色 |
template_id | string | 是 | 消息模版ID |
sdk_uid | string | 否 | SDK 用户唯一ID,与touser参数不能同时为空,都不为空则以touser为准 |
touser | string | 否 | 消息接收者 - 微信用户openid,与sdk_uid参数不能同时为空,都不为空则以touser为准 |
page | string | 否 | 服务通知消息点击后的跳转地址,小程序跳转地址,例:/page/index |
data | string | 是 | 模版内容,格式如: { "key1": { "value": any }, "key2": { "value": any } },具体查看微信模版对应的各字段 |
time | number | 是 | 请求发生的时间戳 |
sign | string | 是 | 签名值。 该字段不参与签名 签名规则:md5(platform_id&game_id&template_id&time&signKey) |
返回参数说明(SDK服务端返回)
参数 | 类型 | 参数描述 |
---|---|---|
code | number | 状态码:1000表示成功,其它表示异常 |
message | string | 状态码对应的提示说明 |
data | object | 返回的其它数据,可为空或不传 |
3.3 获取小游戏的微信服务端调用凭证
当需要自行操作微信小游戏的部分服务接口调用时,可使用该接口先获取调用凭证(即access_token),由需求方向SDK服务端进行请求。
请求地址:https://minigamesdk-api.miaorui1.com/wxtoken/{platform_id}/{game_id}
请求方式:GET
特别说明:platform_id 与 game_id 由SDK提供
签名密钥:signKey 由SDK提供
请求参数说明(游戏服务端发起请求)
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
time | number | 是 | 请求发生的时间戳 |
sign | string | 是 | 签名值。 该字段不参与签名 签名规则:md5(platform_id&game_id&time&signKey) |
返回参数说明(SDK服务端返回)
参数 | 类型 | 参数描述 |
---|---|---|
code | number | 状态码:1000表示成功,其它表示异常 |
message | string | 状态码对应的提示说明 |
data | object | 返回的其它数据,可为空或不传 |
---- | --- | 当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发起请求)
参数 | 类型 | 是否必传 | 参数描述 |
---|---|---|---|
oid | string | 是 | 礼包发货订单唯一标识 |
user_id | number | 是 | SDK用户ID |
platform_user_id | string | 是 | 即微信openID |
gift_type_id | string | 是 | 礼包类型ID,必传,值有可能为空,参与签名 |
gift_id | string | 是 | 礼包ID |
zone | string | 是 | 分区:1001: iOS, 2001: Android、PC |
props | string | 是 | 道具列表:[{"Id": "test_prop_1", "Num": 2}],其中Id为道具唯一标识,Num为待发的数量 |
time | number | 是 | 请求发生的时间戳 |
sign | string | 是 | 签名值。 该字段不参与签名 签名规则:md5(oid&platform_user_id&gift_type_id&gift_id&time&signKey) |
返回参数说明(游戏返回)
参数 | 类型 | 参数描述 |
---|---|---|
code | number | 状态码:1000表示发货成功,其它表示发货异常 |
message | string | 状态码对应的提示说明 |
data | object | 返回的其它数据,可为空或不传 |