京东JOS API 接入使用笔记
商户开设了京东店、淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的ERP与京东沧海(ECLP)API对接,实现收发存。
首先得在JOS上开通京东自研应用。开通过程有一个回调地址要填,如果没有外网服务器,可以使用ngrok虚拟一个外网地址实现通信。ngrok代理开通后会给一个网址,类似http://55d35ecb.ngrok.io,填回调地址的时候,要注意后面带上接收京东返回数据的页面或方法,例如:http://55d35ecb.ngrok.io/js_callback.php,jd_callback.php页面,就要写获取到数据后的操作。
Jos开通自研应用后,会获取APP_KEY和APP_SCRET。
接入的代码实现过程:
1、获取ACCESS_TOKEN:
access_token是调用京东API的凭证,所以第一步是获取这个。获取这个,分两步走:
1.1、先要获取CODE:按照京东文档的指示,在自己的文档生成链接地址,https://oauth.jd.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&state=YOUR_CUSTOM_CODE,使用户点击这个链接后,会引导到商户授权页面(类似QQ登陆授权),授权完毕后,会按给定的回调地址,将code码返回。
1.2、获取access_token:在jos_callback.php文件里面获取code,$_GET['code'],将获取的code、APP_KEY和APP_SCRET,组装成下面的URL,
https://oauth.jd.com/oauth/token?grant_type=authorization_code&client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=GET_CODE&state=YOUR_CUSTOM_CODE&client_secret= YOUR_APP_SECRET
然后,header("Location:".$toUrl);不出错的话,就能拿到access_token了。获取后,我是直接手工存到数据库,因为这个token可用时间长,不会经常要求获取。当然也可以根据grant_type或response_type参数做对应处理。如果是response_type=code,就做进一步获取access_token处理,如果grant_type=authorization_code,就将获取到的JSON保存到数据库。
注意这里的YOUR_REGISTERED_REDIRECT_URI,这个地址最好跟JOS平台上设置的一样。
2、调用JOS API
调用API之前,首先要把SDK下载下来。https://jos.jd.com/doc/channel.htm?id=285
我使用的到的是沧海API,https://jos.jd.com/api/list.htm?id=138,测试可以调用获取事业部信息,这个简单。https://jos.jd.com/api/detail.htm?apiName=jingdong.eclp.master.queryDept&id=941。
先页面生成调用路径,比如:<a href="/jd/queryDept.php" >查看事业部信息</a>。
在queryDept.php里面,按照它的调用实例,把变量填好。其中SERVER_URL是API调入入口,按照京东文档提供的地址设置就行:define(SERVER_URL,'https://api.jd.com/routerjson ');
$c = new JdClient();
$c->appKey = appKey;
$c->appSecret = appSecret;
$c->accessToken = accessToken;
$c->serverUrl = SERVER_URL;
$req = new EclpMasterQueryDeptRequest();
//$req->setDeptNos( "jingdong" ); //这个接口可以不设置参数调用,非必需。
$resp = $c->execute($req, $c->accessToken);
$resp是调用结果,根据需要做进一步处理。
3、京东SDK有些bug,调用如果返回错误,日记记录会有一些问题。要进一步调试。现在不知道解决没有。我用的是2017年6月版本。一开始调用的时候,会出现商户没有绑定权限的问题,例如405问题,(405 : "code":"405","error_description":"用户[xxx]无权给app[C05EBAAB019CC6E91D44D45834ER]授权"(请将报错信息,包含用户名及appkey发送至jos#jd.com申请绑定授权关系)。这时需要京东的客服协助。
京东JOS API 接入使用笔记的更多相关文章
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?
前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...
- 微信公众平台开发,API接入与推送事件(1)
博客好久没有更新了,今天说说微信开发.微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别.我们常说的微信开发也就是公众号开,微信公众号分为三个类 ...
- 微信企业红包api接入
项目描述:基于微信浏览器的H5页面,接入微信支付接口和微信红包接口 一.接入前准备条件 1.微信公众号 需要基于已认证的微信公众号承载该H5页面.该条件默认已具备,本文重点为红包接口. 2.微信支付商 ...
- 对接京东jos遇到的坑 记录一下。方便查询
坑很多,有一些忘记了.文档乱的很,有问题可以私信我一下我看能不能想起来. 坑一.添加商品接口. {"error_response": {"code":" ...
- 扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]
最近做和扫描仪接入的扫描应用程序,深深感觉到了来自底层设备和WINDOWS协议的恶意.软件专业,对计算机深层次通知机制和协议,以及与之相连接的机器的接入协议和一些参数,当时并木有认真学习和了解,前一阵 ...
- JavaSE中线程与并行API框架学习笔记1——线程是什么?
前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...
- .NET接入微信支付(一)JS API接入 V3
前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...
- 【活动公告】Hackathon —— 腾讯云AI API接入迷你赛
一. 活动简介 编程马拉松(Hackathon)是将热爱软硬件开发的人聚集起来所举办的一项比赛,本次活动由腾讯云AI联合云+社区发起,希望让广大开发者体验到腾讯云AI的魅力.比赛过程中,参赛者可以尽情 ...
随机推荐
- docker核心概念及centos6下安装
Docker三大核心概念 镜像 容器 仓库 镜像 docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 容器 1.容器是从镜像创建的应用运行实例,容器和 ...
- rownum基本用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀. ...
- 普通自适应遗传算法AGA的PC和PM公式解读
写在前面 本文对于普通自适应遗传算法的Pm和Pc的公式进行了解读,此公式为M.Srinivas 和 L .M. Patnaik在1994年的<Adaptive Probabilities of ...
- 小K的H5之旅-实战篇(一)
一.前言 本K在经过两个星期的html和css学习之后,第一次去尝试完成一个网站主页的制作.在四天之后,本K也终于完成了杰瑞教育主页的html和css部分,至于部分涉及js的部分,因为本K还没有学习过 ...
- Python一键升级所有 模块/package
import os,time allPackage=os.popen('pip list') allPackage=allPackage.read() allPackage=allPackage.sp ...
- CSS浮动、绝对、相对定位
浮动 float:属性{ float:none; 默认值,对象,不漂浮 float:left; 文本流向对象的右边 float:right; }; 清除浮动 clear:属性{ clear:no ...
- C++构造函数(二)
本篇是介绍C++的构造函数的第二篇(共二篇),属于读书笔记,对C++进行一个系统的复习. 复制构造函数 复制构造函数是构造函数的一种,也被称为拷贝构造函数,他只有一个参数,参数类型是本类的引用.默认构 ...
- JS问题笔记——模拟Jq底层实现工厂模式
<script type="text/javascript"> (function (window,undefined){ function _$(arguments) ...
- Python os模块实例之遍历目录及子目录指定扩展名的文件
需求:在该目录下有很多子目录(如下图,截图了部分),现要从该目录和所有子目录下找到所有扩展名为.meta的文件,并获取文件中第二行guid的值(': '后面的),然后将所有guid的值输出到另一文件中 ...
- LogMiner的使用
LogMiner是用于Oracle日志挖掘的利器. 百科解释: LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归 ...