Cet article présente principalement PHP pour réaliser un accès instantané de tiers aux mises à jour logistiques. Il est très bon et a une valeur de référence. Les amis dans le besoin peuvent s'y référer
Avant-propos
Un projet sur lequel j'ai récemment travaillé exigeait que je doive utiliser le numéro de commande logistique pour vérifier instantanément les informations logistiques. J'ai appris sur Internet qu'il existe encore de nombreuses API tierces sur la logistique, et celle que j'ai choisie est Express Bird, Express Bird C'est une interface tierce gratuite L'API intègre plus de 400 interfaces de logistique et de livraison express dans le monde Elle est gratuite et illimitée en permanence L'interface communique avec la société de livraison express via. plusieurs canaux. La disponibilité atteint plus de 99,9%. La vitesse de poussée est personnalisée et configurée pour assurer la stabilité du système de l'utilisateur.Processus d'utilisation
Connectez-vous au site http://www.kdniao.com/ Vous devez d'abord vous inscrire. Accédez à l'arrière-plan de la gestion des utilisateurs, il existe une option pour demander l'API. Notez que l'authentification par nom réel est requise avant de demander l'API. Après l'authentification, vous pouvez demander l'API. Son interface API est toujours très riche. Parce que j'utilise des requêtes en temps réel, je postule pour l'API de requête en temps réel. Organigramme d'utilisation de l'APIParamètres API
API encapsulée
L'utilisation de l'API nécessite trois paramètres fixes1. Identifiant du marchand2.3. URL de demande, ReqURL
L'ID du commerçant et la clé API sont visibles sur la page d'accueil Ma gestion du site Web Express Bird, et l'URL de la demande est
http:// api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx, cela peut être vu dans le document d'interface.
Méthode principale
/** * @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; }
Dans cette méthode principale, deux paramètres sont transmis, l'un est le numéro de la société de messagerie et le l'autre est le numéro de commande logistique.
Nous devons également chiffrer $requestData, qui est la méthode de chiffrement.
/* * 进行加密 */ function encrypt($data, $appkey) { return urlencode(base64_encode(md5($data.$appkey))); }
Après le cryptage, on y accède directement via ReqURL, et les données renvoyées sont des informations logistiques.
Code source
<?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);
Ce qui précède est l'intégralité du contenu de cet article, j'espère vous pouvez en tirer des leçons.
Recommandations associées :
PHP. Écrit en compétences JavaScript_javascript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!