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


    【文章来源:脚本之家   文章地址:https://www.jb51.net/article/149205.htm】

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

    快递查询

    • 数组用法
    • foreach

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

    核心代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    $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整体代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <?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;
        }
      }
    }
      
    ?>

    以上就是本文的全部内容,希望对大家的学习有所帮助

    我是一名大学生,喜欢学习技术,希望和你一起进步。加油
  • 相关阅读:
    查询用户表及表结构
    动态页面静态化(转)
    轻松实现 Killer 级应用 Snap (转)
    继续认识OpenID——Benefits of OpenID (转自http://openid.net/getanopenid/individuals/)
    7 Difference Between RIA and Traditional Web Application(转载)
    解决了MovieClip缩略图问题
    Understanding Flex Print Job from A to Z (彻底了解FlexPrintJob)(精彩转载)
    Using Flex Buildin Print Function(Flex 打印功能系列转载)
    StackOverflow is an OpenIDenabled site??Why OpenID?What is OpenID?
    MovieClip实现拖拽等移动位置的功能
  • 原文地址:https://www.cnblogs.com/lvhaiqing/p/10036491.html
Copyright © 2020-2023  润新知