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

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

转载于:https://www.cnblogs.com/lvhaiqing/p/10036491.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值