PHP实现物流查询(通过快递网API实现)

#物流查询实现

引言:目前快递公司太多了,不可能一个一个去申请api查询。这个时候,就可以通过合作,找一些中间商合作。我试了两家,一家是快递100,一家是快递网。他们都需要申请key。但是快递100有点变态,不允许查询热门物流,什么三通一达,顺丰等等都查询不了。快递网就很好了。至少都可以查到。

1.申请key

到快递网,填写申请,一般都会通过的。

2.物流管理,建表把物流公司管理起来

3.配置参数

把一些定量,配置起来,方便统一管理

<?php
// 物流 采用快递网http://www.kuaidi.com的api数据
return array(
	'kuaidi_key'=>'xxxxxxxxxxxxxx', // 这是申请的key值,支持每天2000次查询。是次,不是件。如果正式使用,可以跟快递网申请企业号。
	'kuaidi_iframe'=>'http://www.kuaidi.com/cominterface1616.html',
	'kuaidi_api'=>'http://api.kuaidi.com/openapi.html'
);
?>

4.编写函数

因为这是一个通用的函数,最好放到基类中,并且具有灵活性,可以传递参数,注释要清晰,方便他人使用。

/**
     * 获取物流信息
     * @author jim
     * @param String $com 物流公司编号
     * @param String $nu  物流单号,快递单号
     * @param String $show 0表示返回json,1表示返回xml
     * @param String $muti 0表示多行完整信息,1表示一行信息
     * @param String $order desc asc 按时间降序,升序
     * @return Array 
     * status
     * 0:物流单号暂无结果;
     * 3:在途,快递处于运输过程中;
     * 4:揽件,快递已被快递公司揽收并产生了第一条信息;
     * 5:疑难,快递邮寄过程中出现问题;
     * 6:签收,收件人已签收;
     * 7:退签,快递因用户拒签、超区等原因退回,而且发件人已经签收;
     * 8:派件,快递员正在同城派件;
     * 9:退回,货物处于退回发件人途中;
     *
     */
    protected function getExpress($com,$nu,$show = '0',$muti = '0',$order = 'desc') { //子类以及子类的子类可以访问
        $id         = trim(C('kuaidi_key'));
        $kuaidi_api = trim(C('kuaidi_api'));

        $url = $kuaidi_api.'?id='.$id.'&com='.$com.'&nu='.$nu.'&show='.$show.'&muti='.$muti.'&order='.$order;
        $result = json_decode(file_get_contents($url),true);
        return $result;
    }

###tips: 别的地方,想用就可以调用了。返回纯净的数组数据,自己去处理成美丽的网页吧!

附上:快递网,快递公司对应的编号

分类	快递公司代码	公司名称
A		
	aae	AAE快递
	aramex	Aramex快递
B		
	bht	BHT快递
	youzhengguonei	包裹/平邮/挂号信
	baifudongfang	百福东方物流
	huitongkuaidi	百世汇通快递
C		
	coe	COE(东方快递)
	city100	城市100
D		
	depx	DPEX
	disifang	递四方
	dsukuaidi	D速物流
	debangwuliu	德邦物流
	datianwuliu	大田物流
	dhl	DHL国际快递
E		
	ems	EMS快递
	emsguoji	EMS国际
F		
	fedex	FedEx(国际)
	fedexus	FedEx(美国)
	rufengda	凡客如风大
	feikangda	飞康达物流
	feibaokuaidi	飞豹快递
G		
	gangzhongnengda	港中能达物流
	youzhengguonei	挂号信
	youzhengguoji	国际邮件
	youzhengguonei	国内邮件
	gongsuda	共速达
	guotongkuaidi	国通快递
H		
	hengluwuliu	恒路物流
	huaxialongwuliu	华夏龙物流
J		
	jiayiwuliu	佳怡物流
	jiayunmeiwuliu	加运美快递
	jixianda	急先达物流
	jialidatong	嘉里大通
	jd	京东快递
	jindawuliu	金大物流
K		
	kuaijiesudi	快捷快递
	kangliwuliu	康力物流
	kuayue	跨越物流
L		
	lianhaowuliu	联昊通物流
	longbangwuliu	龙邦速递
	lianbangkuaidi	联邦快递
	lejiedi	乐捷递
	lijisong	立即送
M		
	minghangkuaidi	民航快递
	meiguokuaidi	美国快递
	menduimen	门对门
	mingliangwuliu	明亮物流
N		
	ganzhongnengda	能达速递
P		
	pingandatengfei	平安达腾飞
	peixingwuliu	陪行物流
Q		
	quanfengkuaidi	全峰快递
	quanyikuaidi	全一快递
	quanritongkuaidi	全日通快递
	quanchenkuaidi	全晨快递
	sevendays	7天连锁物流
R		
	rufengda	如风达快递
S		
	shentong	申通快递
	shunfeng	顺丰速运
	suer	速尔快递
	haihongwangsong	山东海红
	shenghuiwuliu	盛辉物流
	shengfengwuliu	盛丰物流
	shangda	上大物流
	santaisudi	三态速递
	shenganwuliu	圣安物流
T		
	tnt	TNT快递
	tiantian	天天快递
	tiandihuayu	天地华宇
	tonghetianxia	通和天下
	tianzong	天纵物流
U		
	youshuwuliu	UC优速快递
W		
	wanxiangwuliu	万象物流
	wanjiawuliu	万家物流
X		
	xinbangwuliu	新邦物流
	xinfengwuliu	信丰物流
Y		
	yuantong	圆通速递
	yunda	韵达快运
	yuntongkuaidi	运通快递
	youzhengguonei	邮政国内
	youzhengguoji	邮政国际
	yuanchengwuliu	远成物流
	yafengsudi	亚风速递
	youshuwuliu	优速快递
	yuananda	源安达快递
	yuanfeihangwuliu	原飞航物流
	yuefengwuliu	越丰物流
Z		
	zhongtong	中通快递
	zhaijisong	宅急送
	zhongtiewuliu	中铁快运
	ztky	中铁物流
	zhongyouwuliu	中邮物流
	zhongtianwanyun	中天万运
	zhengzhoujianhua	郑州建华
	zhimakaimen	芝麻开门

转载于:https://www.cnblogs.com/jiqing9006/p/5166492.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PHP 可以通过使用现有的 Web 框架或手动编写代码来实现 RESTful API。 一种常用的方法是使用 Laravel 框架,它提供了一组强大的工具来简化 RESTful API 的开发过程。您可以使用 Artisan 命令行工具生成资源控制器,并通过定义路由和请求方法来处理 HTTP 请求。 如果您希望手动编写代码,可以使用 PHP 的内置 Web 服务器和库,如 Slim 框架或者纯 PHP 代码实现。您可以根据请求方法(GET、POST、PUT、DELETE)执行不同的操作,并使用 HTTP 状态代码和 JSON 数据格式返回响应。 总体而言,实现 RESTful API 并不复杂,只需要熟悉 HTTP 协议和 API 开发的基本概念即可。 ### 回答2: PHP可以很好地实现RESTful API。REST(Representational State Transfer)是一种设计风格,它利用HTTP协议中的请求方法和URL来表示资源的状态和操作。 在PHP中,可以使用一些常见的框架(如Laravel或Symfony)来快速实现RESTful API。这些框架提供了许多有用的工具和功能,简化了API的开发过程。 首先,需要定义API的路由。在Laravel中可以使用路由器(Router)来定义各个API端点的URL和请求方法。例如,可以使用`Route::get()`定义一个GET请求的端点,使用`Route::post()`定义一个POST请求的端点。 接下来,需要实现API的控制器。控制器负责处理具体的请求,并返回相应的数据或操作结果。可以根据实际业务需求来编写控制器的逻辑代码。 在控制器中,可以使用框架提供的一些便捷功能来处理请求参数、验证输入、调用模型或服务层等。例如,可以使用Laravel的请求对象(Request)来获取请求的参数,使用验证器(Validator)来验证输入的有效性。 对于API的返回结果,可以使用框架提供的响应对象(Response)来构建返回的数据。可以使用JSON格式来序列化数据,并使用HTTP状态码来指示操作的结果。 最后,可以使用框架提供的中间件(Middleware)来添加一些额外的处理逻辑。例如,可以通过中间件来实现身份验证、记录请求日志等。 总之,PHP具有强大的功能和丰富的框架支持,可以轻松实现RESTful API。通过合理地利用框架提供的各种功能和工具,可以高效地开发出健壮、可扩展和易于维护的API。 ### 回答3: PHP可以通过一些库和框架来实现RESTful API。其中,最常用的是使用Slim框架搭建RESTful API。 首先,我们需要安装Slim框架。可以通过Composer进行安装,运行以下命令: ``` composer require slim/slim ``` 安装完成后,我们可以开始编写代码来实现RESTful API。以下是一个简单的例子: ```php <?php require 'vendor/autoload.php'; use Slim\Factory\AppFactory; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; // 创建一个应用实例 $app = AppFactory::create(); // 定义GET请求的路由 $app->get('/api/users', function (Request $request, Response $response, $args) { // 处理GET请求的逻辑 // 从数据库或其他数据源获取用户数据 $users = [ ['id' => 1, 'name' => '张三'], ['id' => 2, 'name' => '李四'], ['id' => 3, 'name' => '王五'], ]; // 将用户数据转换为JSON格式并发送给客户端 $response->getBody()->write(json_encode($users)); return $response; }); // 定义POST请求的路由 $app->post('/api/users', function (Request $request, Response $response, $args) { // 处理POST请求的逻辑 // 从请求中获取用户数据 $data = $request->getParsedBody(); // 将用户数据保存到数据库或其他数据源 // 这里省略具体实现 // 返回成功的响应给客户端 $response->getBody()->write('用户创建成功'); return $response; }); // 运行应用 $app->run(); ``` 在上面的例子中,我们定义了两个路由,一个用于处理GET请求,另一个用于处理POST请求。GET请求的路由返回一个用户列表的JSON格式数据,POST请求的路由是用来创建新用户的。 通过上述方式,我们就可以使用PHP实现一个简单的RESTful API。当然,这只是一个基本的例子,实际应用的RESTful API会更加复杂。可以根据需要进行路由、验证、错误处理等其他操作来完善API的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值