本篇文章介绍的内容是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);

}

}

京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板相关推荐

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

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

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

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

  3. .net Core 2.2实现京东宙斯API采用OAuth授权方式调用

    1.实现对接京东接口,这里主要是写了采用Oauth授权的方式调用. 2.VS2017 使用了.net core 2.2 控制台程序,json库使用 jil(这个比较轻量级,加载数据较快,但也需要注意有 ...

  4. php京东图床上传接口源码,京东图床上传api接口源码

    if (class_exists('CURLFile')) { // php 5.5 $post['file'] = new CURLFile(realpath($_FILES['Filedata'] ...

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

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

  6. 普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断、验证验证码的正确性(下)

    普歌-结合腾讯云短信服务+node搭建一个简单的发送短信web小项目 涉及技术: 腾讯云服务 后端服务:node+express 前端搭建:html+js 前言:本来这篇博客应该很早就发了,中间有一些 ...

  7. 拼多多客京东客蘑菇街小程序v9.1高佣联盟无限多开版 新增两个京东备用接口,故障自动切换接口 小程序

    拼多多客京东客蘑菇街小程序v9.1高佣联盟无限多开版 新增两个京东备用接口,故障自动切换接口 小程序 [后端升级新版] 1.新增两个京东备用接口,故障自动切换接口. 学习资料源码:拼多多客京东客蘑菇街 ...

  8. 查找这个接口的调用_事务处理不当,线上接口又双叒内存泄漏了!(附图解问题全过程)...

    情景 项目上线了一个接口,先灰度一台机器观察调用情况: 接口不断的调用,过了一段时间,发现机器上的接口调用开始报 OOM异常 ! 当天就是上线deadline了,刺激.. 发现问题 第一步,使用 jp ...

  9. 对接京东获取任务工单接口jingdong.homefw.task.search,附接口字段详细说明,数据库设计,Java实现

    目录 接口详细说明 jingdong.homefw.task.search(获取任务工单) 任务工单字段详细说明 数据库设计 任务工单表结构 日志表结构 接口Java实现 接口详细说明 jingdon ...

最新文章

  1. 昊天善圈浅谈比特币这个类型区块链应用技术的特点及作用
  2. 由浅入深之Tensorflow(3)----数据读取之TFRecords
  3. 111. Leetcode 300. 最长递增子序列 (动态规划-子序列问题)
  4. 从Java视角理解CPU上下文切换(Context Switch)
  5. java中map可以为空吗_检查NavigableMap是否在Java中为空
  6. linux+arch系统下载,Linux
  7. Raj Reddy:从印度农村走出来的图灵奖得主
  8. 从零开始,CentOS6安装ghost博客
  9. 20160504课堂作业
  10. 201671030113 李星宇 《英文文本统计分析》结对项目报告
  11. fastboot刷机操作
  12. 如何裁剪动图的边框?教你一键在线裁剪动图
  13. DST与Neural Belief Tracker
  14. java uuid去掉横线_UUID去横杠-的正确方式
  15. 《纽约客》特写Jeff Dean与Sanjay:谷歌唯二11级工程师,同一台电脑上写代码
  16. idea插件开发的时候找不到com.intellij.psi.PsiClass
  17. 线性代数中的矩阵运算P(A,E)是什么意思?
  18. [2019长沙长郡中学集训]加法
  19. Oracle数据库撤回操作
  20. 未找到导入的项目 .wpp.targets。请确认 Import 声明中的路径正确,且磁盘上存在该文件

热门文章

  1. 【Python金融量化】VaR系列(一):HS,WHS,RM方法估计VaR
  2. 中学教师资格考试模拟试卷
  3. WinCE 与通讯模块
  4. 环形链表(python实现)
  5. 网上流传的所谓冒泡排序加强版,真的加强了吗?
  6. JAVA 方法定义及调用
  7. HTC推出了VIVE Comos 全新 VR(虚拟现实)系列产品
  8. java实现家庭财务管理_基于jsp的家庭财务管理系统-JavaEE实现家庭财务管理系统 - java项目源码...
  9. 职称计算机证书A级,英语A级证书是什么证书
  10. Maven项中的webapp下的静态页面无法访问报404(记录自己的错误)