zycom/jos-php-sdk

京东PHP接口SDK

dev-master 2016-11-11 06:33 UTC

This package is auto-updated.

Last update: 2024-09-29 04:53:11 UTC


README

v2版适用于PHP5.4以上,非PHP5.4版本有使用说明

目录结构

/JosSdk.php			自动加载助手类(当前就自动加载几个类,完全可以不用此助手)
/stream				主动通知实现,通过pub/sub模式重新设计了处理机制,应对大流量场景更出色
/jos/JosClient.php	api客户端
/jos/JosRequest.php	具体一个api的封装
/jos/Jos.php        api客户端的封装,添加了code换token,组装授权网址等常用方法
/jos/exception/JosSdkException.php api客户端异常类
/jos/exception/JosException.php api返回错误异常

错误反馈

QQ:347513004

快速使用

通过实例JosRequest来组装请求参数,将JosRequest传递给JosClient的execute方法来请求API。如果API返回错误会抛出JosException异常,如果SDK客户端出错会抛出JosSdkException异常。

以订单检索为例(http://jos.jd.com/api/detail.htm?apiName=360buy.order.search&id=393)

//如果用JosSdk.php来加载或者composer来加载则可以注释掉这里
require_once 'jos/JosClient.php';
require_once 'jos/JosRequest.php';
require_once 'jos/exception/JosException.php';
require_once 'jos/exception/JosSdkException.php';
//组装请求参数
$req=new JosRequest('360buy.order.search');
$req->order_state='WAIT_SELLER_STOCK_OUT';
$req->page=1;
$req->page_size=20;
//实例化客户端
$client=new JosClient();
$client->appkey='XXXXXXXXXXXXXXXX';
$client->secretKey='XXXXXXXXXXXXXXXXX';
//商家授权access_token,下面有如何获取token示例
$accessToken='XXXXXXXXXXXXX';
//发送请求返回数据
$resp=$client->execute($req,$accessToken);
print_r($resp);

通过Jos.php实现授权登录,auth code换access_token流程

//如果用JosSdk.php来加载或者composer来加载则可以注释掉这里
require_once 'jos/JosClient.php';
require_once 'jos/JosRequest.php';
require_once 'jos/exception/JosException.php';
require_once 'jos/exception/JosSdkException.php';
require_once 'jos/Jos.php';
//实例化客户端并返回登录授权网址
$client=new Jos();
$client->appkey='XXXXXXXXXXXXXXXX';
$client->secretKey='XXXXXXXXXXXXXXXXX';
$client->redirectUri='https:///test.php';
$authUrl=$client->getAuthorizeUrl();
//echo $authUrl;exit();

//授权完成,传回auth code
if(isset($_GET['code'])){
 $token=$client->fetchAccessToken($code);
 print_r($token);
}

PHP5.4以下版本使用

SDK最大限度地做了兼容,通过简单修改就可以正常使用

json_decode在5.4以下版本不能很好地处理big int,京东的一些数字会非常大,造成异常,可以通过修改或继承JosClient.jsonDecode方法来更换为您的处理方式

如果没有安装curl,可以修改JosClient.curl方法来切换到自己的方法,例如通过file_get_contents来发送get或post请求

源码解读

示例中已有简单介绍,可以查看引入的几个类

Java的SDK是一个API对应一个类,PHP的SDK最初也按照这个模式实现。由于京东新增加了接口或者有变动,SDK也需要跟着做修改,因此现在放弃了这种模式,通过向JosRequest类传入API名,给类属性赋值来组装参数

例如以前的示例:

$req=new OrderSearchRequest();
$req->setPage(1);

现在的:

$req=new JosRequest('360buy.order.search');
$req->page=1;

这样直接查看文档就能很容易组装出API请求,简单直接,节省内存

常见问题

有问题直接加QQ交流吧347513004