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 接口要求传递的参数和解析的方式进行调整。
上一篇
旦悦php工作怎么样
下一篇
php设置了限权怎么修改
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章