php微信公众号开发之快递查询

 更新时间:2018年10月20日 11:01:48   作者:dq_095  
这篇文章主要为大家详细介绍了php微信公众号开发之快递查询功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了php微信公众号开发之快递查询的具体代码,供大家参考,具体内容如下

快递查询

  • 数组用法
  • foreach

查询接口是:爱快递:https://www.aikuaidi.cn/api/

核心代码如下:

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $type = $postObj->MsgType;
        $customrevent = $postObj->Event;
        $latitude = $postObj->Location_X;
        $longitude = $postObj->Location_Y;
        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[%s]]></MsgType>
              <Content><![CDATA[%s]]></Content>
              <FuncFlag>0</FuncFlag>
              </xml>";       
        switch ($type)
        { 
        case "text";
          $status=array('0'=>'查询出错','1'=>'暂无记录','2'=>'在途中','3'=>'派送中','4'=>'已签收','5'=>'拒收','6'=>'疑难件','7'=>'退回');//构建快递状态数组
          $kuaidiurl="http://www.aikuaidi.cn/rest/?key=ff4735a30a7a4e5a8637146fd0e7cec9&order={$keyword}&id=shentong&show=xml";//快递地址
          $kuaidistr=file_get_contents($kuaidiurl);//读入文件
          $kuaidiobj=simplexml_load_string($kuaidistr);//xml解析
          $kuaidistatus = $kuaidiobj->Status;//获取快递状态
          $kuaistr=strval($kuaidistatus);//对象转换为字符串
          $contentStr0 =$status[$kuaistr];//根据数组返回
          foreach ($kuaidiobj->Data->Order as $a)
          {  
            foreach ($a->Time as $b)
            {
              foreach ($a->Content as $c)
              {
                $m.="{$b}{$c}";}
              }
          }
          //遍历获取快递时间和事件
          $contentStr="你的快递单号{$keyword}{$contentStr0}{$m}";
          break;         
        default;
          $contentStr ="此项功能尚未开发";  
        }
        $msgType="text";
        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
        echo $resultStr;

index.php整体代码如下:

<?php
/**
 * wechat php test
 */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
  public function valid()
  {
    $echoStr = $_GET["echostr"];

    //valid signature , option
    if($this->checkSignature()){
      echo $echoStr;
      exit;
    }
  }

  public function responseMsg()
  {
    //get post data, May be due to the different environments
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

    //extract post data
    if (!empty($postStr)){

        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $type = $postObj->MsgType;
        $customrevent = $postObj->Event;
        $latitude = $postObj->Location_X;
        $longitude = $postObj->Location_Y;
        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[%s]]></MsgType>
              <Content><![CDATA[%s]]></Content>
              <FuncFlag>0</FuncFlag>
              </xml>";       
        switch ($type)
        { 
        case "text";
          $status=array('0'=>'查询出错','1'=>'暂无记录','2'=>'在途中','3'=>'派送中','4'=>'已签收','5'=>'拒收','6'=>'疑难件','7'=>'退回');//构建快递状态数组
          $kuaidiurl="http://www.aikuaidi.cn/rest/?key=ff4735a30a7a4e5a8637146fd0e7cec9&order={$keyword}&id=shentong&show=xml";//快递地址
          $kuaidistr=file_get_contents($kuaidiurl);//读入文件
          $kuaidiobj=simplexml_load_string($kuaidistr);//xml解析
          $kuaidistatus = $kuaidiobj->Status;//获取快递状态
          $kuaistr=strval($kuaidistatus);//对象转换为字符串
          $contentStr0 =$status[$kuaistr];//根据数组返回
          foreach ($kuaidiobj->Data->Order as $a)
          {  
            foreach ($a->Time as $b)
            {
              foreach ($a->Content as $c)
              {
                $m.="{$b}{$c}";}
              }
          }
          //遍历获取快递时间和事件
          $contentStr="你的快递单号{$keyword}{$contentStr0}{$m}";
          break;         
        default;
          $contentStr ="此项功能尚未开发";  
        }
        $msgType="text";
        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
        echo $resultStr;

    }else {
      echo "";
      exit;
    }
  }

  private function checkSignature()
  {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];  

    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if( $tmpStr == $signature ){
      return true;
    }else{
      return false;
    }
  }
}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • windows7下安装php的php-ssh2扩展教程

    windows7下安装php的php-ssh2扩展教程

    这篇文章主要介绍了windows7下安装php的php-ssh2扩展教程,本文同时适用XP系统,但Win8没有测试过,需要的朋友可以参考下
    2014-07-07
  • ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword ''AS''的解决方法

    ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword ''AS''

    这篇文章主要介绍了ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法,需要的朋友可以参考下
    2014-06-06
  • 又一个PHP实现的冒泡排序算法分享

    又一个PHP实现的冒泡排序算法分享

    这篇文章主要介绍了又一个PHP实现的冒泡排序算法分享,标题中的又一个是指本站已经有好几篇冒泡排序算法的文章了,如果这个没有满足你的要求,请看相关文章里的其他实现方法吧,需要的朋友可以参考下
    2014-08-08
  • 浅析iis7.5安装配置php环境

    浅析iis7.5安装配置php环境

    windows server 2008 和 windows server 2003 是目前国内比较主流的服务器操作系统,其搭建php的环境也是多种多样,其中IIS+Fastcgi+php+mysql安装是最简单的。
    2015-05-05
  • smarty半小时快速上手入门教程

    smarty半小时快速上手入门教程

    这篇文章主要介绍了smarty半小时快速上手入门教程,以实例的形式分析了smarty在实际使用过程中的属性、方法及具体用法,需要的朋友可以参考下
    2014-10-10
  • PHP执行linux命令常用函数汇总

    PHP执行linux命令常用函数汇总

    一般情况下,很少会用php去执行linux命令,不过特殊情况下,你也许会用到这些函数。以前我知道有二个函数可以执行linux命令,一个是exec,一个是shell_exec,通过本文给大家介绍PHP执行linux命令常用函数汇总,需要的朋友参考下
    2016-02-02
  • 解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题

    解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题

    今天小编就为大家分享一篇解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 使用composer安装使用thinkphp6.0框架问题【视频教程】

    使用composer安装使用thinkphp6.0框架问题【视频教程】

    这篇文章主要介绍了使用composer安装使用thinkphp6.0框架问题,通过一个小视频给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • php in_array() 检查数组中是否存在某个值详解

    php in_array() 检查数组中是否存在某个值详解

    php有时候需要判断某一个值是否存在于数组中,我们可以直接使用php内置函数in_array()来实现判断。php in_array 函数用于检查数组中是否存在某个值,如果存在,则返回true,否则返回false。本文章向大家介绍in_array函数的基本语法及使用实例,感兴趣的朋友可以参考一下。
    2016-11-11
  • thinkphp微信开之安全模式消息加密解密不成功的解决办法

    thinkphp微信开之安全模式消息加密解密不成功的解决办法

    使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录,对thinkphp加密解密相关知识感兴趣的朋友参考下
    2015-12-12

最新评论