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条评论