This article mainly introduces PHP to realize third-party real-time acquisition of logistics updates. It is very good and has reference value. Friends in need can refer to it
Preface
There is a requirement for a recent project, which is to use the logistics order number to instantly query logistics information. I learned from the Internet that there are still many third-party APIs about logistics, and the one I chose is Express Bird, Express Bird It is a free third-party interface. The API integrates more than 400 logistics and express delivery interfaces around the world. It is permanently free and unlimited. The interface communicates with the express delivery company through multiple channels. The availability reaches more than 99.9%. The push speed is customized and configured to ensure the stability of the access party's system. .
Usage process
Log in to the website http://www.kdniao.com/ and you must first register. After registration, go to the user management background , there is an option to apply for API. Note that real-name authentication is required before applying for API. After authentication, you can apply for API. Its API interface is still very rich.
Because if I use real-time query, I apply for the real-time query API.
API usage flow chart
As can be seen from the flow chart
The user only needs to provide the express delivery number and express delivery The company
gets the logistics status through the API and returns the result to
. We get the result and process it in real time for display.
API parameters
The above are official About the API parameters, we can look at the official demo to learn more. The official demo is also simple and easy to understand. We can encapsulate it again.
Encapsulated API
Using the API requires three fixed parameters
1. Merchant ID
2. API key
3. Request URL, ReqURL
The merchant ID and API key can be seen on the My Management homepage of the Express Bird website, and the request URL is
http://api. kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx, this can be seen in the interface document.
Main method
/** * @param $ShipperCode 快递公司编号 * @param $order_sn 运单号 */ public function getMessage($ShipperCode,$order_sn){ $requestData= "{'OrderCode':'','ShipperCode':'".$ShipperCode."','LogisticCode':'".$order_sn."'}"; $datas = array( 'EBusinessID' => self::EBusinessID, 'RequestType' => '1002',//接口指令1002,固定 'RequestData' => urlencode($requestData) , 'DataType' => '2', //数据返回格式 2 json ); //把$requestData进行加密处理 $datas['DataSign'] = $this -> encrypt($requestData, self::AppKey); $result = $this -> sendPost( self::ReqURL, $datas); return $result; }
In this main method, there are two parameters passed in, one is the express company number, and the other is the logistics order Number.
We also need to encrypt $requestData, which is the encrypt method.
/* * 进行加密 */ function encrypt($data, $appkey) { return urlencode(base64_encode(md5($data.$appkey))); }
After encryption, access directly through ReqURL, and the returned data is logistics information.
Source code
<?php /** * 使用快递鸟api进行查询 * User: Administrator * Date: 2017/4/22 0022 * Time: 09:09 */ class KuaidiController{ const EBusinessID = 1285564; const AppKey = '264ff9e0-2f4c-48d5-877f-1e0670400d18'; const ReqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx"; /** * @param $ShipperCode 快递公司编号 * @param $order_sn 运单号 */ public function getMessage($ShipperCode,$order_sn){ $requestData= "{'OrderCode':'','ShipperCode':'".$ShipperCode."','LogisticCode':'".$order_sn."'}"; $datas = array( 'EBusinessID' => self::EBusinessID, 'RequestType' => '1002',//接口指令1002,固定 'RequestData' => urlencode($requestData) , 'DataType' => '2', //数据返回格式 2 json ); //把$requestData进行加密处理 $datas['DataSign'] = $this -> encrypt($requestData, self::AppKey); $result = $this -> sendPost( self::ReqURL, $datas); return $result; } /** * post提交数据 * @param string $url 请求Url * @param array $datas 提交的数据 * @return url响应返回的html */ function sendPost($url, $datas) { $temps = array(); foreach ($datas as $key => $value) { $temps[] = sprintf('%s=%s', $key, $value); } $post_data = implode('&', $temps); $url_info = parse_url($url); if(empty($url_info['port'])) { $url_info['port']=80; } $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n"; $httpheader.= "Host:" . $url_info['host'] . "\r\n"; $httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n"; $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n"; $httpheader.= "Connection:close\r\n\r\n"; $httpheader.= $post_data; $fd = fsockopen($url_info['host'], $url_info['port']); fwrite($fd, $httpheader); $gets = ""; $headerFlag = true; while (!feof($fd)) { if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) { break; } } while (!feof($fd)) { $gets.= fread($fd, 128); } fclose($fd); return $gets; } /* * 进行加密 */ function encrypt($data, $appkey) { return urlencode(base64_encode(md5($data.$appkey))); } } $model = new KuaidiController(); $res = $model -> getMessage('ZTO','12345678'); echo "<pre class="brush:php;toolbar:false">"; var_dump($res);
The above is the entire content of this article, I hope it will be useful for everyone’s learning help.
Related recommendations:
php removes all spaces in the string
Send two small things, ASP/PHP learning tools. Written in JavaScript_javascript skills
php book xml format data example based on dom_php skills
The above is the detailed content of PHP realizes third-party instant access to logistics updates. For more information, please follow other related articles on the PHP Chinese website!