php中怎么做物流查询
时间 : 2023-03-23 16:39:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在PHP中实现物流查询功能,需要使用接口或者SDK。国内常用的快递服务商有顺丰、圆通、中通等等,它们提供了一些API接口来方便使用者查询物流信息。下面以快递100的API接口为例,在PHP中讲解如何实现物流查询功能。

第一步:注册快递100开发者账号

在快递100官网上注册一个开发者账号,申请API密钥。在收到API密钥后,就可以使用快递100提供的API接口查询物流信息。具体步骤如下:

1.在浏览器中输入快递100官网网址:https://www.kuaidi100.com/

2.进入官网后,点击右上角的“免费注册”

3.填写注册信息,点击“同意并注册”按钮,等待邮件确认

4.确认注册邮件,激活账号

5.在快递100官网登录后,在“开放平台”-“API申请”-“新增API”中申请API密钥。

第二步:通过API接口获取物流信息

在PHP中使用API接口获取物流信息,可以通过curl函数进行访问。下面是一个获取顺丰快递物流信息的示例代码:

<?php

// 快递100 API URL

$url = 'http://www.kuaidi100.com/query';

// 快递单号

$number = 'SF123456789'; // 修改为你自己的快递单号

// 快递公司代码

$company = 'shunfeng'; // 修改为你自己的快递公司代码

// 通过curl函数请求API接口

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, 'type=' . $company . '&postid=' . $number);

$result = curl_exec($ch);

curl_close($ch);

// 输出查询结果

print_r($result);

?>

在上面代码中,$url是API接口的url地址,$number是快递单号,$company是快递公司代码。通过curl函数获取API接口返回的物流信息,输出到浏览器窗口中。

第三步:解析API接口返回的数据

API接口返回的数据是JSON格式的,需要使用相关函数将其解析成数组格式。在PHP中,可以使用json_decode函数将JSON格式的数据解析成数组。下面是一个解析API接口返回数据的示例代码:

<?php

// 快递100 API URL

$url = 'http://www.kuaidi100.com/query';

// 快递单号

$number = 'SF123456789'; // 修改为你自己的快递单号

// 快递公司代码

$company = 'shunfeng'; // 修改为你自己的快递公司代码

// 通过curl函数请求API接口

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, 'type=' . $company . '&postid=' . $number);

$result = curl_exec($ch);

curl_close($ch);

// 将JSON格式的数据解析成数组

$data = json_decode($result, true);

// 输出查询结果

print_r($data);

?>

在上面代码中,使用了json_decode函数将API接口返回的JSON格式数据解析成了数组格式的数据。现在可以根据需要提取数据并进行处理,以实现更加完善的物流查询功能。

综上所述,通过API接口和相关函数,PHP可以很方便的实现物流查询功能。每个快递公司提供的API接口可能有所不同,开发者可以根据自己的需要,通过API文档调用相应接口来实现快递物流查询功能。

PHP 代码实现物流查询一般需要先了解物流查询的 API 接口,大多数快递公司都提供了查询 API 接口,例如顺丰、EMS、圆通等等。查询快递物流一般需要用到以下基础知识:

1. HTTP 请求:查询 API 接口通常需要向服务器发送 HTTP 请求,通过获取返回的数据来查询快递物流信息。

2. 接口参数:通过传递不同的参数,可以查询不同快递公司的快递物流信息。

3. 解析 JSON:服务器返回的物流信息通常是 JSON 格式的,需要用 PHP 解析 JSON 并提取所需信息。

下面以一个简单的示例来介绍如何用 PHP 查询顺丰快递物流信息。

首先,我们需要获取顺丰快递的 API 接口地址,顺丰快递提供了一个免费的查询 API:http://www.sf-express.com/cn/sc/delivery_step/enquiry/waybill_query_tool.html。

该 API 接口要求传递参数包括快递单号、寄件人城市、收件人城市、授权 Token(可以从官网获取),我们可以用 PHP 的 cURL 库向 API 接口发送请求:

```php

$waybillNumber = '1234567890'; // 快递单号

$origin = '广州市'; // 寄件人城市

$destination = '北京市'; // 收件人城市

$token = 'XXXXXXXX'; // 授权 Token

$url = "https://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService"; // API 接口地址

$data = '<?xml version="1.0" encoding="UTF-8"?>

<Request service="RouteService" lang="zh-CN">

<Head>'.$token.'</Head>

<Body>

<RouteRequest

tracking_type="1"

tracking_number="'.$waybillNumber.'"

method_type="1"

reference_number=""

check_phone_no="YES"

platform="PC"

sender="'.$origin.'"

receiver="'.$destination.'"

/>

</Body>

</Request>';

$curl = curl_init();

curl_setopt_array($curl, array(

CURLOPT_URL => $url,

CURLOPT_RETURNTRANSFER => true,

CURLOPT_ENCODING => '',

CURLOPT_MAXREDIRS => 10,

CURLOPT_TIMEOUT => 30,

CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

CURLOPT_CUSTOMREQUEST => 'POST',

CURLOPT_POSTFIELDS => $data,

CURLOPT_HTTPHEADER => array(

'Content-Type: application/xml'

),

));

$response = curl_exec($curl);

$err = curl_error($curl);

curl_close($curl);

if ($err) {

echo 'cURL Error #:' . $err;

} else {

// 解析 XML

$xml = simplexml_load_string($response);

// 查找当前物流状态,如有需要可查找更多节点

$currentStatus = $xml->Body->RouteResponse->Route->RouteInfo->Desc;

echo '当前物流状态:'.$currentStatus.PHP_EOL;

}

代码中,首先传递了用于查询的参数,包括快递单号、寄件人城市、收件人城市、授权 Token,然后用 cURL 向 API 接口发送 POST 请求,并获取返回的数据。

由于返回的数据是 XML 格式的,我们可以使用 PHP 自带的 simplexml_load_string() 函数将其解析成可操作的对象,然后提取所需的物流信息。

查询快递物流信息的具体实现,还需要根据不同的快递公司 API 接口要求传递的参数和解析的方式进行调整。