飞鱼CRM——精选推荐
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
飞鱼CRM
直接放⼲货吧,今⽇头条飞鱼CRM的PHP调⽤⽅法,。
很简单的两个⽅法,加密时重要的是有⼀个空格,必须要有,这个也是坑了我很长时间的⼀个坑。
接下来具体说⼀下飞鱼CRM系统接⼝加密的⽅法。
<?php
// 今⽇头条飞鱼CRM系统API域名
$host = 'https://';
// 拉取数据的路由
$pull_route = '/crm/v2/openapi/pull-clues/';
// 飞鱼CRM系统中,你⽣成的秘钥字符串,这⾥要替换成你⾃⼰的key
$signature_key = 'ABCDEFGHIGKLMNOP';
// 飞鱼CRM系统中,你⽣成的Token字符串,这⾥要替换成你⾃⼰的Token
$token = '01234567890123abcdefghijklmnopqrstuvwxyz';
// 飞鱼的加密参数还有三个:start_time、end_time、timestamp,这三个字段都是时间戳格式
// 拉取的数据从哪⼀天开始取数据,开始⽇期,例如从 2019-08-01 开始取数据
$start_time = strtotime('2019-08-01');
// 拉取的数据到哪⼀天截⽌停⽌取数据,结束⽇期,例如到 2019-09-01 停⽌取数据
$end_time = strtotime('2019-09-01');
// 时间戳,当前执⾏加密⽅法的时间
$timestamp = time();
// 飞鱼CRM担⼼数据量太⼤会挂掉,所以要求进⾏分页获取数据,这个是第⼏页
$page = 1;
// 每页数据要多少条,例如我设置每页获取10条数据
$page_size = 10;
// 以上必须得参数都提供完整⽆误后,就可以进⾏数据加密了
// 第⼀步,将拉取数据的路由和开始⽇期和结束⽇期和时间戳进⾏拼接,结果类似这样:"/crm/v2/openapi/pull-clues/?start_time=1569859200&end_time=1572537600 1572574424"
// 注意:这⼀步有⼀个空格,⼀定要保留,否则签名会失败的
// 注意:这⼀步有⼀个空格,⼀定要保留,否则签名会失败的
// 注意:这⼀步有⼀个空格,⼀定要保留,否则签名会失败的
$data = $pull_route.'?start_time='.$start_time.'&end_time='.$end_time.' '.$timestamp;
// 第⼆步,将第⼀步拼接后的字符串进⾏哈希256加密,然后将结果再进⾏base64加密
$signature = base64_encode(hash_hmac('sha256', $data, $signature_key));
// 第三步,配置curl信息,然后获取数据,请求地址类似这样:"https:///crm/v2/openapi/pull-clues/?page=1&page_size=10&start_time=1569859200&end_time=1572537600" $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host.$pull_route.'?page='.$page.'&page_size='.$page_size.'&start_time='.$start_time.'&end_time='.$end_time);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 设置超时时间
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
// 设置请求头信息,每个头信息的冒号后⾯要保留⼀个空格
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json;charset=UTF-8',
'Signature: ' . $signature,
'Timestamp: ' . $timestamp,
'Access-Token: ' . $token,
]);
// 执⾏curl获取数据
$output = curl_exec($ch);
// 关闭资源
curl_close($ch);
// 如果不出意外,那么这⾥你就可以获取到飞鱼CRM系统中的客户信息了
print_r($output);
以上就是加密过程的分析,总结⼀下关键点:
1. 加密的原始数据是:不带host地址的路由+start_time+end_time+空格+timestamp 。
其中“空格”很重要!
2. 拉取数据和回传数据是两个路由地址,要区分清楚。
3. 拉取数据是GET请求,回传数据是POST请求,记得改请求⽅式。
接下来是使⽤ FeiYu 加密类的教程,这个类⽂件可以在中获取到。
<?php
// 引⼊FeiYu.php 类⽂件
require_once './FeiYu.php';
use FeiYuCRM\FeiYu;
// 实例化 FeiYu 类并传⼊初始化参数
$feiyu = new FeiYu([
'host' => 'https://',
'pull_route' => '/crm/v2/openapi/pull-clues/',
'push_route' => '/crm/v2/openapi/clue/callback/',
'signature_key' => 'ABCDEFGHIGKLMNOP',
'token' => '01234567890123abcdefghijklmnopqrstuvwxyz',
]);
// 拉取数据⽅法,传⼊开始⽇期和结束⽇期,第三个参数是每页数据条数
$feiyu->pullData('2019-08-01', '2019-09-01', 100)->run(function($customers){
// 这⾥是⼀个闭包,会在取完⼀整页的数据后执⾏
foreach ($customers as$customer) {
// run yourself function
print_r($customer);
die;
}
});
// 回传数据⽅法
$res = $feiyu->pushData([
// 客户id,这个id在上⾯的拉取数据中,飞鱼CRM会给你的,每个客户的 clud_id 是唯⼀的
'clue_id' => '1234567891234567891',
// 这个参数根据飞鱼CRM的⽂档有四个状态可选:[1:⽆效]、[2:潜在客户]、[3:⾼价值客户]、[4:已付费]
'clue_convert_state' => 3,
]);
顺带说明⼀下,有朋友联系我,想知道飞鱼的接⼝返回 -2 是什么意思。
这个其实没有任何意思,只要是你的接⼝请求错误,他们统⼀都是返回 -2 代码,并且,仅有以下⼏种状况才会有 `msg` 说明:
- 签名过程有错误,或者是请求时的地址拼接错误(如没有拼接上 `start_time` 或者 `end_time` 参数)
Array
(
[status] => -2
[msg] => ⽆效的签名
)
- 请求头信息没有设置 `Signature: ` 参数、或者 `Signature: ` 值设置错误
Array
(
[status] => -2
[msg] => 请在header中添加签名
)
- 请求头信息没有设置 `Timestamp: ` 参数、或者 `Timestamp: ` 值设置错误
Array
(
[status] => -2
[msg] => 请在header中添加时间戳
)
- 请求头信息没有设置 `Access-Token: ` 参数、或者 `Access-Token: ` 值设置错误,等⼀些其他原因,只有 -2 ⼀个状态码,没有错误说明。
Array
(
[status] => -2
[msg] => Array
(
)
)
除了以上的错误消息,基本上就没见过别的了。
如果有问题可以在评论中追问。