Advert.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 小米平台的广告
  7. * https://api.e.mi.com/doc.html#/1.0.0-mdtag9b26f-omd/document-f0283649125f62138db43c6f5fc25686
  8. */
  9. class Advert extends Api
  10. {
  11. protected $noNeedLogin = ['*'];
  12. protected $noNeedRight = ['*'];
  13. public function index(){
  14. $list = Db::name('yimi_advert')->order('id desc')->page($this->page,100)->select();
  15. foreach($list as $key => &$val){
  16. $val['createdate'] = date('Y-m-d H:i:s',$val['createtime']);
  17. //dump($val);
  18. }
  19. dump($list);
  20. }
  21. //异或加密,解密
  22. public function xor_enc($str,$key)
  23. {
  24. $crytxt = '';
  25. $keylen = strlen($key);
  26. for($i=0;$i<strlen($str);$i++)
  27. {
  28. $k = $i%$keylen;
  29. $crytxt .= $str[$i] ^ $key[$k];
  30. }
  31. return $crytxt;
  32. }
  33. //文档参数测试加密
  34. /*public function test(){
  35. $str = 'imei=91b9185dba1772851dd02b276a6c969e&oaid=5fb96f268628810c&conv_time=1504687208890&client_ip=127.0.0.1&ua=Dalvik%2F2.1.0+%28Linux%3B+U%3B+Android+11%3B+M2012K11AC+Build%2FRKQ1.200826.002%29&sign=c5f2f40d2355c3a8cc65a3b2d0dc9b72';
  36. $key = 'AchcmaxVksLhPGjA';
  37. $crytxt = $this->xor_enc($str,$key);
  38. $a = urlencode(base64_encode($crytxt));
  39. $b = 'KA4NClBYSTRSQnRdNCULcHZUWltYUBwyW0EuWmdxC3ciWl5aCEcXNwIXcV02JVN3J1FeW1tTQG5aQy9OMygENx4XAQ4IXEljW0d6UGd1Wnl5WlhFDg0RMwUHEwEgeltzdk1YTV1PSXAeEnEsMSscKCpGWiVfT0l4W1hpWmgLAy80G01QL0otc1gxZyk%2BIxguKAdDUlxESxRAPn5YYXUhcHAiK0gvFBE6D1Z%2BLgIMO3BvUVhTVVNOeFtDfk1ifkwyKAQGXg5UHmQNR3wMYnRfdCJQCVsOAk5jCkAuWjR3DiJ4AV9R';
  40. dump($a === $b);
  41. }*/
  42. //APP 转化数据统计方案(即:APP 上报对接方案): 广告主上报激活数据,亿米平台搭建服务系统关联点击&下载数据和广告主提供的所有激活数据,将激活数据归因到对应广告。
  43. public function indextest(){
  44. //http://trail.e.mi.com/global/log?appId={appid}&info={data}&conv_type={convType}&customer_id={customerId}
  45. $api_url = 'http://trail.e.mi.com/global/log?';
  46. $api_url_test = 'http://trail.e.mi.com/global/test?';
  47. //应用id 1453045
  48. //秘钥A(encrypt_key):ZxdIaVHvFqSQYzWD
  49. //秘钥B(sign_key):uaeWeunykLRnkyLw
  50. $sign_key = 'uaeWeunykLRnkyLw'; //真的
  51. $encrypt_key = 'ZxdIaVHvFqSQYzWD';//真的
  52. $appid = '1453045';
  53. $conv_type = 'APP_REGISTER';
  54. $customer_id = '292232';
  55. //推荐模式
  56. /*$imei = md5('imei');
  57. $data = [
  58. 'imei' => '91b9185dba1772851dd02b276a6c969e',
  59. 'oaid' => '5fb96f268628810c',
  60. 'conv_time' => '1504687208890',
  61. 'client_ip' => '127.0.0.1',
  62. 'ua' => 'Dalvik/2.1.0 (Linux; U; Android 11; M2012K11AC Build/RKQ1.200826.002)',
  63. ];*/
  64. //采用模式
  65. $ua = input('ua','','trim');
  66. if(empty($ua)){
  67. $this->error();
  68. }
  69. $data = [
  70. 'conv_time' => time().substr(microtime(),2,3),
  71. 'client_ip' => request()->ip(),
  72. 'ua' => $ua,
  73. ];
  74. $data_query = http_build_query($data);
  75. //dump($data_query);
  76. $property = $sign_key.'&'.urlencode($data_query);
  77. //dump($property);
  78. $signature = md5($property);
  79. //dump($signature);
  80. $base_data = $data_query .'&sign='.urlencode($signature);
  81. //echo $base_data;
  82. $info = urlencode(base64_encode($this->xor_enc($base_data, $encrypt_key)));
  83. //dump($info);
  84. $request_url = $api_url.'appId='.$appid.'&info='.$info.'&customer_id='.$customer_id.'&conv_type='.$conv_type;
  85. //echo $request_url;
  86. $result = curl_get($request_url);
  87. //dump($result);
  88. return $result;
  89. }
  90. }