当前位置:首页>>问题

对接百度广告主的回传api接口

第一、简单描叙一下:step 1:当用户点击百度广告时,百度将会自动在广告主落地页链接中增加百度广告ID参数(即 bd_vid)。该参数可标示百度流量,并作为归因匹配依据,所以用户不同广告展现所对应的bd_vid参数值均不相同。step 2:广告主开发人员判断该流量是否发生了所定义的转化事件(例如:表单提交成功、服务购买成功等

admin

第一、简单描叙一下:

step 1:当用户点击百度广告时,百度将会自动在广告主落地页链接中增加百度广告ID参数(即 bd_vid)。

该参数可标示百度流量,并作为归因匹配依据,所以用户不同广告展现所对应的bd_vid参数值均不相同。

step 2:广告主开发人员判断该流量是否发生了所定义的转化事件(例如:表单提交成功、服务购买成功等)

step 3:广告主开发人员通过API接口回传该百度流量(bd_vid)所对应的转化事件。 

百度接收到广告主开发人员回传的转化数据后,可根据bd_vid参数追溯到用户某次点击所对应广告的具体计划、单元、创意等信息。

这些数据将反馈至转化模型进行学习和分析,以便在后续投放中更准确地预估用户转化率,帮助广告主在符合目标转化成本的基础上实现稳定获量。

参开文档:https://dev2.baidu.com/content?sceneType=0&pageId=104789&nodeId=1555&subhead=

第二、回传的php的demo代码下载:https://ocpcdevcenter.bj.bcebos.com/ocpc-api-demo-php.zip

第三、遇到的问题:

1、点击广告页后,百度会生成一个bd_vid参数,需要把这个bd_vid保存下来,我把它保存到session和cookie中,然后付款成功后,再执行回传文件把bd_vid回传给百度,刚开始考虑的是在支付成功后的回调php文件中,使用http_post或者file_get_contents方法去执行回传文件,结果发现回传文件里面的session和cookie获取不到值,这就郁闷了,不知道是什么原因。

后来在在支付成功后的跳转文件里面利用ajax来执行回传文件,哟或,这下成功获取到session和cookie的值了,回传成功

js的相关代码:

<script>

$(function(){

    $.ajax({

url:"http://xxx.xxx.com/APIDemo.php",

//dataType:"json",   //返回格式为json

//async:true,//请求是否异步,默认为异步,这也是ajax重要特性

//data:{"bd_vid":"<{$bd_vid}>"},    //参数值

type:"GET",   //请求方式

success:function(e){

console.log("success");

},

error:function(e){

console.log("hits,sorry");

}

});  

});

</script>

php的相关代码:

public function http_post($url,$data){

        if(!function_exists('curl_init')){

            throw new Exception('php未安装curl组件',500);

        }

        

        $protocol = (! empty ( $_SERVER ['HTTPS'] ) && $_SERVER ['HTTPS'] !== 'off' || $_SERVER ['SERVER_PORT'] == 443) ? "https://" : "http://";

        $siteurl= $protocol.$_SERVER['HTTP_HOST'];

        

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_TIMEOUT, 60);

        curl_setopt($ch,CURLOPT_URL, $url);

        curl_setopt($ch,CURLOPT_REFERER,$siteurl);

        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);

        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);

        curl_setopt($ch, CURLOPT_HEADER, FALSE);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

        curl_setopt($ch, CURLOPT_POST, TRUE);

        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        $response = curl_exec($ch);

        $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        $error=curl_error($ch);

        curl_close($ch);

        if($httpStatusCode!=200){

            throw new Exception("invalid httpstatus:{$httpStatusCode} ,response:$response,detail_error:".$error,$httpStatusCode);

        }

         

        return $response;

}



返回顶部