PHP
PHP通过CURL方式调用淘宝客API
PHP通过CURL方式调用淘宝客API
由于最近涉及到一个需求,需要调用淘宝客API,由于博主不想使用官方的SDK,想通过CURL方式调用淘宝客的API,这样也不会占用太多空间,同时也方便代码管理,最终参考了一篇文章,重新编写了一段代码片,在这里跟大家分享一下,
/** * 淘宝客模拟请求 * Created by PhpStorm. * User: pc001 * Date: 2020/7/13 * Time: 16:26 */ #获取时间 $startDay = date('Y-m-d'); // 当天 $endDay = date('Y-m-d', strtotime("+7 day")); // 最多7天 #组合请求数据 $params = array( 'adzone_id' => '*********', //妈妈广告位Id 'item_id' => '********', //宝贝id 'name' => '淘礼金红包', //淘礼金名称 'per_face' => '1.0', //单个淘礼金面额 'security_switch' => 'true', //安全开关 'send_start_time' => $startDay . " 00:00:00", //发放开始时间 'send_end_time' => $endDay . " 23:59:59", //发放截止时间 'total_num' => '1', //淘礼金总个数 'use_start_time' => $startDay, //使用开始日期 'use_end_time' => $endDay, //使用结束日期 'use_end_time_mode' => '2', //结束日期的模式 'user_total_win_num_limit' => '1', //单用户累计中奖次数上限 'method' => 'taobao.tbk.dg.vegas.tlj.create' //淘宝客API名称 ); #调取接口 $result = tbkExecute($params); echo json_encode($result); /** * 淘宝客调用触发 * @param $params * @return array */ function tbkExecute($params) { #初始化配置 $app_key = "******"; //应用的AppKey $app_secret = "******"; //应用的AppSecret $dataList = array(); #组合基本请求结构 $commonParams = array( 'app_key' => $app_key, 'timestamp' => date('Y-m-d H:i:s'), 'format' => 'json', 'sign_method' => 'md5', 'v' => '2.0', ); #获取sign $params = tbkSign(array_merge($commonParams, $params), $app_secret); #调取接口判断是否调用成功 $data = tbkRequestGet($params); #失败返回 if (isset($data['error_response'])) { $error = $data['error_response']; return array( 'code' => 404, 'msg' => $error, 'data' => array() ); } #成功返回 $key = str_replace('.', '_',str_replace('taobao.', '', $params['method'])) . '_response'; if (isset($data[$key])) { $dataList = $data[$key]; } return array( 'code' => 200, 'msg' => "", 'data' => $dataList ); } /** * 淘宝客生成sign专用 * @param $params * @param $app_secret * @return array */ function tbkSign($params, $app_secret) { unset($params['sign']); $params = \array_filter($params, function ($v, $k) { return null != $v && '' != $v; }, ARRAY_FILTER_USE_BOTH); \ksort($params); $kvs = array(); foreach ($params as $k => $v) { $kvs[] = $k . $v; } $params['sign'] = strtoupper(md5($app_secret . implode('', $kvs) . $app_secret)); return $params; } /** * 淘宝客专用请求 * @param array $data * @return mixed */ function tbkRequestGet($data = array()) { $gateway = "http://gw.api.taobao.com/router/rest"; $url = $gateway . '?' . http_build_query($data); $result = null; #网络请求接口 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //https 请求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $result = curl_exec($ch); curl_close($ch); return json_decode($result, true); }
这个代码片段是调用淘宝客淘礼金创建接口,请求参数可以参考淘宝客API文档请求参数部分,博主这里已经根据成功跟失败做了处理,根据上面的代码,调试是可以成功调用接口并返回成功。
0条评论