本篇文章介绍的内容是PHP调用京东联盟开普勒、宙斯API模板 ,现在分享给大家,有需要的朋友可以参考一下

京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action

授权介绍在这里:http://kepler.jd.com/console/docCenterCatalog/docContent?channelId=17/*开普勒类*/

class KeplerApi{

private $appKey = 'YourKey'; // 你的Key

private $appScret = 'YourSecret'; // 你的Secret

private $app_token_json = '{}'; // 第一次需要手动授权获取京东Token然后粘贴到这里

/**

* 获取开普勒接口数据

* @param string $apiUrl 要获取的api

* @param string $param_json 该api需要的参数

* @param string $version 版本可选为 2.0

* @param bool $get 是否使用get,默认为post方式

* @return mixed 京东返回的json格式的数据

*/

public function GetKelperApiData($apiUrl='',$param_json = array(),$version='1.0',$get=false){

$API['access_token'] = $this->refreshAccessToken(); // 生成的access_token,30天一换

$API['app_key'] = $this->appKey;

$API['method'] = $apiUrl;

$API['param_json'] = json_encode($param_json);

$API['sign_method'] = 'md5';

$API['timestamp'] = date('Y-m-d H:i:s',time());

$API['v'] = $version;

ksort($API); // 排序

$str = ''; // 拼接的字符串

foreach ($API as $k=>$v) $str.=$k.$v;

$sign = strtoupper(md5($this->appScret.$str.$this->appScret)); // 生成签名 MD5加密转大写

if ($get){

// 用get方式拼接URL

$url = "https://router.jd.com/api?";

foreach ($API as $k=>$v)

$url .= urlencode($k) . '=' . urlencode($v) . '&'; // 把参数和值url编码

$url .= 'sign='.$sign; // 接上签名

$res = self::curl_get($url);

}else{

// 用post方式获取数据

$url = "https://router.jd.com/api";

$API['sign'] = $sign;

$res = self::curl_post($url,$API);

}

return $res;

}

// 刷新accessToken

private function refreshAccessToken(){

$filePath = dirname(dirname(__FILE__)).'/Config/KelperToken.config'; // Token文本保存路径

if (file_exists($filePath)){

$handle = fopen($filePath,'r');

$tokenJson = fread($handle,8142);

}else{

// 插入默认的token

fwrite(fopen($filePath,'w'),$this->app_token_json);

$tokenJson = $this->app_token_json;

}

if (substr($tokenJson, 0,3) == pack('CCC',0xef,0xbb,0xbf)) {

$tokenJson = substr($tokenJson, 3);

}

$res = json_decode(trim($tokenJson),true); // 解析不了可能是文本出了问题,注意BOM头

// 判断

if ($res['code'] == 0){

if ($res['expires_in']*1000 + $res['time'] < self::getMillisecond() - 86400000){ // access_token失效前一天

// 获取刷新token的url

$refreshUrl = "https://kploauth.jd.com/oauth/token?grant_type=oauth_refresh_token";//&app_key=yourappkey&app_secret=yourappsecret&refresh_token=xxxxxxxx

$refreshUrl .= '&app_key='.$this->appKey;

$refreshUrl .= '&app_secret='.$this->appScret;

$refreshUrl .= '&refresh_token='.$res['refresh_token'];

// 获取新的token数据

$newAccessTokenJson = self::curl_get($refreshUrl);

// 写入文本

fwrite(fopen($filePath,'w'),$newAccessTokenJson);

// 解析成数组

$newAccessTokenArr = json_decode($newAccessTokenJson,true);

$accessToken = $newAccessTokenArr['access_token'];

}else{

$accessToken = $res['access_token'];

}

return $accessToken;

}else{

// 如果refresh_token过期,将会返回错误码code:2011;msg:refresh_token过期

return $res['msg'];

}

}

// get请求

private static function curl_get($url){

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

// post请求

private static function curl_post($url,$curlPost){

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

// 获取13位时间戳

private static function getMillisecond(){

list($t1, $t2) = explode(' ', microtime());

return sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);

}

}

宙斯接口也是大同小异,无非是换了个域名和授权方式/**

* Class ZeusApi 宙斯接口调用类

*/

class ZeusApi

{

private $appKey = 'YourKey'; // 你的Key

private $appScret = 'YourSecret'; // 你的Secret

private $app_token_json = '{}'; // 第一次需要手动授权获取京东Token然后粘贴到这里

/**

* 获取宙斯接口数据

* @param string $apiUrl 要获取的api

* @param string $param_json 该api需要的参数,使用json格式,默认为 {}

* @param string $version 版本可选为 2.0

* @param bool $get 是否使用get,默认为post方式

* @return mixed 京东返回的json格式的数据

*/

public function GetZeusApiData($apiUrl='',$param_json = array(),$version='1.0',$get=false){

$API['access_token'] = $this->refreshAccessToken(); // 生成的access_token,30天一换

$API['app_key'] = $this->appKey;

$API['method'] = $apiUrl;

$API['360buy_param_json'] = json_encode($param_json);

$API['timestamp'] = date('Y-m-d H:i:s',time());

$API['v'] = $version;

ksort($API); // 排序

$str = ''; // 拼接的字符串

foreach ($API as $k=>$v) $str.=$k.$v;

$sign = strtoupper(md5($this->appScret.$str.$this->appScret)); // 生成签名 MD5加密转大写

if ($get){

// 用get方式拼接URL

$url = "https://api.jd.com/routerjson?";

foreach ($API as $k=>$v)

$url .= urlencode($k) . '=' . $v . '&'; // 把参数和值url编码

$url .= 'sign='.$sign;

$res = self::curl_get($url);

}else{

// 用post方式获取数据

$url = "https://api.jd.com/routerjson?";

$API['sign'] = $sign;

$res = self::curl_post($url,$API);

}

return $res;

}

// 刷新accessToken

private function refreshAccessToken(){

$filePath = dirname(dirname(__FILE__)).'/Config/ZeusToken.config'; // Token文本保存路径

if (file_exists($filePath)){

$handle = fopen($filePath,'r');

$tokenJson = fread($handle,8142);

}else{

// 插入默认的token

fwrite(fopen($filePath,'w'),$this->app_token_json);

$tokenJson = $this->app_token_json;

}

if (substr($tokenJson, 0,3) == pack('CCC',0xef,0xbb,0xbf)) {

$tokenJson = substr($tokenJson, 3);

}

$res = json_decode(trim($tokenJson),true); // 解析不了可能是文本出了问题

// 判断

if ($res['code'] == 0){

if ($res['expires_in']*1000 + $res['time'] < self::getMillisecond() - 86400000){ // access_token失效前一天

// 获取刷新token的url

$refreshUrl = "https://oauth.jd.com/oauth/token?";

$refreshUrl .= '&client_id='.$this->appKey;

$refreshUrl .= '&client_secret='.$this->appScret;

$refreshUrl .= '&grant_type=refresh_token';

$refreshUrl .= '&refresh_token='.$res['refresh_token'];

// 获取新的token数据

$newAccessTokenJson = self::curl_get($refreshUrl);

// 写入文本

fwrite(fopen($filePath,'w'),$newAccessTokenJson);

// 解析成数组

$newAccessTokenArr = json_decode($newAccessTokenJson,true);

$accessToken = $newAccessTokenArr['access_token'];

}else{

$accessToken = $res['access_token'];

}

return $accessToken;

}else{

// 如果refresh_token过期,将会返回错误码code:2011;msg:refresh_token过期

return $res['msg'];

}

}

// get请求

private static function curl_get($url){

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

// post请求

private static function curl_post($url,$curlPost){

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

// 获取13位时间戳

private static function getMillisecond(){

list($t1, $t2) = explode(' ', microtime());

return sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);

}

}

python爬京东联盟_PHP调用京东联盟开普勒、宙斯API模板相关推荐

