PHP對京東聯(lián)盟CPS的API調用
在調用接口之前,先要取得授權,這個看看接口文檔就可以了。地址如下:https://jos.jd.com/doc/channel.htm?id=152
在京東云控制臺:https://console.jdcloud.com/
“新建應用”獲得 調用接口的通用參數(shù)(App key/client_id、App secret/client_secret、access_token)。

授權有效期說明:如果應用appkey狀態(tài)為“在線測試”,授權token有效期只有24小時,“上線運行”狀態(tài)的應用授權token有效期為一年。另如果是通用應用,需要先發(fā)布到服務市場,審核通過后方可授權獲取token。
注意:如授權商家修改主賬號密碼則授權碼(Access token)隨之失效,需重新授權。
另需在京東聯(lián)盟:
推廣管理-》網(wǎng)站管理,添加新網(wǎng)站 獲得例如“獲取單條推廣代碼”之類的API所需的web ID。如需app調用,則需要在推廣管理-》APP管理 添加一個APP,以獲得app相關接口所需要的appId 。
備案通過后的網(wǎng)站,通過京東審核,一般需要3-5個工作日。

準備好以上應用級參數(shù)后,便可以調用京東聯(lián)盟API了,接口文檔地址:https://jos.jd.com/api/list.htm?id=117

開發(fā)之前可以先用”API測試工具“測試一下。獲取推廣商品信息接口測試地址:https://jos.jd.com/api/showTools.htm?id=1413&groupId=117
下圖是批量獲取推廣代碼的接口測試結果:

比較坑爹的是 獲取單條推廣代碼 的接口

推廣類型有好多個,但是目前只支持”自定義推廣“!物料ID的注釋很多,但是就是不說明自定義推廣類型的物料ID怎么填!實際上,物料ID要填商品的訪問地址。
推廣渠道為PC時,要寫諸如http://item.jd.com/2346382.html的地址;推廣渠道為WL時,要寫諸如http://item.m.jd.com/product/2346382.html的地址。
php代碼如下:
class jd {
public static $appKey = '';
public static $appSecret = '';
public static $access_token = '';
const URL = 'https://api.jd.com/routerjson?';
/* 發(fā)送GET請求,跳過ssl證書檢測 */
function curl_get($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 要求結果為字符串且輸出到屏幕上
curl_setopt($ch, CURLOPT_HEADER, 0); // 不要http header 加快效率
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
//設置參數(shù)
function setParameter($specialParameter){
$time = date('Y-m-d H:i:s', time());
$publicParameter = array(
'access_token' => static::$access_token,
'app_key' => static::$appKey,
'v' => '2.0',
'timestamp' => $time,
);
$params = array_merge($publicParameter, $specialParameter);
$sign = self::getStringToSign($params);
$parameter = array_merge($params, ['sign'=>$sign]);
ksort($parameter);
$str = '';
foreach($parameter as $key => $value){
$str .= urlencode($key) . '=' . urlencode($value) . '&';
}
return $str;
}
//生成簽名
function getStringToSign($parameter){
ksort($parameter);
$str = '';
foreach($parameter as $key => $value){
$str .= urlencode($key) . urlencode($value);
}
$str = static::$appSecret . $str . static::$appSecret;
$signature = strtoupper(md5($str));
return $signature;
}
//獲取推廣商品信息
public function getGoodsInfo($skuId){
$specialParameter = [
'method' => 'jingdong.service.promotion.goodsInfo',
'360buy_param_json' => json_encode([
'skuIds' => $skuId
])
];
$str = self::setParameter($specialParameter);
$url = self::URL.$str;
return json_decode(self::curl_get($url));
}
}返回的數(shù)據(jù)格式為:
object(stdClass)#59 (1) {
["jingdong_service_promotion_goodsInfo_responce"]=>
object(stdClass)#60 (2) {
["code"]=>
string(1) "0"
["getpromotioninfo_result"]=>
string(499) "{
"message":"接口成功",
"result":[{
"commisionRatioPc":0.60,
"commisionRatioWl":0.60,
"endDate":4102416000000,
"goodsName":"聯(lián)想(ThinkPad )輕薄系列E450(20DCA082CD)14英寸筆記本電腦 (i5-5200U 4G 500G 2G獨顯 win10)",
"imgUrl":"http://img14.360buyimg.com/n1/jfs/t3025/299/208536801/248419/ef1e3b38/579729e0N1e605005.jpg",
"materialUrl":"http://item.jd.com/2346382.html",
"shopId":1000000158,
"skuId":2346382,
"startDate":1475251200000,
"unitPrice":3999.0,
"wlUnitPrice":3999
}],
"sucessed":true}"
}
}到此這篇關于PHP調用京東聯(lián)盟API的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
深入理解ob_flush和flush的區(qū)別(ob_flush()與flush()使用方法)
ob_flush()和flush()這兩個函數(shù)一般要一起使用,順序是先ob_flush(),然后flush(),它們的作用是刷新緩沖區(qū)2013-02-02
PHP使用mysqldump命令導出數(shù)據(jù)庫
最近用php寫一個數(shù)據(jù)備份的功能。做法是使用php的system函數(shù)執(zhí)行mysqldump命令,進行備份,這里分享給大家,有需要的小伙伴可以參考下。2015-04-04

