百度推广线索api联调

该文详细介绍了如何在TP5框架下实现百度搜索推广和信息流推广的线索API联调,包括设置转换类型、发送POST请求、处理重试机制,以及具体的PHP代码示例,如发送转化数据和处理转化事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百度搜索推广以及信息流推广为监测数据转化情况,会使用到线索api联调,其共有119种转化方式,转化编号以1-119数字编号命名,具体规则可参照百度转化追踪转化编码类型明细。本文以TP5框架为例说明如何进行联调。

TP5核心代码:

<?php
namespace app\index\controller;
use think\Db;
use think\Session;

class Index extends Common
{
const BAIDU_OCPC_URL = 'https://ocpc.baidu.com/ocpcapi/api/uploadConvertData';
const RETRY_TIMES = 3;
/**
* @param $token
* @param $conversionTypes
* @return bool 发送成功返回true,失败返回false
*/
public function sendConvertData($token, $conversionTypes) {
$reqData = array('token' => $token, 'conversionTypes' => $conversionTypes);
$reqData = json_encode($reqData);
// 发送完整的请求数据
// 向百度发送数据
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, self::BAIDU_OCPC_URL);
curl_setopt($ch, CURLOPT_POSTFIELDS, $reqData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($reqData)
)
);
// 添加重试,重试次数为3
for ($i = 0; $i < self::RETRY_TIMES; $i++) {
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode === 200) {
//  print_r('retry times: ' . $i . ' res: ' . $response . "\n");
$res = json_decode($response, true);
// status为4,代表服务端异常,可添加重试
$status = $res['header']['status'];
if ($status !== 4) {
curl_close($ch);
return $status === 0;
}
}
}
curl_close($ch);
return false;
}
public function index()
{
$bd_vid=input('bd_vid');
Session::set('bd_vid',$bd_vid);
//将bd_vid值以SESSION形式储存,方便在页面上进行事件触发时不再需要从页面往回传值。
//以下是自己的业务逻辑
$search['b.look']=['=','1'];
$infolist=db('form_travel')->alias("a") 
->join('formcon b', 'a.conid = b.vid')
->where($search)
->order('conid desc')->limit(5)
->select();
$this->assign([
'infolist' => $infolist,
]);

Db::table('lecms_block')->where('id', 50)->setInc('content');
$num= db('form_travel')->count(); //获取评论总数
$this->assign('num',$num);
return $this->fetch($this->tpl_file.'index_index.html');
}

//页面上的点击事件,点击后调用联调
public function copylink(){
//从session获取回bd_vid值传给落地页
$newbd_vid=Session::get('bd_vid');
//echo($newbd_vid);
$token = '你的百度token';
// 编辑一条转化数据
$cv = array(
'logidUrl' => "https://www.nmbn.net/?bd_vid=$newbd_vid", // 您的落地页url
'convertType' => 35 // 转化类型请按实际情况填写 35是代表复制微信事件
);
// 此处仅为demo, conversionTypes支持添加更多数据
$conversionTypes = array($cv);
$this->sendConvertData($token, $conversionTypes);
//$info = ['code'=>1,'status'=>'success','msg'=>'联调成功!'];
//return json($info);
}
}

测试成功后的联调状态会变更为联调成功,此时即可正常投放广告。

 

### 如何在 PyCharm 中进行 Python API 联调操作指南 #### 使用 PyCharm 进行 API 测试准备 为了有效地在PyCharm中执行API联调开发者需确保安装了必要的插件和支持库。对于RESTful API的测试来说,`requests`库是一个不可或缺的选择[^4]。 ```python import requests url = 'http://example.com/api/test' response = requests.get(url) print(response.status_code) print(response.json()) ``` #### 设置环境变量与配置 当涉及到不同环境下(如开发、测试、生产)的API接口地址切换时,合理设置环境变量可以极大地方便这一过程。可以通过`.env`文件来管理这些敏感信息,并借助`python-dotenv`包加载它们。 ```bash # .env 文件示例 API_URL=http://localhost:5000/ ``` ```python from dotenv import load_dotenv import os load_dotenv() api_url = os.getenv('API_URL') ``` #### 创建虚拟环境并激活 创建独立的Python解释器版本和依赖项集合有助于隔离项目之间的冲突。通过命令行或者直接在PyCharm内部创建新的虚拟环境都是可行的方法。 ```bash python -m venv myvenv source myvenv/bin/activate # Linux/MacOS myvenv\Scripts\activate # Windows ``` #### 编写单元测试用例 编写针对特定功能点的自动化测试脚本能够提高调试效率。pytest框架提供了简洁而强大的语法支持用于定义测试函数;同时配合fixture机制可模拟外部服务响应,从而专注于核心逻辑验证。 ```python def test_api_response(): response = requests.get(f"{api_url}test") assert response.status_code == 200 data = response.json() assert isinstance(data, dict) ``` #### 利用 Postman 或者 HTTPie 工具辅助调试 虽然可以直接在代里发起HTTP请求来进行初步的功能性验证,但在某些情况下使用专门设计用来发送各种类型的HTTP请求的应用程序会更加直观便捷。Postman是一款图形化的API客户端软件,它允许用户轻松地构造复杂的请求体结构以及查看详细的返回结果分析报告。而对于偏好命令行操作的人来说,则可以选择轻量级CLI工具HTTPie作为替代方案。 ```bash http GET http://localhost:5000/test ``` #### 实现日志记录增强问题排查能力 良好的日志实践可以帮助快速定位潜在错误所在位置及其上下文信息。logging模块内置于标准库里,只需几行简单的配置就能满足大多数场景下的需求。 ```python import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') logging.debug("This is a debug message.") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐畅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值