开发者收到订单
<h4><strong>一、简要描述:</strong></h4>
<ol>
<li>开发者需提供<font color='red'>奖励接受接口</font>,用户触发领取奖励时,我方会实时反馈给贵方,推送的参数固定</li>
<li>当贵方返回结果为接受失败时,我方会尝试重推,默认每隔5分钟重推一次,最多重新发送3次请求</li>
<li>推送失败重新推送的订单是同一订单号,</font> <font color='red'>开发者需要排重处理</font>,不要重复发放奖励给用户</li>
<li>支持广告类型:CPA广告安装,CPA广告签到,唤醒广告,小程序广告,公众号广告,CPL广告,ASO广告,截图广告</li>
<li>请求头:content-type:application/x-www-form-urlencoded
接口统一使用的编码为:UTF-8</li>
</ol>
<h4><strong>二、请求方式:</strong></h4>
<ul>
<li>POST <br></li>
</ul>
<h4><strong>三、参数说明:</strong></h4>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">ocode</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>订单号 (媒体用该字段排重,一个订单号只允许发一次奖励),长度不超过50位</td>
</tr>
<tr>
<td style="text-align: left;">cid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>渠道id,幂动广告提供,跟sdk的appId字段一个意思</td>
</tr>
<tr>
<td style="text-align: left;">cuid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>用户方Id,在获取广告时开发者传入的字段,奖励发给该ID</td>
</tr>
<tr>
<td style="text-align: left;">devid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>用户设备码 (安卓:IMEI ,IOS:IDFA)</td>
</tr>
<tr>
<td style="text-align: left;">adid</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>任务Id</td>
</tr>
<tr>
<td style="text-align: left;">adname</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>任务名称</td>
</tr>
<tr>
<td style="text-align: left;">pkg</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>包名 唤醒广告和小程序广告可为空</td>
</tr>
<tr>
<td style="text-align: left;">adtype</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">int</td>
<td>任务类型0=CPA安装 1=CPA签到 2=唤醒广告 3=小程序广告 4=公众号 5=CPL广告,6=ASO广告,7=截图广告,9=看看赚,10=小说赚,12=快互动,13=快小说,14=快红包,15=快点点,16=app看视频</td>
</tr>
<tr>
<td style="text-align: left;">minitype</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>小程序任务类型0=签到 1=普通 2=分享 3=激励视频</td>
</tr>
<tr>
<td style="text-align: left;">time</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>时间戳</td>
</tr>
<tr>
<td style="text-align: left;">points</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>积分(用户获得的奖励数值,跟媒体app的货币单位相关) 用户下载app拿到奖励1元,如果开发者应用里面货币单位是元,那么points=1,如果开发者应用里面单位是金币(1元=1000金币)points=1000,货币单位在开发者后台可以配置,<font color='red'>不可改动</font></td>
</tr>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>签名 (MD5加密串,详见下方)</td>
</tr>
<tr>
<td style="text-align: left;">uprice</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">double</td>
<td>用户收入(单位:元)该字段可方便媒体统计,实际奖励已points为准</td>
</tr>
<tr>
<td style="text-align: left;">dprice</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">double</td>
<td>开发者收入(单位:元)开发者的利润=dprice-uprice,开发者在幂动开发者后台看到的收入统计是dprice的统计,部分业务会以审核结算数据为准,此数据仅供参考</td>
</tr>
<tr>
<td style="text-align: left;">appid</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td><font color='red'>cpa广告唯一id,已废弃</font></td>
</tr>
</tbody>
</table>
<p><strong>备注</strong>:</p>
<ul>
<li>加密算法: key由幂动广告方提供,获取MD5串的小写,从索引10位置取10位长度作为sign</li>
<li>md5str= MD5(ocode + cid +cuid+ devid + adid+ adname +pkg+adtype+ time + points + key).ToLower()</li>
<li>sign= md5str .Substring(10, 10);不同开发语言substring处理方式可能不同,做以下说明:从第11个字符开始(包括第11个字符)截取长度10的字符串 例如 12345678908888888888abcd.substring(10,10)=8888888888</li>
<li>请求结果需返回json,status=1表示请求成功,例如:<code>{"status":1,"msg":"ok"}</code></li>
<li><strong>开发者后台地址:</strong> <a href="http://app.midongtech.com">http://app.midongtech.com</a> 账号密码请联系幂动广告方提供,后台可自行配置回调链接测试
<br></li>
</ul>
<h5><strong>开发者接受订单后返回结果示例:</strong></h5>
<p>接收成功:<font color='green'><code>{"status":1,"msg":"ok"}</code></font>
接收失败:<font color='green'><code>{"status":0,"msg":"失败原因"}</code></font>
<br></p>
<h4><strong>四、postman调试参考代码:</strong></h4>
<p>body部分</p>
<pre><code class="language-javascript">ocode:test123456
cid:{{cid}}
cuid:11110
devid:864824030928913
adid:10001
adname:测试小程序
pkg:
time:15464233341
points:0.01
adtype:3
sign:{{sign}}
minitype:1</code></pre>
<p>pre-request-script部分</p>
<pre><code class="language-javascript">var cid = 'xxx';//幂动广告分配
var key = 'xxxxxx';//幂动广告分配
//md5str= MD5(ocode + cid +cuid+ devid + adid+ adname +pkg+adtype+ time + points + key).ToLower();
var v= request.data['ocode'] + cid + request.data['cuid'] + request.data['devid'] + request.data['adid'] + request.data['adname'] + request.data['pkg'] + request.data['adtype'] + request.data['time'] + request.data['points'] + key
var sign = CryptoJS.MD5(v).toString();
console.log(v)
console.log(sign)
sign = sign.substr(10,10);
console.log(sign);
postman.setGlobalVariable("cid", cid);
postman.setGlobalVariable("sign", sign);</code></pre>
<p><strong>java接入参考代码:</strong>
//AD_KEY是由幂动广告提供的key</p>
<pre><code class="language-java">//AD_KEY是由幂动广告提供的key
public String processCallBack(String ocode, Integer cid, String cuid, String devid, String adid, String adname, String pkg, Integer adtype, String time, String points, String sign, HttpServletRequest request) {
// 1. 校验MD5数据内容
String parameter = ocode + "" + cid + "" + cuid + devid + adid + adname + pkg + "" + adtype + "" + time + "" + points + "" + AD_KEY;
// 小写比较
String md5Result = MD5Util.encodeByMD5(parameter).toLowerCase().substring(10, 20);
//参数错误
if (ocode == null || points == null || sign == null || adtype == null) {
}
// md5校对结果
boolean md5flag = md5Result.equals(sign.toLowerCase());
//数据校验成功
if (md5flag) {
}
//数据校验失败
else {
}
}</code></pre>