【文章来源:脚本之家 文章地址: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;
}
}
} ?> |
以上就是本文的全部内容,希望对大家的学习有所帮助