米迪积分墙积分回调接口规范

发表时间:2014-12-31

米迪广告积分墙系统在终端用户通过积分墙(不包括积分墙下面的的推荐无积分应用)下载应用,并且按照说明完成相关的操作, 成功获得积分后,米迪广告积分墙系统将可以通过回调接口,通知开发者的服务器操作已经成功:


应用服务器端需要一个接收回调的接口,此接口需要处理以下的参数,米迪服务器将以标准的http GET方式请求此接口


     id: 赚取积分的广告id;

trand_no:  交易流水号,唯一id;

   cash:  此次操作赚取的积分数量; cash=广告价格×应用和汇率;

   imei: 安卓平台为手机imei, iOS为手机mac地址, 如果是iOS 7.0以上的系统, 则是个该手机的idfa, 由于手机的idfa在特殊请情况下会发生改名改变,因此建议看开发者使用param0自定义参数来标识内部系统的唯一值;

bundleId: 赚取积分的广告的唯一标识,例如唯品会为 com.vipshop.ipad ;

 param0: 应用通过SDK上传的自定义参数;

 appName: 安装的应用的名称;

scoreType积分类型,0:安装,1:签到;

   sign: 签名字符串,签名算法如下:

   StringBuffer sign=  new StringBuffer();

      sign.append(id).append(trand_no).append(cash).append(param0==null?"":param0).append(key);

   key: 积分积分墙的回调key,注意:不是应用密钥

  最后用md5计算sign的值   sign = md5(sign);

说明: 此处的回调只有是用户通过米迪积分墙下载,安装,并且完成积分墙说明里面相应的动作后,才会回调; 通过SDK接口直接增加,减少积分操作不会回调;

  注: (1)系统如果没有收到开发者服务器的正确应答, 可能会多次重试操作。因此开发应该根据 trand_no: 交易流水号做排重处理;    

     (2)应用必须是在通过审核的的状态下,米迪服务器才会对这个应用ID下面积分墙产生的CPA做回调处理    


下面是如何设置积分墙回调地址以及查看积分墙回调key的截图



返回值

  1. 米迪服务器会根据开发者服务器返回的http状态码(http_code)来判断该进行什么样的操作,正常情况收到的http状态码应该是200。

  2. 如果是200,表示开发者服务器正常接收到信息并且正常处理了。

  3. 如果超时、或收到的不是200,重试中间层的服务器就会放在下一次循环请求开发者服务器。

  4. 下一次循环请求开发者服务器会有一定的延迟,延迟分别为:2分, 4分, 8, 16, 32(距离上一次发送)。米迪最多将发送5次请求,若5次请求全部失败,则该请求将被丢弃。

  5. 因为网络等问题,开发者服务器可能会接收到订单号完全相同的多条记录,这时开发者服务器需要把重复的丢失。


 

附录: md5算法

   import java.security.MessageDigest;

   import java.security.NoSuchAlgorithmException;

 


private  static String md5(String str) throws Exception {  

       MessageDigest messageDigest = null;  
 
       try {  
           messageDigest = MessageDigest.getInstance("MD5");  
           messageDigest.reset();    
           messageDigest.update(str.getBytes("UTF-8"));  
           byte[] byteArray = messageDigest.digest();  
           StringBuffer md5StrBuff = new StringBuffer();  
           for (int i = 0; i < byteArray.length; i++) {              
               if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)  
                   md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));  
               else  
                   md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));  
           }  
           logger.debug("md5 src:{}, dst:{}", str, md5StrBuff.toString());
           return md5StrBuff.toString();  

       } catch (NoSuchAlgorithmException e) {  
           logger.error("NoSuchAlgorithmException caught!");  
       } catch (UnsupportedEncodingException e) {  
           e.printStackTrace();  
       }        
       throw new Exception("
md5 failed!");    
}



公告

Copyright©2011.miidi.net.ALL Rights Reserved鄂ICP备11004134号-1