直接放干货吧,今日头条飞鱼CRM的PHP调用方法,点我跳转。
很简单的两个方法,加密时重要的是有一个空格,必须要有,这个也是坑了我很长时间的一个坑。
接下来具体说一下飞鱼CRM系统接口加密的方法。
php // 今日头条飞鱼CRM系统API域名 $host = 'https://feiyu.oceanengine.com'; // 拉取数据的路由 $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; // 以上必须得参数都提供完整无误后,就可以进行数据加密了 // 第一步,将拉取数据的路由和开始日期和结束日期和时间戳进行拼接 // 注意:这一步有一个空格,一定要保留,否则签名会失败的!!! // 注意:这一步有一个空格,一定要保留,否则签名会失败的!!! // 注意:这一步有一个空格,一定要保留,否则签名会失败的!!! $data = $pull_route.'?start_time='.$start_time.'&end_time='.$end_time.' '.$this->timestamp; // 第二步,将第一步的字符串进行哈希256加密,然后将结果再进行base64加密 $signature = base64_encode(hash_hmac('sha256', $data, $signature_key)); // 第三步,配置curl信息,然后获取数据 $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);
以上就是加密过程的分析,接下来是使用 FeiYu 加密类的教程,这个类文件可以在 飞鱼CRM 中获取到。
php // 引入FeiYu.php 类文件 require_once './FeiYu.php'; use FeiYuCRM\FeiYu; // 实例化 FeiYu 类并传入初始化参数 $feiyu = new FeiYu([ 'host' => 'https://feiyu.oceanengine.com', '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, ]);
如果有问题可以在评论中追问。