京东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的魅力.比赛过程中,参赛者可以尽情 ...
随机推荐
- springboot thymeleaf和shiro标签整合
这里用的是 thymeleaf 2.x版本的 添加依赖 <dependency> <groupId>com.github.theborakompanioni</group ...
- 【JAVAEE学习笔记】hibernate02:实体规则、对象状态、缓存、事务、批量查询和实现客户列表显示
一.hibernate中的实体规则 实体类创建的注意事项 1.持久化类提供无参数构造 2.成员变量私有,提供共有get/set方法访问.需提供属性 3.持久化类中的属性,应尽量使用包装类型 4.持久化 ...
- 数据库MySQL纯净卸载
有些人在安装MySQL后,卸载后再次安装时,一直安装不上去,到最后不得不重装系统来安装MySQL.这里教大家如何将MySQL卸载干净,不影响下次安装. 卸载过程 1.停止mysql服务 2.进行卸载 ...
- JavaSE教程-04Java中循环语句for,while,do···while-练习2
1.编写一个剪子石头布对战小程序 该法是穷举法:将所有情况列出来 import java.util.*; public class Game{ public static void main(Stri ...
- Python进制转换(二进制、十进制和十六进制)
#!/usr/bin/env python # -*- coding: utf-8 -*- # 2/10/16 base trans. wrote by srcdog on 20th, April, ...
- Coursera 机器学习笔记(五)
主要第七周的内容:支持向量机 可以参考JerryLeed 的支持向量机SVM系列博客http://www.cnblogs.com/jerrylead 以及 pluskid的支持向量机系列博客http: ...
- File字节流
1. File f = new File("文件路径") 注意:相对路径:非web项目的相对都是以项目为起点.(src/a/txt(建议) 绝对路径:f: ...
- java之内部类
最近学了java,对内部类有一点拙见,现在分享一下 所谓内部类(nested classes),即:面向对象程序设计中,可以在一个类的内部定义另一个类. 内部类不是很好理解,但说白了其实也就是一个类中 ...
- 调用phprpc的时候出现Fatal error: Cannot redeclare gzdecode()
出现这个问题的原因是:php在5.4版本后,已经自包含了gzdecode()函数,开发者自己定义的gzdecode()函数会与其冲突. 在 ....\phpRPC\compat.php文件的第72行( ...
- 找到你在网页中缓存起来的flash文件
通过IE浏览器工具->Internet选项->常规->设置->Internet临时文件->查看文件(找到你在网页中缓存起来的flash文件)