>백엔드 개발 >PHP 튜토리얼 >PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

墨辰丷
墨辰丷원래의
2018-05-23 14:40:511837검색

이 글은 제3자 실시간 물류 업데이트 획득을 실현하기 위한 PHP를 주로 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.

서문

물류를 사용해야 하는 최근 프로젝트. 인터넷을 통해 물류에 대한 타사 API가 여전히 많다는 사실을 알게 되었고 Express Bird는 무료 타사 인터페이스를 선택했습니다. API는 전 세계 400개 이상의 물류 익스프레스 인터페이스를 영구적으로 무료이며 무제한으로 통합합니다. 인터페이스는 여러 채널을 통해 익스프레스 회사와 통신하며 가용성은 99.9% 이상에 도달하고 푸시 속도는 액세스 안정성을 보장하도록 맞춤화됩니다. 파티 시스템.

사용 프로세스

http://www.kdniao.com/에 로그인한 후 먼저 등록을 해야 합니다. 사용자 관리 배경에서 API 신청 옵션이 있습니다. API를 신청하기 전에 실명 인증이 필요합니다. 인증 후에도 API 인터페이스가 매우 풍부합니다.

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

실시간 쿼리를 사용한다면 실시간 쿼리 API를 신청하기 때문이죠.

API 사용 흐름도

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

흐름도에서 알 수 있듯이

사용자는 특급배송 번호와 특급업체만 입력하면 됩니다

물류 현황을 API를 통해 받아 결과를 반환합니다

we get it 결과는 실시간으로 처리되어 표시됩니다.

API 매개변수

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

위는 공식 API 매개변수이지만 공식 데모를 통해 자세히 알아볼 수 있습니다. 공식 데모도 간단하고 이해하기 쉽습니다. 우리는 그것을 다시 캡슐화할 수 있습니다.

캡슐화된 API

API를 사용하려면 세 가지 고정 매개변수가 필요합니다

1. 판매자 ID

2. API 키

3. 요청 URL, ReqURL

판매자 ID 및 API 키는 Express Bird 웹사이트에서 확인할 수 있습니다. 관리 홈페이지에서 확인하실 수 있으며, 요청 URL은

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;
}

이 메인 메소드에는 두 개의 매개변수가 전달되는데, 하나는 특송 회사 번호이고 다른 하나는 물류 주문 번호입니다.

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

암호화 방법인 $requestData도 암호화해야 합니다.

/*
 * 进行加密
 */
function encrypt($data, $appkey) {
  return urlencode(base64_encode(md5($data.$appkey)));
}

암호화 후 ReqURL을 통해 직접 접속하며, 반환되는 데이터는 물류정보입니다.

PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.

소스 코드

<?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);

위 내용은 이 글의 전체 내용이므로, 모든 분들의 공부에 도움이 되길 바랍니다.


관련 권장사항:

php는 문자열의 모든 공백을 제거합니다

두 가지 작은 것, ASP/PHP 학습 도구를 보냅니다. JavaScript_javascript Skills

로 작성 dom_php Skills

을 기반으로 한 php book xml 형식 데이터 예제

위 내용은 PHP는 물류 업데이트에 대한 제3자의 즉각적인 액세스를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.