接口文档

冰柠乐接口文档


微信小游戏SDK文档

<p>[TOC]</p> <h1>SDK介绍</h1> <p>SDK集成封装了部分的微信的前端API,直接调用SDK接口即可,无需再调用微信的接口; &lt;font color=&quot;red&quot;&gt;无需调用获取主体access_token接口&lt;/font&gt;,由我方提供接口获取,以免冲突;</p> <h1>版本和渠道设置说明:</h1> <p>SDK可以区分渠道和子渠道 (1)场景值做为渠道,SDK会自动通过tt.getLaunchOptionsSync().scene获取获取当前小程序场景:chid=场景值; (2)子渠道可以在启动参数(query)按照以下格式设置参数: via=子渠道ID或者 subchid=子渠道ID, 示例:via=111&amp;bbb=222 &lt;font color=&quot;red&quot;&gt;渠道只能二选一,via优先subchid&lt;/font&gt;</p> <h1>小游戏后台必设置:</h1> <p>域名:https:   配置文件提供的域名地址</p> <h2>小游戏后台</h2> <h3>(1)域名设置</h3> <p>在开发-&gt;开发设置-&gt;服务器域名,request合法域名增加 <code>cps.moyangmoyang.com</code></p> <h3>(2)广告设置(如内置广告必设置)</h3> <p>在推广-&gt;流量主-&gt;广告位管理,添加banner广告和激励视频广告,获得广告位id</p> <h3>(3)支付设置(如开通支付必设置)</h3> <p>在功能-&gt;虚拟支付-&gt;基本配置-&gt;游戏币配置,配置米大师相关信息</p> <h3>(4)消息推送</h3> <p>登录小程序后台后,在「开发」-「开发设置」-「消息推送」中,管理员扫码启用消息服务,填写服务器地址(URL)、令牌(Token) 和 消息加密密钥(EncodingAESKey)等信息。 URL: 开发者用来接收微信消息和事件的接口 URL。开发者所填写的URL 必须以 http:// 或 https:// 开头,分别支持 80 端口和 443 端口。 Token: 可由开发者可以任意填写,用作生成签名(该 Token 会和接口 URL 中包含的 Token 进行比对,从而验证安全性)。 EncodingAESKey: 由开发者手动填写或随机生成,将用作消息体加解密密钥。</p> <h1>1.SDK包以及引入说明(重要):</h1> <h2>1.1.SDK文件包括</h2> <pre><code>  sdk_v版本号.js(主文件)   config.js(配置文件,接入前会提供参数表,没有参数不能接入,文档中的所有密钥指的是我们提供的研发密钥,非小程序密钥,加号或者点号表示拼接两个字符串)</code></pre> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 配置文件config.js必须按照提供的资料填写完整,没有参数不能接入,文档中的所有密钥指的是我们提供的研发密钥,非小程序密钥,加号或者点号表示拼接两个字符串 &lt;/div&gt;</p> <h2>1.2.SDK引入方式</h2> <pre><code>require(&amp;quot;./js/sdk/dybsdk_v版本号.js&amp;quot;); //不同的引擎可能引入方式不一致,根据需求可以自行拆解拷贝。</code></pre> <h2>1.3.接口请求方式</h2> <p>全部POST,支持JSON和FORM,声明header格式content-type,返回的格式,如无特殊说明,code的值1为正确,0为错误</p> <h2>1.4.安全</h2> <p>涉及到服务端请求的接口,如access_token等全部要在后端进行请求,平台提供的密钥secret_key,必须放在服务端后端校验,不能暴露在前端,前端代码会被爬下来破解加密。</p> <h2>1.5.接入有问题先看文档后面的常见问题</h2> <h1>2.获取用户信息(为确保数据同步,游戏初始化必接入,打开游戏即调用)</h1> <h2>2.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取openid,无需再单独调用login接口。</p> <p><code>getDybUserInfo(function callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> (1)整个游戏流程只能全局初始化的时候调用一次即可,不能重复调用。 重复调用可能会刷新,session_key,access_token,影响支付授权。 (2)&lt;font color=&quot;red&quot;&gt;保证先接入此接口,再接入后续接口,后续接口依赖于此接口,后续接口调用可放在此接口回调函数里面,或延迟调用,不要并行&lt;/font&gt; (3)此接口调用login授权获取openid,如需头像等信息请自行使用原生接口userInfo获取信息接口,但是保证不能调用到wx.login &lt;/div&gt; &lt;div style=&quot;background: #fda7b4;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚡ <strong>校验安全</strong> 1、为了防止openid泄露被直接用于游戏接口请求,授权返回的数据中有2个字段用于游戏方后端校验用户正确性-(openid, sign) 2、返回签名sign的生成方式为:&lt;font color=&quot;red&quot;&gt;md5(&#039;sessV2&#039;+appid+openid+加密密钥key)&lt;/font&gt;, 加密密钥平台方提供,+号拼接字符串 &lt;/div&gt;</p> <h2>2.2参数说明</h2> <ul> <li>无需传参</li> </ul> <h2>2.3示例代码</h2> <pre><code class="language-javascript">dyb.getDybUserInfo(function (callback) {     console.log(&amp;#039;getDyUserInfo-------------:&amp;#039; + JSON.stringify(callback)); })</code></pre> <h2>2.4接口返回</h2> <pre><code class="language-javascript">getDyUserInfo-------------:{&amp;quot;user&amp;quot;:{&amp;quot;openid&amp;quot;:&amp;quot;1D763F35AEC4354069F149B4350BEABE&amp;quot;,&amp;quot;sign&amp;quot;:&amp;quot;f140efc95199c43a8d3b6d508b6ba98d&amp;quot;},&amp;quot;shareInfo&amp;quot;:{}}</code></pre> <h1>3.创角信息上报</h1> <h2>3.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍上报创角事件</p> <pre><code>createRole(function callback)</code></pre> <p>&lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 第一次调用依赖第2步-获取用户信息,建议创角上报在授权事件后3-5s后调起 &lt;/div&gt;</p> <h2>3.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |role_name |是  |string |角色名称,没有填个昵称或者别的信息   | |server_id |是  |int | 区服ID,没有填个默认数字    | |server_name     |否  |string | 区服名称,没有填个默认名称    |</p> <h2>3.3示例代码</h2> <pre><code class="language-javascript">let param = {     server_id: 1,     server_name: &amp;#039;服务器&amp;#039;,     role_name: &amp;#039;默认昵称&amp;#039;, } dyb.createRole(param, function (callback) {     console.log(&amp;#039;roleData:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>3.4接口返回</h2> <pre><code class="language-javascript">roleData:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;角色已经上报&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1586418685&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>4.游戏关卡/等级</h1> <h2>4.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍上报当前玩家所在的游戏关卡/等级; (1)可以在玩家退出的时候进行上报最新的关卡/等级; (2)也可以在玩家突破关卡/等级的时候上报</p> <p><code>1、上报关卡:gameLevel(int level, callback)</code> <code>2、上报等级:gameGrade(int grade, callback)</code> &lt;font color=&quot;red&quot;&gt;如果两个接口需要同时调用,需确保其中一个先调用,另一个可放在回调函数里面调用,或延迟调用,不要并行&lt;/font&gt; &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 第一次调用依赖第2步-获取用户信息,建议在授权事件后3-5s后调起 &lt;/div&gt;</p> <h2>4.2参数说明</h2> <p><strong>上报关卡:</strong></p> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |level |是  |int |关卡   |</p> <p><strong>上报等级:</strong></p> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |grade |是  |int |等级   |</p> <h2>4.3示例代码</h2> <pre><code class="language-javascript">//上报关卡: //关卡2 dyb.gameLevel(2,function (callback) { console.log(&amp;#039;game_level:&amp;#039; + JSON.stringify(callback)); }); //上报等级: //等级3 dyb.gameGrade(3, function (callback) { console.log(&amp;#039;game_grade:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>4.4接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //0调用失败,1调用成功 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot; }</code></pre> <h1>5.内容检测接口</h1> <h2>5.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍检查玩家输入的文本内容内容是否违规(游戏内有玩家自由输入内容必接)</p> <p><code>msg_check()</code> &lt;/div&gt;</p> <h2>5.2示例代码</h2> <pre><code class="language-javascript">dyb.msg_check(&amp;#039;特3456书yuuo莞6543李zxcz蒜7782法fgnv级&amp;#039;,function (callback) {      console.log(&amp;#039;内容检测:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>5.3接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //(0检验失败,1检验通过) &amp;quot;msg&amp;quot;: &amp;quot;&amp;quot; }</code></pre> <h1>6.支付接口(安卓+ios)</h1> <h2>6.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍小游戏订单提交,生成支付订单并保存,调用支付后,&lt;font color=&quot;red&quot;&gt;游戏发货必须以服务端支付回调为准&lt;/font&gt;。</p> <p><code>submitOrder(Object param, callback)</code> &lt;/div&gt;</p> <h2>6.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |goods_count |是  |int |商品数量 由接入方提供 如:1   | |goods_name |是  |string |商品名称 由接入方提供 如:元宝   | |pay_amount |是  |int |支付总金额(元)=单价乘数量,由接入方提供,整数 | |redirect_uri |是  |string |异步通知游戏支付结果地址 由接入方提供   | |extra_info |是  |string |额外拓展参数(将在服务端支付回调原样透传),可以为空字符串,a=b&amp;c=d   | |order_sn |是  |string |订单编号(游戏生成的订单号)   | |role_name |是  |string |角色名称 由接入方提供   | |server_name |是  |string |区服名称 由接入方提供  |</p> <h2>6.3示例代码</h2> <pre><code class="language-javascript">let pay_data = {       pay_amount:1,       extra_info: &amp;#039;a=b&amp;#039;,       goods_count: 1,       goods_name: &amp;#039;测试商品&amp;#039;,       redirect_uri: &amp;#039;http://nginx56.local/test&amp;#039;,       role_name: &amp;#039;无角色&amp;#039;,       server_name: &amp;#039;默认服务器&amp;#039;,       order_sn: randomNumber(),   } dyb.submitOrder(pay_data, function (callback) {     console.log(&amp;#039;生成订单:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>6.4接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //(0失败,直接提示,1调用成功)//此处仅提供前端参考,游戏发货必须以服务端支付回调为准 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot; }</code></pre> <h1>7.支付成功回调通知(服务端接口)</h1> <h2>7.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍ 1.回调地址在客户端调用支付接口时传入,字段&lt;font color=&quot;red&quot;&gt;redirect_uri&lt;/font&gt;。 2.回调方式为POST(请使用post方式接收回调值),数据提交为表单方式(Content-Type: application/x-www-form-urlencoded) 3.此接口地址由游戏服务方提供,用于接收用户支付结果的接口,控制游戏内发货,2S不响应则超时,做好过滤,防止重复通知 &lt;/div&gt;</p> <h2>7.2回调参数说明(post)</h2> <p>|参数名|说明| |:----   |-----   | |order_sn |订单编号(游戏的订单号)   | |extra_info |透传参数(原样返回,游戏在创建订单时传入,不允许有空格)   | |pay_amount |订单金额(单位:元,double类型,精确到小数点后两位)一定要校验价格 | |pay_status |订单支付状态(1或0;1为成功支付,0为未支付)   | |pay_time |支付时间(若为三方或渠道支付,此时间为平台接收到支付成功时间)   | |uid |用户的唯一id,与客户端的openid字段相同   | |goods_name |小游戏道具名字(商品名字)   | |appid |小游戏appid   | |sign |签名(为了安全,请校验签名)签名规则看回调签名  |</p> <h2>7.3回调签名</h2> <pre><code class="language-javascript">1)去除sign,其他所有POST的参数均参与签名,签名不需要转化大小写 2)参数名进行升序排序后 3)按照key1=val1&amp;amp;key2=val2&amp;amp;key3=val3格式生成源字符串。 4)md5(源字符串+加密secret_key)生成签名sign; key1=val1&amp;amp;key2=val2&amp;amp;key3=val3secret_key 签名示例: 假设现有参数为:{&amp;quot;order_sn&amp;quot;:&amp;quot;1603702733183568507&amp;quot;,&amp;quot;extra_info&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;goods_identifier&amp;quot;:&amp;quot;f4355f16858fc0244ea74ac540581148&amp;quot;,&amp;quot;pay_amount&amp;quot;:&amp;quot;1.00&amp;quot;,&amp;quot;pay_status&amp;quot;:1,&amp;quot;pay_time&amp;quot;:1603702732,&amp;quot;uid&amp;quot;:&amp;quot;09122E14E6DE6E81F493000A15121368&amp;quot;} 密钥为:ibIa4rDIxHnT1uw 参数名排序后拼接的字符串为:extra_info=&amp;amp;goods_identifier=f4355f16858fc0244ea74ac540581148&amp;amp;order_sn=1603702733183568507&amp;amp;pay_amount=1.00&amp;amp;pay_status=1&amp;amp;pay_time=1603702732&amp;amp;uid=09122E14E6DE6E81F493000A15121368ibIa4rDIxHnT1uw Sha1加密为:aa5eff8b0c74764909550daf5e908cbc1fd72ea9 Md5加密为:3762f09a6804ec6aed26955854c6f7ee</code></pre> <h2>7.4回调返回(json)</h2> <pre><code class="language-javascript">1.游戏服务端在收到回调后,返回{&amp;quot;code&amp;quot;:0,&amp;quot;message&amp;quot;:&amp;quot;success&amp;quot;}代表游戏发货成功。其他code码,游戏服务端自己定义。 2.可能存在重复通知的情况,如果已经发货成功,也请直接返回{&amp;quot;code&amp;quot;:0,&amp;quot;message&amp;quot;:&amp;quot;success&amp;quot;}。</code></pre> <h1>8.打点上报</h1> <h2>8.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍ 自定义打点上报 为方便统计用户引导流程的数据</p> <p><code>dot</code> &lt;/div&gt;</p> <h2>8.2参数说明</h2> <p>参数传递数字,举例对应如下,具体打点位置自己决定,不能超过5: 1:创角步骤/新手引导1 2:新手引导2 3:新手引导3 4:新手引导4 5:新手引导5</p> <h2>8.3示例代码</h2> <pre><code class="language-javascript">dyb.dot(3,function(call){ console.log(call,&amp;#039;打点&amp;#039;) });</code></pre> <h2>8.4接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //(0检验失败,1检验通过) &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot; }</code></pre> <h1>9.激励视频广告</h1> <h2>9.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍创建激励视频接口</p> <p><code>createVideoAd(string auditID, callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 调用一次,拉起一次广告,游戏需要根据回调状态处理奖励的发送 &lt;/div&gt;</p> <h2>9.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |auditID |是  |string |视频广告ID,小程序后台生成   |</p> <h2>9.3示例代码</h2> <pre><code class="language-javascript">dyb.createVideoAd(&amp;#039;8qodec75r8m7j1orib&amp;#039;,function(call){    //call返回的state有三种状态,分别是show,close,error    //show {&amp;quot;state&amp;quot;:&amp;quot;show&amp;quot;,&amp;quot;isEnded&amp;quot;:false,&amp;quot;msg&amp;quot;:&amp;quot;视频展示成功&amp;quot;}    //close {&amp;quot;state&amp;quot;:&amp;quot;close&amp;quot;,&amp;quot;isEnded&amp;quot;:true,&amp;quot;msg&amp;quot;:&amp;quot;视频广告关闭&amp;quot;}    //error {&amp;quot;state&amp;quot;:&amp;quot;error&amp;quot;,&amp;quot;isEnded&amp;quot;:false,&amp;quot;msg&amp;quot;:&amp;quot;视频广告错误&amp;quot;}    console.log(JSON.stringify(call),&amp;#039;createRewardedVideoAd&amp;#039;)    if(call.state == &amp;#039;close&amp;#039; &amp;amp;&amp;amp; call.isEnded){       //视频完整看完,进行发送奖励       console.log(&amp;#039;//视频完整看完,进行发送奖励&amp;#039;)    }else{       console.log(&amp;#039;//视频没看完&amp;#039;)    } })</code></pre> <h1>10.获取Access_token(服务端接口),用了接,不用不接</h1> <h2>10.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取access_token</p> <p><code>POST</code> <code>正式url: 域名/api/get_access_token</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.注意当前小程序的环境,接口网络请求https地址是否一致 2.服务端调用,小程序客户端存在代码泄露的可能 &lt;/div&gt;</p> <h2>10.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |appid |是  |string |当前小游戏appid   | |sign |是  |string |md5(appid+$secret_key),拼接字符串   |</p> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  sign里面的$secret_key是我们提供的加密密钥,不是小程序密钥 &lt;/div&gt;</p> <h2>10.3接口返回</h2> <pre><code class="language-javascript">{    &amp;quot;code&amp;quot;: 1,    &amp;quot;msg&amp;quot;: &amp;quot;success&amp;quot;,    &amp;quot;time&amp;quot;: &amp;quot;1570699736&amp;quot;,    &amp;quot;expire_time&amp;quot;: &amp;quot;1570699736&amp;quot;,//token过期时间    &amp;quot;data&amp;quot;: &amp;quot;-YNu_X95paOMRR1v7horGPfnEJ09ldMcgRrQFgI18uzJMzGAAtCYbWXpYkQQ1NHjsm8&amp;quot; //token }</code></pre> <h1>11.获取session_key(服务端接口),用了接,不用不接</h1> <h2>11.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取session_key</p> <p><code>POST</code> <code>正式url: 域名/api/ get_session_list</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.注意当前小程序的环境,接口网络请求https地址是否一致 2.服务端调用,小程序客户端存在代码泄露的可能 &lt;/div&gt;</p> <h2>11.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |appid |是  |string |当前小游戏appid   | |openid |是  |string |用户openid字符串,多个用英文逗号链接,(34D015FCDA78A87A07FA5CF3B5276532,34D015FCDA78A87A07FA5CF3B5276531)   | |sign |是  |string |md5(appid+$secret_key),拼接字符串   |</p> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  sign里面的$secret_key是我们提供的加密密钥,不是小程序密钥 &lt;/div&gt;</p> <h2>11.3接口返回</h2> <pre><code class="language-javascript">{     &amp;quot;code&amp;quot;: 1,     &amp;quot;msg&amp;quot;: &amp;quot;success&amp;quot;,     &amp;quot;time&amp;quot;: &amp;quot;1570699736&amp;quot;,   &amp;quot;data&amp;quot;:[ {&amp;quot;uid&amp;quot;:&amp;quot;34D015FCDA78A87A07FA5CF3B5276532&amp;quot;,&amp;quot;session_key&amp;quot;:&amp;quot;MFBTT2o1aExUSHF1Y1VBUg==&amp;quot;}, {&amp;quot;uid&amp;quot;:&amp;quot;34D015FCDA78A87A07FA5CF3B5276531&amp;quot;,&amp;quot;session_key&amp;quot;:null} ] }</code></pre> <h1>12.获取玩家基础信息</h1> <h2>12.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍获取玩家基础信息 1.是否是广告用户</p> <p><code>getUserData (function callback)</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 必须在调用完成getDybUserInfo()获取到用户openid之后在调用,不能并行 &lt;/div&gt;</p> <h2>12.2示例代码</h2> <pre><code class="language-javascript">dyb.getUserData(function(callback){ console.log(&amp;#039;getUserData-----&amp;#039;, JSON.stringify(callback)); })</code></pre> <h2>12.3接口返回</h2> <pre><code class="language-javascript">getUserData----- {&amp;quot;openid&amp;quot;:&amp;quot;okLyB5Y8qPCgXh1advQHaEhiXKk0&amp;quot;,&amp;quot;ad_flag&amp;quot;:1}</code></pre> <h2>12.4返回参数说明</h2> <p>|参数名|说明| |:----    |-----   | |opeind |用户openid   | |ad_flag |用户来源:0自然量 1广告量   |</p> <h1>13.小游戏礼包</h1> <p>&lt;div style=&quot;background: #EE5837;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 研发需提供礼包发货url交给我方配置才能调用 &lt;/div&gt;</p> <h2>13.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍小游戏礼包</p> <p>&lt;/div&gt;</p> <h2>13.2请求示例</h2> <pre><code class="language-javascript">{ &amp;quot;OrderId&amp;quot;: &amp;quot;r_123&amp;quot;, &amp;quot;IsPreview&amp;quot;: 1, &amp;quot;ToUserOpenid&amp;quot;: &amp;quot;to_user_openid&amp;quot;, &amp;quot;Zone&amp;quot; : 1001, &amp;quot;GiftTypeId&amp;quot; : 1, &amp;quot;GiftId&amp;quot; : &amp;quot;gift_id_xxx&amp;quot;, &amp;quot;SendTime&amp;quot; : 1583202600, &amp;quot;GoodsList&amp;quot;: [{ &amp;quot;Id&amp;quot;: &amp;quot;id_100001&amp;quot;, &amp;quot;Num&amp;quot;: 3 }] } </code></pre> <h2>13.3请求字段说明</h2> <p>|参数名|类型|说明| |:----    |:----- |-----   | |OrderId |string |当前小游戏appid   | |IsPreview |number |是否预览调试   | |ToUserOpenid |number |接收道具的玩家openid   | |Zone |number |分区。1001: iOS, 2001: Android、PC   | |GiftTypeId |number |发货礼包类型:1- 每日签到礼包 2- 周福利礼包 3-运营活动礼包 6-每日登录礼包 7-游戏圈活动礼包   | |GiftId |string |礼包 ID(可在 MP 配置好礼包,提前获取)   | |SendTime |number |玩家接收道具的时间   | |GoodsList |Array. |发货列表   | GoodsList:</p> <p>|参数名|类型|说明| |:----    |:----- |-----   | |Id |string |游戏道具id标识   | |Num |number |发送的道具数量   |</p> <h2>13.4研发需返回参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |ErrCode |是  |number |发送状态。0:成功,其他:失败   | |ErrMsg |否  |string |错误原因,用于调试。在errcode非0 的情况下可以返回   |</p> <h2>13.5返回示例</h2> <pre><code>{&amp;quot;ErrCode&amp;quot;:0,&amp;quot;ErrMsg&amp;quot;:&amp;quot;Success&amp;quot;}</code></pre> <h1>14.游戏、内容更新订阅</h1> <h2>14.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍游戏、内容更新订阅</p> <p><code>sysMsgTypeWhatsNew</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 1、需要在&lt;font color=&quot;red&quot;&gt;touchend 事件的回调&lt;/font&gt;中调用。 2、系统订阅消息只需要订阅一次,永久有效。 &lt;/div&gt;</p> <h2>14.2示例代码</h2> <pre><code class="language-javascript">dyb.sysMsgTypeWhatsNew( function (call) { console.log(&amp;#039;游戏内容更新订阅&amp;#039;, call); })</code></pre> <h2>14.3接口返回</h2> <pre><code class="language-javascript">{ &amp;quot;code&amp;quot;: 1, //(0订阅成功,1订阅成功, -1基础库版本不支持(从基础库 v2.32.1 版本开始支持,低版本调用会报错)) &amp;quot;msg&amp;quot;: &amp;quot;订阅成功&amp;quot; }</code></pre> <p>&lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 注意:只要订阅过就会返回{code: 1, msg: &quot;订阅成功&quot;},如果需要根据条件进行展示订阅,可以通过 [wx.getSetting](<a href="https://developers.weixin.qq.com/minigame/dev/api/open-api/setting/wx.getSetting.html">https://developers.weixin.qq.com/minigame/dev/api/open-api/setting/wx.getSetting.html</a> &quot;wx.getSetting&quot;) 接口可获取用户对相关模板消息的订阅状态。 判断 res.subscriptionsSetting的itemSettings 是否返回:SYS_MSG_TYPE_WHATS_NEW: &#039;accept&#039;。 &lt;/div&gt;</p> <h1>15.广告点上报</h1> <h2>15.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍广告点上报,看广告时调用</p> <p><code>adNameReward</code> &lt;/div&gt;</p> <h2>15.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |ad_name |是  |string |广告位名称   | |ad_is_reward |是  |int |是否获得广告奖励 0否,1是(只要看完广告就传1,没看完传0)   |</p> <h2>15.3示例代码</h2> <pre><code class="language-javascript">//广告未看完 let ad_data = { ad_name: &amp;#039;广告未看完&amp;#039;, ad_is_reward: 0, //0未获得奖励,1获得奖励,必传((点击了广告未看完传0)) } dyb.adNameReward(ad_data, function (callback) { console.log(&amp;#039;上报广告名称:&amp;#039; + JSON.stringify(callback)); }); //广告看完 let ad_data = { ad_name: &amp;#039;广告看完&amp;#039;, ad_is_reward: 1, //0未获得奖励,1获得奖励,必传((只要看完广告就传1)) } dyb.adNameReward(ad_data, function (callback) { console.log(&amp;#039;上报广告名称:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>15.4接口返回</h2> <pre><code class="language-javascript">上报广告名称:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1717141847&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>16.AB测试</h1> <p>&lt;div style=&quot;background: #EE5837;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  AB测试接口需先联系运营添加白名单,否则将不能调用。 &lt;/div&gt;</p> <h2>16.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍AB测试上报</p> <p><code>userBelongTest</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong>  1.&lt;font color=&quot;red&quot;&gt;建议&lt;/font&gt;在获取到openid后延迟3-5s在调用,&lt;font color=&quot;red&quot;&gt;必须在创角上报之前&lt;/font&gt;调用 2.上报&lt;font color=&quot;red&quot;&gt;当日新增用户&lt;/font&gt;,老用户无需上报 &lt;/div&gt;</p> <h2>16.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |belong_num |是  |Int(需&gt;=1的整数)如1,2,3... |AB测试id   |</p> <h2>16.3示例代码</h2> <pre><code class="language-javascript">//上报AB测试用户 let user_data = { belong_num: 1,//需&amp;gt;=1的整数如1,2,3... } dyb.userBelongTest(user_data, function (callback) { console.log(&amp;#039;上报Ab测试:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>16.4接口返回</h2> <pre><code class="language-javascript">上报Ab测试:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1717141847&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>17.玩家反馈</h1> <h2>17.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍玩家反馈上报</p> <p><code>userFeedback</code> &lt;/div&gt;</p> <h2>17.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |content |是  |string |玩家反馈内容(最长200)   | |mobile |否  |string |联系方式(最长12)   | |role_name |是  |string |角色名称   | |server_name |是  |string |区服名称   |</p> <h2>17.3示例代码</h2> <pre><code class="language-javascript">//玩家反馈 let user_feedback = { content: &amp;#039;玩家反馈内容&amp;#039;, mobile: &amp;#039;&amp;#039;, role_name: &amp;#039;游戏角色名称&amp;#039;, server_name: &amp;#039;游戏区服名称&amp;#039; } dyb.userFeedback(user_feedback, function (callback) { console.log(&amp;#039;玩家反馈:&amp;#039; + JSON.stringify(callback)); });</code></pre> <h2>17.4接口返回</h2> <pre><code class="language-javascript">//code:1成功,其他值失败,**失败时建议直接显示msg信息给玩家** 玩家反馈:{&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;反馈成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1740728532&amp;quot;,&amp;quot;data&amp;quot;:null} 玩家反馈:{&amp;quot;code&amp;quot;:0,&amp;quot;msg&amp;quot;:&amp;quot;请勿频繁反馈&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1740728550&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre>

页面列表

ITEM_HTML