php利用快递100接口获取物流信息

PHP使用CURL调用快递100接口查询运单信息

下面是我封装的类:

<?php
/**
* 快递100接口调用类
* @author 齐云海
* date: 2019/05/29
*/

class Express100
{
  // 密钥
  private $key = '密钥';
  // 客户编号
  private $customer = '客户编号';

    /**
    * 发起请求
    * @param $com String 快递公司编号
    * @param $num String 快递单号
    */
    public function kd_request($com, $num)
    {
      // 请求参数
      $param = array(
        'com'=>$com,
        'num'=>$num
      );
      $param = json_encode($param);
      // 签名
      $sign = strtoupper(md5($param.$this->key.$this->customer));
      // 请求条件
      $post_data = array(
        'customer'=>$this->customer,
        'sign'=>$sign,
        'param'=>$param
      );
      $o="";
      foreach ($post_data as $k=>$v)
      {
        $o.= "$k=".urlencode($v)."&";    //默认UTF-8编码格式
      }
      $post_data=substr($o,0,-1);
      // CURL POST请求接口
      $url = 'https://poll.kuaidi100.com/poll/query.do';
      $ch = curl_init();//初始化curl
      curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页
      curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
      curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
      // 关闭SSL验证
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
      // 请求
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
      $data = curl_exec($ch);//运行curl
      if (curl_errno($ch)) {
        return curl_error($ch);
      }
      curl_close($ch);
      // 返回运单详情 ( 以数组的形式返回 )
      return json_decode($data, true);
    }

}

调用方式:(new Express100) -> kd_request('快递公司编号', '快递单号');

 

posted @ 2020-08-28 15:23  齐云海  阅读(921)  评论(0编辑  收藏  举报