  1. 京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板

    本篇文章介绍的内容是PHP调用京东联盟开普勒.宙斯API模板 ,现在分享给大家,有需要的朋友可以参考一下 京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http ...

  2. PHP调用京东联盟开普勒、宙斯API模板

    京东开普勒的 Appkey 和 AppSecret 在这里可以看到(需要先创建应用):http://kepler.jd.com/console/app/app_list.action 授权介绍在这里: ...

  3. android接入京东开普勒-2017年12月对接

    []####京东对于自己团队开发的开普勒项目,官方说的很屌.作为一种分销模式,对于开发来说,可能并不能够感觉出它的各种屌.最近公司团队有对接京东开普勒,就总结下对接开发京东开普勒的情况吧. 1.首先 ...

  4. python,对京东开普勒接口请求

    京东开普勒简介 京东开普勒买断解决方案是开普勒为企业级客户建立的智能.便捷.定制化的开放平台.通过开放API接口,买断模式可以为企业客户提供包括商品.订单.库存.售后等在内的近百个标准服务接口,实现与 ...

  5. 京东开普勒php接口,IOS菜鸟初学第十五篇:接入京东开普勒sdk,呼起京东app打开任意京东的链接-Go语言中文社区...

    我之前写了一篇关于接入京东联盟sdk的文章,但是最近,由于这个原因,如下图 导致需要重新集成京东的sdk,但是由于某种原因,因为android和ios端不统一,android接入的是京东开普勒的SDK ...

  6. 记录对接京东宙斯API -- 发布商品

    记录对接京东宙斯API -- 发布商品 1. SDK的问题 2. 提交工单, 反应不及时的问题(纯属吐槽, 勿怪!!!). 3. 对接同步SOP类型的商品信息API 3.1. 通过类目和属性类型,获取 ...

  7. 京东开普勒iOS端对接遇到的奇葩问题

    最近项目接入京东开普勒,和淘宝客sdk.淘宝还算顺利,京东接口调用折腾了半天,纯粹是纠文字理解.将相关问题和解决办法分享出来,希望大家遇到不会消耗时间. 京东开普勒 API 1.0 SDK 2.x 1 ...

  8. 加推携手京东开普勒打造超级IP名片,让人人都能轻松创业开店!

    等候多时了!加推科技和京东开普勒联手打造的超级IP名片终于上线了!这款名片由智能名片领军者加推科技和京东开普勒联合打造,有京东提供如此丰富商品和快捷物流及售后支持,强强联手,必将在微信的社交电商生态中 ...

  9. 京东授权登录 --开普勒控制台接入

    京东授权登录 将sdk添加到项目 sdk添加到项目以后 授权登录 1.sdk添加到项目以后 1.在http://kepler.jd.com/console上创建应用,然后选择SDK下载,这里需要上传a ...

  10. python爬取页面内容由京东提_python制作爬虫爬取京东商品评论教程

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

最新文章

  1. centos把mysql移到数据盘_Centos转移Mysql的数据位置
  2. 【计算机网络】第五章 数据链路层(3)
  3. 13.2. Mount partition
  4. libmemcached安装报错
  5. linux 开发组织模式,Linux内核发布模式与开发组织模式(1)
  6. 【Java】Object类、Objects类和日期类
  7. Linux上开启TUN
  8. 西安电脑服务器维修电脑,西安苹果电脑维修
  9. 技术指南 | 理解零知识证明算法之Zk-stark
  10. 小公司个人技术成长路线思考
  11. 2020第六届上海市大学生网络安全大赛线上赛Misc-可乐加冰
  12. SCAR:Scalable Consensus Algorithm一种可伸缩共识算法
  13. VB.NET学习笔记:使用Random类生成随机数(不重复、数字、字母)
  14. 电脑主机需要清洁么,多久清理一次比较好?
  15. 计算机语言不能用中文吗,为什么不能用中文来做编程呢?
  16. Android 11.0 蓝牙去掉传输文件的功能
  17. 小米6Android无响应,小米手机mui12 android9 App跳转微信小程序无任何响应。求解决...
  18. 机器学习Sklearn Day4
  19. kubeadm初始化集群报错:kubelet driver: “cgroupfs“ is different from docker cgroup driver: “systemd“
  20. Datatable转键值对

热门文章

  1. 一周小结(你不要小看业务)
  2. openmodelica安装
  3. 【前端】HTML5+CSS3 HTML基本特性(一)
  4. VMware12 pro 安装win7时operating system not found
  5. 创建google账号收费_谷歌GMS认证收费标准
  6. 网易云信短信功能使用
  7. 自注意力 self-attention 笔记
  8. win7触摸板怎么关闭_笔记本电脑触摸板快速关闭,避免误碰影响操作
  9. android project build with ant
  10. HTML+CSS项目实践五:使用纯CSS实现点击文字切换图片效果(不使用JS)