京东jos 获取授权及php-sdk的使用示例
背景:项目需要使用京东的物流服务,中间各种交流、签合同过程不做赘述,作为程序员,凭什么总要依靠代码实现能力来判断,鬼知道自己哪天是什么样子,以后不做程序猿,也是一条好汉!可惜,口水吐完还得老老实实来搬砖。
其实,很不喜欢泛泛而谈,以下是实现授权的操作流程,仅做参考。
1.平台配置信息
(1).首先创建应用,然后进行授权12345...在新建的应用下配置回调路径,以方便测试。
(2).建议熟悉京东云宙斯的技术开发文档
(3).在回调函数设置正确的前提下,点击测试按钮,然后进行账户密码的登录授权
(4).此时很有可能报出页面失效等提示,后面提供了简单的测试代码
2.提示:
(1).注意回调Url的唯一性
(2).回调Url会返回不同情况下的信息,注意GET或POST的不同。
(3).因为根据应用的状态,access_token的时效性是不同的,有24小时的、有1年的。所以,可以将获得的access_token 以及账号公用信息存储到数据库中,以备后面的使用,等到下次时效到期,重新存储就好。
3.使用JOS所提供的php-sdk
(简单举例:获取京东物流订单信息--此处使用的是京东物流)
(1).注意:此处我使用的是ThinkPHP框架,所以在实例化类的时候,需要使用类似如下的代码:
Vendor('Jos.jd.JdClient');
(2).开发文档中有明确指出
——正式环境授权地址:https://oauth.jd.com/oauth/authorize? (需要拼接参数,无法直接访问)
——Https调用入口地址:https://api.jd.com/routerjson
参考代码如下:
$this->server_url = "https://api.jd.com/routerjson";
4.附录代码文件:
<?php namespace M\Controller; use Common\Model\JosModel; use Think\Controller; /* 红酒奖励 控制器 */ class JosController extends Controller { private $app_key;//应用的app_key private $app_secret;//即创建应用时的Appsecret(从JOS控制台->管理应用中获取) private $expires_in;//失效时间(从当前时间算起,单位:秒) private $access_token;//JOS 所回传的access_token值 private $refresh_token;//即授权时获取的刷新令牌 private $time;//授权的时间点(UNIX时间戳,单位:毫秒) private $jd_client ; private $server_url; public function __construct() { Vendor('Jos.jd.JdClient'); $model = new JosModel(); $res = $model->getData(); $info = $res[0]; $this->app_key = $info['app_key']; $this->app_secret = $info['app_secret']; $this->expires_in = $info['expires_in']; $this->access_token = $info['access_token']; $this->refresh_token = $info['refresh_token']; $this->time = $info['time']; $this->jd_client = new \JdClient(); $this->server_url = "https://api.jd.com/routerjson"; } public function oauth(){ $code = $_GET['code']; $appKey = 'DExxxxxxxxxxxxxxxxxxxxxx83'; $appSecret = '40xxxxxxxxxxxxxxxxxxxxxxxxx31'; $url = "http://www.xxxx.com/m/Jos/oauth.html"; $toUrl ="https://oauth.jd.com/oauth/token?grant_type=authorization_code&client_id=" .$appKey ."&client_secret=" .$appSecret ."&scope=read&redirect_uri=" .$url."&code=" .$code."&state=1234"; if(!$code){ //数据处理 此处其实是无法处理数据的,你问我,我问谁去啊?!!! echo 'hahahahhahahahah'; }else{ header("Location:".$toUrl); } } public function test(){ $appKey = 'DExxxxxxxxxxxxxxxxxxxxxx83'; $url = 'http://www.xxxx.com/m/Jos/oauth.html'; $toUrl = 'https://oauth.jd.com/oauth/authorize?response_type=code&client_id=' .$appKey.'&redirect_uri=' .$url.'&state=123'; header("Location:".$toUrl); } /** * 将获取到的token等信息 添加到数据库 下面的为获取的其中一次数据 注意时效性 */ public function addData(){ $data = array(); $data['access_token'] = '24xxxxxxxxxxxxxxxxxxxxae0'; $data['expires_in'] = '24xxxxxxxxxxxxxxxxxxxxxxxxe0'; $data['refresh_token'] = 'edxxxxxxxxxxxxxxxxxxxxxxxxxxx0f'; $data['time'] = '14xxxxx87475'; $model = new JosModel(); $res = $model->addData($data); echo $res; } /** * 查询京东快递物流跟踪信息 */ public function getTrace(){ //获取订单号 //$waybillCode = $_POST['waybillCode']; //事例京东订单号 $waybillCode = "23457562180"; //https://api.jd.com/routerjson 注:以后统一都使用https方式调用,之前使用http方式的请尽快切换一下入口地址。 Vendor('Jos.jd.request.EtmsTraceGetRequest'); $this->jd_client->appKey = $this->app_key; $this->jd_client->appSecret = $this->app_secret; $this->jd_client->accessToken = $this->access_token; $this->jd_client->serverUrl = $this->server_url;//SERVER_URL; $req = new \EtmsTraceGetRequest(); $req->setWaybillCode($waybillCode); $resp = $this->jd_client->execute($req, $this->jd_client->accessToken); var_dump($resp); } /** * 360buy.order.get 获取单个订单 */ public function getSingleOrder(){ Vendor('Jos.jd.request.OrderGetRequest'); $this->jd_client->appKey = $this->app_key; $this->jd_client->appSecret = $this->app_secret; $this->jd_client->accessToken = $this->access_token; $this->jd_client->serverUrl = $this->server_url; $req = new \OrderGetRequest(); //事例京东订单号 $waybillCode = "23457562180"; $req->setOrderId($waybillCode); //$req->setOptionalFields( "jingdong" ); //$req->setOrderState( "jingdong" ); $resp = $this->jd_client->execute($req, $this->jd_client->accessToken); var_dump($resp); } }
5.参考如下获取某一个物流单号的物流信息
京东jos 获取授权及php-sdk的使用示例相关推荐
- php模拟登录京东,京东jos 获取授权及php-sdk的使用示例
<?phpnamespaceM \Controller;useCommon\Model\JosModel;useThink\Controller;/*红酒奖励 控制器*/classJosCont ...
- 京东jos对接爬坑过程
需求:获取京东商家的订单 环境:java,官方宙斯SDK 1.申请账号注册开发者创建应用参考官方文档注册 注意一点是回调页面url:地址为用户访问应用的地址,当用户访问您的应用时,jos会把相关授权参 ...
- 使用HttpClient登录微博开放平台,获取授权code
最近需要使用微博开放平台的一些功能,由于官方sdk略坑,故决定自己写个HttpClient来模拟获取授权code.不多说,直接上代码. 首先配置微博开放平台基本参数. private static S ...
- qq接入和分享android,Android社交登录授权、分享SDK,支持微信、微博和QQ
社交登录授权,分享SDK 支持微信.微博.QQ登录授权 微信好友.微信朋友圈.微博.QQ好友.QQ空间分享 Gradlecompile 'com.elbbbird.android:socialsdk: ...
- 微信获取授权用户手机号
微信获取授权用户手机号 用户登录获取用户的sessionKey 这一步主要是用JSCODE通过微信接口获得 解密 public String decodePhone(String encryptedD ...
- 开启邮箱的SMTP服务获取授权码(QQ邮箱、163邮箱)
一.问题描述 需要使用QQ邮箱的SMTP服务授权码. 二.问题分析 登陆网页版QQ邮箱进行开启. 三.操作步骤 3.1.登陆自己的QQ邮箱 QQ邮箱官网登陆地址QQ邮箱,为亿万用户提供高效稳定便捷的电 ...
- QQ邮箱和163邮箱获取授权码
QQ邮箱 登录网页版qq邮箱: 点击设置 点击账户: 找到SMTP设置: 开启后就能获取到授权码,注意保存 163网易邮箱 登录163邮箱后,同样找到设置: 然后开启服务 同样能获取授权码
- 移动邮箱(@139.com):启用IMAP/SMTP服务+获取授权码
移动邮箱(@139.com)依托于国内三大运营商之一的中国移动(CMCC),可使用手机号直接登录. 与阿里云邮箱(@alimail.com)/电信邮箱等相比,移动邮箱无法直接使用登录密码在第三方邮箱( ...
- 青龙面板搭建和手机京东Cookie获取最新方法
青龙面板搭建和手机京东Cookie获取最新方法 条件和目的 一台服务器,自己趁活动时买一台就好,这里不做推荐. 可以用此脚本自动赚取京豆. 安装docker 详细安装步骤请点这里 # 获取 wget ...
最新文章
- UA MATH567 高维统计 专题0 为什么需要高维统计理论?——以线性判别分析为例
- javascript对时间的处理
- 我们学的技术会过时吗?甚至被淘汰?
- c语言ue,小话C语言中的cotinue和break
- 表格内容排序(js实现)
- c#扩展方法奇思妙用高级篇八:Type类扩展
- python显示时间_python日期时间处理总结
- C++ ofstream/ifstream读写文件demo
- Java 堆排序(大根堆及小根堆)
- 证券词汇集锦(中英文+注释版)
- 分形--朱利亚集合图形1
- c语言美元符号用法,R函数()中美元符号“$”的含义是什么?
- python里apply用法_Python中apply用法学习【转载】
- 使用微软TTS语音引擎实现文本朗读
- Flutter高德定位定位权限管理
- 用开源代码如何建立网站_建立更可插拔的开源文化
- 帮做Java_代写Heuristics、代做SAT、代写Java语言设计、代做Java代做Prolog|帮做Haskell程序...
- RabbitMQ-dlx死信队列
- 计算机启动的基本过程
- h3cr4900g3安装系统_R4900 G2 UEFI 安装Esxi 6.0
热门文章
- R语言之读取Excel及csv数据
- 公司电脑监控软件究竟有何作用?
- 无尽学习者修炼指南 v3.0
- Snapman设计中的思考
- MATLAB笔记之wordcloud文字云(lib)的基本使用
- SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length关于edittext找不到输入值这个
- python cookie动态请求_Python请求自动处理cookie
- 爬取偶像/私房小姐姐图片--爬虫基础篇
- Tensorflow五种花卉分类
- (Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】