文档地址:
https://api.e.mi.com/doc.html#/1.0.0-mdtag9b26f-omd/document-f0283649125f62138db43c6f5fc25686
class Xiaomi
{
/********这里的具体账号自己填**********/
public $encrypt_key = '';
public $sign_key = '';
public $appId = '';
public $customerId = '';
public $url = 'http://trail.e.mi.com/global/log';
public function callback($request, $ua, $ip)
{
try{
list($t1, $t2) = explode(' ', microtime());
$str_time = sprintf('%u', (floatval($t1) + floatval($t2)) * 1000);
$params = [
'imei' => (isset($request['imei']) && $request['imei']) ? md5($request['imei']) : '',
'oaid' => (isset($request['ou_id']) && $request['ou_id']) ? $request['ou_id'] : '',
'conv_time' => $str_time,
'client_ip' => $ip,
'ua' => $ua
];
if(!$params['imei']){
unset($params['imei']);
}
if(!$params['oaid']){
unset($params['oaid']);
}
$queryString = http_build_query($params);
$property = $this->sign_key . '&' . urlencode($queryString);
$signature = md5($property);
$baseData = $queryString . '&sign=' . urlencode($signature);
$info = $this->mima($baseData);
$queryParams = [
'appId' => $this->appId,
'info' => $info,
'conv_type' => 'APP_ACTIVE_NEW',
'customer_id' => $this->customerId,
];
$this->request($queryParams);
}catch(\Exception $e){
dd('error');
}
}
public function request($queryParams)
{
$url = $this->url . '?' . http_build_query($queryParams);
$client = new Client();
$response = $client->get($url);
$data = $response->getBody()->getContents();
dd($data);
}
public function jiajiemi($q)
{
$crytxt = '';
for ($i = 0; $i < strlen($q); $i++) {
$m = $i % strlen($this->encrypt_key);
$crytxt .= $q[$i] ^ $k[$m];
}
return $crytxt;
}
public function mima($q)
{
$str = $this->jiajiemi($q);
return base64_encode($str);
}
Base64(simple_xor{base_data, encrypt_key}),这个地方有点难,调用上面mima()解决。