CPS上报接口文档
<p>[TOC]</p>
<h1>文档介绍</h1>
<p>数据上报CPS接口。接入前先在CPS后台添加对应的游戏appid,提供生成加密密钥 secret_key。
接口主域名为 <code>https://cps.moyangmoyang.com</code>
全部采用POST请求,请求必须有加密签名,支持JSON和表单格式</p>
<h1>签名加密</h1>
<pre><code>1)参数名进行升序排序后
2)sha1(源字符串+&#039;&amp;secret_key=&#039;+secret_key)生成签名sign
3) 生成的签名小写,无需转换
提供加密代码实例:
PHP代码:
function check_sign(data, secret_key) {
let keys = Object.keys(data);
keys.sort();
let tmp = [];
for (let i = 0; i &lt; keys.length; i++) {
tmp.push(keys[i] + &#039;=&#039; + data[keys[i]]);
}
console.log(tmp.join(&#039;&amp;&#039;));
let str = tmp.join(&#039;&amp;&#039;) + &#039;&amp;secret_key=&#039; + secret_key;
let sign = md5(str);
console.log(sign);
}</code></pre>
<h1>返回格式</h1>
<p> 正常响应code为1:{"code":1,"msg":"ok","time":1574923247,"data":[]}
错误响应code为0:{"code":0,"msg":"error","time":1574923247,"data":[]}</p>
<h1>1.上报注册用户信息(必须首先上报)</h1>
<p><div style="background: #fda7b4;padding: 12px; border-radius: 8px; color: #000;">⚡ <strong>注意</strong>
必须上报,必须首先上报这个
</div></p>
<h2>1.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍上报第一次进入游戏的新用户,account_id和其他信息
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/userinfo</code>
</div>
<div style="background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;">⚠️ <strong>注意</strong>
后续接口依赖于已存在的用户数据,所以此接口必须先完成上报才能接入后续上报
</div></p>
<h2>1.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|account_id |是 |string |玩家openid(唯一) |
|game_appid |是 |string | 游戏appid |
|channel_id |是 |string | 主渠道(场景值),没有填默认值(空间玩吧填写 wanba,小游戏填写场景值) |
|sub_channel_id |是 |string | 子渠道,没有填默认值test_sub_channel_id (空间玩吧填写 平台pf值【例如wanba_ts.9、weixin.95】) |
|shareid |是 |string | 通过哪个用户的分享进来,分享用户的account_id,没有传0 |
|sign |是 |string | 生成签名 |</p>
<h2>1.3示例代码</h2>
<p>密钥:uIwdb8zNNxdY7KWe(示例)</p>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276523&quot;,&quot;channel_id&quot;:&quot;wanba&quot;,&quot;sub_channel_id&quot;:&quot;wanba_ts.121&quot;,&quot;shareid&quot;:&quot;0&quot;,&quot;sign&quot;:&quot;a40dd81454f1bc71f162238513b72248608151fd&quot;}</code></pre>
<h1>2.登录活跃信息上报</h1>
<h2>2.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍用户每次打开登陆游戏时候上报
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/login</code>
</div>
<div style="background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;">⚠️ <strong>注意</strong>
如果是当天注册的新用户,只需上报注册api/web/userinfo信息即可,无需再调用此接口
</div></p>
<h2>2.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string |玩家openid(唯一) |
|channel_id |是 |string | 主渠道(场景值),没有填默认值(空间玩吧填写 wanba, 小程序填写场景值) |
|sub_channel_id |是 |string | 子渠道,没有填默认值test_sub_channel_id (空间玩吧填写 平台pf值【例如wanba_ts.9、weixin.95】) |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>2.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276523&quot;,&quot;channel_id&quot;:&quot;wanba&quot;,&quot;sub_channel_id&quot;:&quot;wanba_ts.121&quot;,&quot;shareid&quot;:&quot;0&quot;,&quot;sign&quot;:&quot;a40dd81454f1bc71f162238513b72248608151fd&quot;}</code></pre>
<h1>3.创建角色信息上报</h1>
<h2>3.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍用户创建角色时上报,只需上报游戏内第一次创角
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/create_role</code>
</div></p>
<h2>3.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|role_id |是 |string |角色ID (若无角色唯一id,则传account_id) |
|nickname |是 |string | 角色名称 |
|server_id |是 |int | 区服ID |
|server_name |是 |string | 区服名称 |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>3.3示例代码</h2>
<pre><code class="language-javascript">{&quot;role_id&quot;:&quot;111&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;server_id&quot;:&quot;10&quot;,&quot;server_name&quot;:&quot;游戏一服&quot;,&quot;nickname&quot;:&quot;昵称&quot;,&quot;sign&quot;:&quot;a8e3dd1dce43a05bc0ba673a164fe277017e5951&quot;}</code></pre>
<h1>4.在线时长上报</h1>
<h2>4.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍统计在线时长(用户打开到退出的停留时长)
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/timing</code>
</div></p>
<h2>4.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|timing |是 |int |在线时长(秒)可以分片上传,可以退出后一次性传,同用户后台会自动累加 |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>4.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;timing&quot;:100,&quot;sign&quot;:&quot;e05c4a1847b6ee053e4cb9714122e6936e5ab826&quot;}</code></pre>
<h1>5.分享成功上报</h1>
<h2>5.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍统计分享次数
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/share</code>
</div></p>
<h2>5.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>5.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;sign&quot;:&quot;697da02d9fe47d3249bc96860bbd2cbf0bdab1f7&quot;}</code></pre>
<h1>6.支付成功订单上报</h1>
<h2>6.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍支付成功的订单上报
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/order</code>
</div>
<div style="background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;">⚠️ <strong>注意</strong>
必须是支付成功的才上报,未支付成功的不要上报,做好筛选
</div></p>
<h2>6.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|goods_count |是 |int | 商品数量 |
|goods_name |是 |string | 商品名称 由接入方提供 如:元宝 |
|goods_identifier |是 |string | 商品ID |
|pay_amount |是 |int | 支付金额(元) 由接入方提供 如:1.0元 |
|order_sn |是 |string | 订单编号(游戏方生成的订单号) |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|role_id |是 |string | 角色ID,没有就乱写一个 |
|role_name |是 |string | 角色名称 |
|server_id |是 |string | 区服ID |
|server_name |是 |string | 区服名称 |
|sign |是 |string | 生成签名 |</p>
<h2>6.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;goods_count&quot;:&quot;1&quot;,&quot;goods_name&quot;:&quot;元宝&quot;,&quot;pay_amount&quot;:&quot;1&quot;,&quot;role_id&quot;:&quot;10&quot;,&quot;role_name&quot;:&quot;角色名&quot;,&quot;server_id&quot;:&quot;10&quot;,&quot;server_name&quot;:&quot;游戏一服&quot;,&quot;order_sn&quot;:&quot;20191018111114110&quot;,&quot;sign&quot;:&quot;c58afbace59e20ba93bcba92c97888600eb0c9c5&quot;}</code></pre>
<h1>7.关卡等级上报</h1>
<h2>7.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍关卡等级或者分数记录上报
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/game_level</code>
</div></p>
<h2>7.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|level |是 |int | 等级或者积分 |
|sign |是 |string | 生成签名 |</p>
<h2>7.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,”level”:1,&quot;sign&quot;:&quot;697da02d9fe47d3249bc96860bbd2cbf0bdab1f7&quot;}</code></pre>
<h1>8.订阅记录上报(没接订阅接口不用接)</h1>
<h2>8.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍订阅用户信息接口上报
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/subscribe</code>
</div></p>
<h2>8.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>8.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;sign&quot;:&quot;697da02d9fe47d3249bc96860bbd2cbf0bdab1f7&quot;}</code></pre>
<h1>9.视频广告点击</h1>
<h2>9.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍广告show出来的时候上报
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/video_click</code>
</div></p>
<h2>9.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>9.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;sign&quot;:&quot;697da02d9fe47d3249bc96860bbd2cbf0bdab1f7&quot;}</code></pre>
<h1>10.视频广告关闭</h1>
<h2>10.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍广告close的时候上报
<code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/watch</code>
</div></p>
<h2>10.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string | 游戏appid |
|account_id |是 |string | account_id |
|sign |是 |string | 生成签名 |</p>
<h2>10.3示例代码</h2>
<pre><code class="language-javascript">{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;account_id&quot;:&quot;34D015FCDA78A87A07FA5CF3B5276533&quot;,&quot;sign&quot;:&quot;697da02d9fe47d3249bc96860bbd2cbf0bdab1f7&quot;}</code></pre>
<h1>11.打点上报</h1>
<h2>11.1接口说明</h2>
<p><div style="background: #9efca6;padding: 12px; border-radius: 8px; color: #000;">✍游戏埋点
一、埋点流程:
大厅玩家点击游戏icon拉起下载--服务器下载资源包--下载完成进行安装--游戏窗口启动--进入选服界面--玩家创角--创角成功--进入游戏主界面。
二、步骤解释:
1、启动器下载(即玩家在大厅点击下载开始就算)
2、下载资源包(有下载器则视为下载win包,若直接是win包则从更新资源算起)
3、拉起游戏窗体(下载器游戏即为游戏在电脑界面窗口模式展开,win包则按游戏更新完资源开启窗口为节点计算)
4、选服、创角(顾名思义,进入此步骤则打点计算流失率)</p>
<p><code>url:</code>
<code>https://cps.moyangmoyang.com/api/web/dot_record</code>
</div></p>
<h2>11.2参数说明</h2>
<p>|参数名|必选|类型|说明|
|:---- |:---|:----- |----- |
|game_appid |是 |string | 游戏appid |
|key |是 |string | 打点上报关键字,见下方说明 |
|sign |是 |string | 生成签名 |</p>
<h2>11.3key说明</h2>
<p>|节点说明|对应传递的key值|
|:---- |----- |
|启动器下载 | download |
|开始loading(下载资源包) | start_loading |
|结束loading(下载完成) |end_loading |
|拉起游戏窗体 |start_up |
|进入选服界面 |server_list |
|显示创角选角页面 |role_list |
|创角成功 |create_role |
|成功进入开始游戏 |play |
<div style="background: #FFE4B5;padding: 12px; border-radius: 8px; color: #000;">⚠️ <strong>注意</strong>
下方自定义key节点需要先接入完打点数据返回成功之后,联系运营添加白名单才能接入
key的节点可自定义,
比如:加载20%->key1,加载40%->key2,加载60%->key3,加载80%->key4,加载100%->key5
</div>
<strong>自定义key说明:</strong></p>
<p>|节点说明|对应传递的key值|
|:---- |----- |
|自定义key1 | key1 |
|自定义key2 | key2 |
|自定义key3 |key3 |
|自定义key4 |key4 |
|自定义key5 |key5 |</p>
<h2>11.4示例</h2>
<pre><code>下载节点的传送参数
{&quot;game_appid&quot;:&quot;1108007508&quot;,&quot;key&quot;:&quot;download&quot;,&quot;sign&quot;:&quot;db6d4938e7a96b545d219d962b85bd564525ae81&quot;}</code></pre>