Maison  >  Article  >  développement back-end  >  PHP réalise un accès instantané de tiers aux mises à jour logistiques

PHP réalise un accès instantané de tiers aux mises à jour logistiques

墨辰丷
墨辰丷original
2018-05-23 14:40:511791parcourir

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.

PHP réalise un accès instantané de tiers aux mises à jour logistiques

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'API

PHP réalise un accès instantané de tiers aux mises à jour logistiques

Comme le montre l'organigramme

Les utilisateurs doivent uniquement fournir le numéro de messagerie et livraison express L'entreprise


obtient le statut logistique via l'API et renvoie le résultat à


Nous obtenons le résultat et le traitons en temps réel pour l'afficher.


Paramètres API

PHP réalise un accès instantané de tiers aux mises à jour logistiques

PHP réalise un accès instantané de tiers aux mises à jour logistiques

Ceux ci-dessus sont officiels Paramètres API, nous pouvons consulter la démo officielle pour en savoir plus. La démo officielle est également simple et facile à comprendre. Nous pouvons l'encapsuler à nouveau.

API encapsulée

L'utilisation de l'API nécessite trois paramètres fixes

1. Identifiant du marchand

2.

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.

PHP réalise un accès instantané de tiers aux mises à jour logistiquesNous 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.

PHP réalise un accès instantané de tiers aux mises à jour logistiquesCode source

<?php
/**
 * 使用快递鸟api进行查询
 * User: Administrator
 * Date: 2017/4/22 0022
 * Time: 09:09
 */
class KuaidiController{
  const EBusinessID = 1285564;
  const AppKey = &#39;264ff9e0-2f4c-48d5-877f-1e0670400d18&#39;;
  const ReqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
  /**
   * @param $ShipperCode 快递公司编号
   * @param $order_sn 运单号
   */
  public function getMessage($ShipperCode,$order_sn){
    $requestData= "{&#39;OrderCode&#39;:&#39;&#39;,&#39;ShipperCode&#39;:&#39;".$ShipperCode."&#39;,&#39;LogisticCode&#39;:&#39;".$order_sn."&#39;}";
    $datas = array(
      &#39;EBusinessID&#39; => self::EBusinessID,
      &#39;RequestType&#39; => &#39;1002&#39;,//接口指令1002,固定
      &#39;RequestData&#39; => urlencode($requestData) ,
      &#39;DataType&#39; => &#39;2&#39;, //数据返回格式 2 json
    );
    //把$requestData进行加密处理
    $datas[&#39;DataSign&#39;] = $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(&#39;%s=%s&#39;, $key, $value);
    }
    $post_data = implode(&#39;&&#39;, $temps);
    $url_info = parse_url($url);
    if(empty($url_info[&#39;port&#39;]))
    {
      $url_info[&#39;port&#39;]=80;
    }
    $httpheader = "POST " . $url_info[&#39;path&#39;] . " HTTP/1.0\r\n";
    $httpheader.= "Host:" . $url_info[&#39;host&#39;] . "\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[&#39;host&#39;], $url_info[&#39;port&#39;]);
    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(&#39;ZTO&#39;,&#39;12345678&#39;);
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 supprime tous les espaces dans la chaîne


Envoyer deux petites choses, des outils d'apprentissage ASP/

PHP. Écrit en compétences JavaScript_javascript

exemple de données au format XML de livre php basé sur les compétences dom_php


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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn