商户开设了京东店、淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的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 接入使用笔记的更多相关文章

  1. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  2. JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

    前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...

  3. 微信公众平台开发,API接入与推送事件(1)

    博客好久没有更新了,今天说说微信开发.微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别.我们常说的微信开发也就是公众号开,微信公众号分为三个类 ...

  4. 微信企业红包api接入

    项目描述:基于微信浏览器的H5页面,接入微信支付接口和微信红包接口 一.接入前准备条件 1.微信公众号 需要基于已认证的微信公众号承载该H5页面.该条件默认已具备,本文重点为红包接口. 2.微信支付商 ...

  5. 对接京东jos遇到的坑 记录一下。方便查询

    坑很多,有一些忘记了.文档乱的很,有问题可以私信我一下我看能不能想起来. 坑一.添加商品接口. {"error_response": {"code":" ...

  6. 扫描仪API接入大全:Twain, WIA 或 两者不具有.[换个思路 春暖花开]

    最近做和扫描仪接入的扫描应用程序,深深感觉到了来自底层设备和WINDOWS协议的恶意.软件专业,对计算机深层次通知机制和协议,以及与之相连接的机器的接入协议和一些参数,当时并木有认真学习和了解,前一阵 ...

  7. JavaSE中线程与并行API框架学习笔记1——线程是什么?

    前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...

  8. .NET接入微信支付(一)JS API接入 V3

    前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点. 配置: 首先呢微信支付需要通过审核,审核啥的准备工作我就 ...

  9. 【活动公告】Hackathon —— 腾讯云AI API接入迷你赛

    一. 活动简介 编程马拉松(Hackathon)是将热爱软硬件开发的人聚集起来所举办的一项比赛,本次活动由腾讯云AI联合云+社区发起,希望让广大开发者体验到腾讯云AI的魅力.比赛过程中,参赛者可以尽情 ...

随机推荐

  1. data.table包简介

    data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...

  2. BAYESIAN STATISTICS AND CLINICAL TRIAL CONCLUSIONS: WHY THE OPTIMSE STUDY SHOULD BE CONSIDERED POSITIVE(转)

    Statistical approaches to randomised controlled trial analysis The statistical approach used in the ...

  3. [深圳/广州]微软SQL技术沙龙分享会(MVP)

    [深圳/广州] 新一期俱乐部活动报名开始,这次是广深地区SQL Server 技术沙龙分享会(MVP),SQL Server作为一个数据平台,不管是SQL Server 2017 on Linux 还 ...

  4. Ionic3新特性--页面懒加载1

    Ionic3新的懒加载机制给我带来了如下新特性: 避免在每一个使用到某Page的Module或其他Page中重复的import这个类(需要写一堆路径) 允许我们通过字符串key在任何想使用的地方获取某 ...

  5. characterEncodingFilter作用

    package com.demo.test; import java.io.IOException; import javax.servlet.Filter; import javax.servlet ...

  6. redis学习(2)--- Redis概述

    一.Redis介绍 高性能键值对数据库,支持的键值对数据类型: 字符串类型 列表类型 有序集合类型 散列类型 集合类型 官方测试读写速度: 测试50个并发程序,执行10万次请求 读的速度:每秒11万次 ...

  7. HashMap如何工作 - Java

    大多数人应该会同意HashMap是现在面试最喜欢问的主题之一.我和同事常常进行讨论,并很有帮助.现在,我继续和大家讨论. 我假设你对HashMap的内部工作原理感兴趣,并且你已经知道了基本的HashM ...

  8. Jenkin-持续集成

    1.Jenkins安装 本文将会介绍如何在windows 中安装Jenkins,并且使用Jenkins进行项目的构建. 首先我们进入到Jenkins 的官网下载地址:https://jenkins.i ...

  9. SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

    1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...

  10. Vulkan Tutorial 21 Staging buffer

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 顶点缓冲区现在已经可以正常工作,但相比于显卡内部读取数据, ...