php处理小米广告平台API上报方案对接(主要是APP下载)

因小米平台方没有php处理事例,所以只能自写。(小米看不起php,我也不起小米)

先说明逻辑:

广告主(我们)通过小米应用商店投放广告,用户点击广告产生数据,如下载我们推广APP,用户注册,后台回传用户数据给广告平台。

准备工作:

1、客户端需要能获取到oaid或imei

2、其他数据:ua、ip、包名、注册时间等

3、事件:激活、注册、付费

4、考虑到用户量、php执行机制、建议APP注册用户功能和回传广告功能要解耦,避免第三方接口出现问题时导致平台用户注册出现等待过长或其他异常等。(自行处理)

先写一个方法

/**
     * 小米广告回传
     */
    public static function xiaomi($data){
        $query = '';
        $data = array_filter($data);
        if(isset($data['imei'])){
            $query .= "&imei=".strtolower(md5(urlencode($data['imei'])));
        }
        if(isset($data['oaid'])){
            $query .= empty($query)?"oaid=".urlencode($data['oaid']):"&oaid=".urlencode($data['oaid']);

        }
        if(isset($data['time'])){
            $query .= "&conv_time=".urlencode($data['time']*1000);
        }
        if(isset($data['ip'])){
            $query .= "&client_ip=".urlencode($data['ip']);
        }
        if(isset($data['ua'])){
            $query .= "&ua=".urlencode($data['ua']);
        }
        $signature = md5(AD_XIAOMI['sign_key']."&".urlencode($query));

        $base_data = $query."&sign=".urlencode($signature);

        $info = self::encryption($base_data,AD_XIAOMI['encrypt_key']);

        $appid  = AD_XIAOMI['appid'];
        $convType = AD_XIAOMI['conv_type'];
        $customerId = AD_XIAOMI['customer_id'];
        $url = AD_XIAOMI['api_url']."appId=".urlencode($appid)."&info=".urlencode($info)."&conv_type=".urlencode($convType)."&customer_id=".urlencode($customerId);
        self::curlGet($url);
        return true;
    }

上面这个方法可以直接调用,相关配置参数在小米广告后台获取:appid、customer_id,api_url等。

配置参数:

@define("AD_XIAOMI",['appid'=>"11111111","sign_key"=>"11111","encrypt_key"=>"111111","customer_id"=>"1111",'conv_type'=>"APP_REGISTER",'api_url'=>"http://trail.e.mi.com/global/test?"]);//正式 "http://trail.e.mi.com/global/log?"  测试 "http://trail.e.mi.com/global/test?"

需要使用的方法

按位异或加密
   /*按位异或加密
 * @param $value 需加密的字符串
 * @param $type 加密解密[0加密,1解密]
 * @return 加密或解密后的字符串
 */
    public static function encryption($value,$key,$type=0){
        $crytxt='';
        for ($i=0;$i<strlen($value);$i++){
            $m=$i%strlen($key);
            $crytxt .=$value[$i]^$key[$m];
        }
        return base64_encode($crytxt);
    }

curl请求方法

public static function curlGet($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if ($httpCode === 200) {
            // 打印返回结果
            $res = json_decode($response, true);
            curl_close($ch);
            return $res; // 返回error_code为0时接口调用成功,否则需排查具体原因
        }
        curl_close($ch);
        return false;
    }

小米对接文档:

https://api.e.mi.com/doc.html#/1.0.0-mdtag9b26f-omd/document-f0283649125f62138db43c6f5fc25686

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值