接口文档

冰柠乐接口文档


抖音小游戏接口上报文档

<p>[TOC]</p> <h1>注意</h1> <p>&lt;div style=&quot;background: #fda7b4;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;1、抖音小游戏接口上报,供无法使用js SDK的使用 2、如果能使用js SDK接入,建议接入[抖音小游戏SDK文档](<a href="https://cps.moyangmoyang.com/b6791bnlwiki/douyin">https://cps.moyangmoyang.com/b6791bnlwiki/douyin</a> &quot;抖音小游戏SDK文档&quot;) &lt;/div&gt;</p> <h1>介绍</h1> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;抖音小游戏CPS上报接口。 接入前需要运营先在CPS后台添加对应的游戏appid,提供生成加密密钥 secret_key,研发才能进行后续接入。</p> <p>接口主域名为 <code>https://cps.moyangmoyang.com</code></p> <p>全部采用POST请求,请求必须有加密签名,支持JSON和表单格式 &lt;/div&gt;</p> <h1>签名加密</h1> <p>1)参数名进行升序排序后 2)md5(源字符串+&#039;&amp;secret_key=&#039;+secret_key)生成签名sign 3) 生成的签名小写,无需转换 提供加密代码实例:</p> <p>(1)  PHP代码:</p> <pre><code class="language-php">ksort($data); $tmp=array(); foreach ($data as $k =&amp;gt; $v) { $tmp[] = $k . &amp;#039;=&amp;#039; . $v; } $str = implode(&amp;#039;&amp;amp;&amp;#039;, $tmp) . &amp;#039;&amp;amp;secret_key=&amp;#039;.$secret_key; $realSign = md5($str); return $realSign;</code></pre> <p>(2)js代码:</p> <pre><code class="language-javascript">function check_sign(data, secret_key) { let keys = Object.keys(data); keys.sort(); let tmp = []; for (let i = 0; i &amp;lt; keys.length; i++) { tmp.push(keys[i] + &amp;#039;=&amp;#039; + data[keys[i]]); } console.log(tmp.join(&amp;#039;&amp;amp;&amp;#039;)); let str = tmp.join(&amp;#039;&amp;amp;&amp;#039;) + &amp;#039;&amp;amp;secret_key=&amp;#039; + secret_key; let sign = md5(str); console.log(sign); }</code></pre> <h1>1.上报注册用户信息(必须,首先上报)</h1> <p>&lt;div style=&quot;background: #fda7b4;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚡ <strong>注意</strong> 必须上报,必须首先上报这个 &lt;/div&gt;</p> <h2>1.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍上报第一次进入游戏的新用户,account_id和其他信息</p> <p><code>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/userinfo</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>1.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |account_id |是  |string |玩家openid,小游戏服务器从抖音服务器获取   | |game_appid |是  |string | 游戏appid   | |channel_id     |是  |string | 场景值,通过[tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;)获取场景值scene,&lt;span style=&quot;color:red&quot;&gt;空的话默认test_channel_id&lt;/span&gt;    | |sub_channel_id     |是  |string | 通过 [tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;)里面的 query 字段获取到链接上的promotionid,&lt;span style=&quot;color:red&quot;&gt;空的话默认test_sub_channel_id&lt;/span&gt;&gt;&gt;&gt;&gt;&gt;&gt;字段详情看备注    | |dy_click_id     |是  |string | 通过 [tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;) 里面的 query 字段获取到链接上的clickid,&lt;span style=&quot;color:red&quot;&gt;空的话就传空&lt;/span&gt;&gt;&gt;&gt;&gt;&gt;&gt; 字段详情看备注    | |dyadid     |是  |string | 通过 [tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;) 里面的 query 字段获取到链接上的dyadid,&lt;span style=&quot;color:red&quot;&gt;空的话就传空&lt;/span&gt;&gt;&gt;&gt;&gt;&gt;&gt; 字段详情看备注    | |shareid     |是  |string | 通过哪个用户的分享进来,分享用户的account_id,没有传0    | |sign     |是  |string | 生成签名    |</p> <p><strong>字段备注</strong> 获取启动参数示例: C#:[获取启动参数](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/guide/game-engine/rd-to-SCgame/unity-game-access/sc_stark_sdk#e939bf70">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/guide/game-engine/rd-to-SCgame/unity-game-access/sc_stark_sdk#e939bf70</a> &quot;获取启动参数&quot;) Js:[获取启动参数](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;获取启动参数&quot;)</p> <p>sub_channel_id字段详情:开发人员可以通过[tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;) 里面的 query 字段获取到链接上的&lt;span style=&quot;color:red&quot;&gt;promotionid&lt;/span&gt;参数。<strong>只有通过广告进来的用户,query中才会有promotionid参数</strong>,空的话默认test_sub_channel_id</p> <p>dy_click_id字段详情:开发人员可以通过 [tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;)里面的 query 字段获取到链接上的&lt;span style=&quot;color:red&quot;&gt;clickid&lt;/span&gt;参数。<strong>只有通过广告进来的用户,query中才会有clickid参数</strong>,空的话默认就传空</p> <p>dyadid字段详情:开发人员可以通过 [tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;) 里面的 query 字段获取到链接上的&lt;span style=&quot;color:red&quot;&gt;dyadid&lt;/span&gt;参数。<strong>只有通过广告进来的用户,query中才会有dyadid参数</strong>,空的话默认就传空</p> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;query中promotionid、clickid和dyadid参数示例:(可将下面的启动参数信息填入到抖音开发工具-启动链接,测试是否能正确获取对应字段参数)👇👇👇👇👇 &lt;/div&gt;</p> <pre><code>//启动参数 promotionid=test123456&amp;amp;clickid=B.DP2lmE6safpTcaQjcXoCE88ue16QFcCAj8ypLQv1vidmDTf2gkSR3QYBjOgOfEByyohY1whsRdszj8RIDAc2eTWjEzqP2DFfMVs8mOrZeamkYdUQ6oRrv414tukI1Nabcd&amp;amp;dyadid=1</code></pre> <h2>1.3示例代码</h2> <p>密钥:giITuVRdZOL987ocR5</p> <pre><code class="language-javascript">{    &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,    &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,    &amp;quot;channel_id&amp;quot;: &amp;quot;990001&amp;quot;,    &amp;quot;sub_channel_id&amp;quot;: &amp;quot;test123456&amp;quot;,    &amp;quot;dy_click_id&amp;quot;: &amp;quot;B.DP2lmE6safpTcaQjcXoCE88ue16QFcCAj8ypLQv1vidmDTf2gkSR3QYBjOgOfEByyohY1whsRdszj8RIDAc2eTWjEzqP2DFfMVs8mOrZeamkYdUQ6oRrv414tukI1Nabcd&amp;quot;,    &amp;quot;dyadid&amp;quot;: &amp;quot;1&amp;quot;,    &amp;quot;shareid&amp;quot;: &amp;quot;0&amp;quot;,    &amp;quot;sign&amp;quot;: &amp;quot;2d24d5f3d8e84e9b3357ede240d95e89&amp;quot; }</code></pre> <h2>1.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;用户已经上报&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1721272806&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>2.登陆活跃信息上报(必须)</h1> <h2>2.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍用户每次打开登陆游戏时候上报</p> <p><code>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/login</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>2.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |game_appid |是  |string |游戏appid   | |channel_id |是  |string | 场景值,通过[tt.getLaunchOptionsSync](<a href="https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync">https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/foundation/system/lifecycle/tt-get-launch-options-sync</a> &quot;tt.getLaunchOptionsSync&quot;)获取场景值scene,空的话默认test_channel_id    | |sub_channel_id     |是  |string | 默认test_sub_channel_id    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |string | 生成签名    |</p> <h2>2.3示例代码</h2> <pre><code class="language-javascript">{     &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,     &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,     &amp;quot;channel_id&amp;quot;: &amp;quot;990001&amp;quot;,     &amp;quot;sub_channel_id&amp;quot;: &amp;quot;test_sub_channel_id&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;d759f65fc676bfbcb33feb4e871a3f04&amp;quot; }</code></pre> <h2>2.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:0,&amp;quot;msg&amp;quot;:&amp;quot;登录已上报&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1724053440&amp;quot;,&amp;quot;data&amp;quot;:null}</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> <p><code>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/create_role</code> &lt;/div&gt;</p> <h2>3.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |role_id |是  |string |角色ID (若无角色唯一id,则传account_id)   | |nickname |是  |int | 角色名称    | |server_id     |是  |int | 区服ID,没有填个默认数字    | |server_name     |是  |string | 区服名称,没有填个默认名称    | |game_appid     |是  |string | 游戏appid    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |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;✍激励视频广告点击上报</p> <p><code>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/video_click</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 1.只上报激励视频 2.广告show出来的时候上报 &lt;/div&gt;</p> <h2>4.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |game_appid     |是  |string | 游戏appid    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |string | 生成签名    |</p> <h2>4.3示例代码</h2> <pre><code class="language-javascript">{     &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,     &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;81a572e5a0365756fa3be3dc758f4193&amp;quot; }</code></pre> <h2>4.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1721272731&amp;quot;,&amp;quot;data&amp;quot;:null}</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>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/watch</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 1.只上报激励视频 2.广告完整看完的时候上报 &lt;/div&gt;</p> <h2>5.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |game_appid     |是  |string | 游戏appid    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |string | 生成签名    |</p> <h2>5.3示例代码</h2> <pre><code class="language-javascript">{     &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,     &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;81a572e5a0365756fa3be3dc758f4193&amp;quot; }</code></pre> <h2>5.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1721272731&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre> <h1>6.在线时长上报</h1> <h2>6.1接口说明</h2> <p>&lt;div style=&quot;background: #9efca6;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;✍统计在线时长(用户打开到退出的停留时长)</p> <p><code>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/timing</code> &lt;/div&gt; &lt;div style=&quot;background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;&quot;&gt;⚠️ <strong>注意</strong> 1.大于等于60秒才上报 2.可以分片上传,可以退出后一次性传,同用户后台会自动累加 &lt;/div&gt;</p> <h2>6.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |timing     |是  |int | 在线时长(秒),大于等于60秒才上报,可以分片上传,可以退出后一次性传,同用户后台会自动累加    | |game_appid     |是  |string | 游戏appid    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |string | 生成签名    |</p> <h2>6.3示例代码</h2> <pre><code class="language-javascript">{     &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,     &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,     &amp;quot;timing&amp;quot;: &amp;quot;100&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;5632a6667cd3a3a0295bd8b79090e14e&amp;quot; }</code></pre> <h2>6.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1721272731&amp;quot;,&amp;quot;data&amp;quot;:null}</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;✍统计分享次数(用户分享成功就上报)</p> <p><code>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/share</code> &lt;/div&gt;</p> <h2>7.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |game_appid     |是  |string | 游戏appid    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |string | 生成签名    |</p> <h2>7.3示例代码</h2> <pre><code class="language-javascript">{     &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,     &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,     &amp;quot;sign&amp;quot;: &amp;quot;5632a6667cd3a3a0295bd8b79090e14e&amp;quot; }</code></pre> <h2>7.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1721272731&amp;quot;,&amp;quot;data&amp;quot;:null}</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>url:</code> <code>https://cps.moyangmoyang.com/api/dygame/game_level</code> &lt;/div&gt;</p> <h2>8.2参数说明</h2> <p>|参数名|必选|类型|说明| |:----    |:---|:----- |-----   | |level     |是  |int | 等级或者积分    | |game_appid     |是  |string | 游戏appid    | |account_id     |是  |string | 玩家openid,小游戏服务器从抖音服务器获取    | |sign     |是  |string | 生成签名    |</p> <h2>8.3示例代码</h2> <pre><code class="language-javascript">{     &amp;quot;game_appid&amp;quot;: &amp;quot;ttestdouyin&amp;quot;,     &amp;quot;account_id&amp;quot;: &amp;quot;34D015FCDA78A87A07FA5CF3B5276523&amp;quot;,     &amp;quot;level&amp;quot;: 1,     &amp;quot;sign&amp;quot;: &amp;quot;09cb34efd7a81ee8f32abc5cf657336c&amp;quot; }</code></pre> <h2>8.4接口返回</h2> <pre><code class="language-javascript">Callback: {&amp;quot;code&amp;quot;:1,&amp;quot;msg&amp;quot;:&amp;quot;成功&amp;quot;,&amp;quot;time&amp;quot;:&amp;quot;1721272731&amp;quot;,&amp;quot;data&amp;quot;:null}</code></pre>

页面列表

ITEM_HTML