Advert.php 3.5 KB

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