首页 > 开发 > PHP > 正文

微信公众平台之快递查询功能用法实例

2024-05-04 23:34:15
字体:
来源:转载
供稿:网友

这篇文章主要介绍了微信公众平台之快递查询功能用法,实例分析了微信公众平台实现快递查询的相关技巧与具体用法,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了微信公众平台之快递查询功能用法。分享给大家供大家参考。具体如下:

使用方法:

#查快递(或三个首字母ckd)#快递编号#快递单号

如(查询EMS单号为1034616494006的快递):

#ckd#15#1034616494006

常用快递编号:

15EMS,56申通,57顺丰,77圆通,

80韵达,87中通,85宅急送,62天天

1. class.base.php文件:

 

 
  1. <?php 
  2. /** 
  3. * 微信公众平台基础类 For Fshare 
  4. * @author: Skiychan 
  5. * @created: 2013.11.19 
  6. */ 
  7. class Wechat{ 
  8. // public $token = ''; 
  9. /* public function __construct($token){ 
  10. $this->token = $token; 
  11. } */ 
  12. //判断是否来自微信服务器 
  13. /* public function valid(){ 
  14. $echoStr = $_GET["echostr"]; 
  15. if($this->checkSignature()){ 
  16. echo $echoStr; 
  17. exit; 
  18. } 
  19. } 
  20. */ 
  21. public function responseMsg(){ 
  22. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  23. if (!emptyempty($postStr)){ 
  24. $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  25. $fromUsername = $postObj->FromUserName; 
  26. $toUsername = $postObj->ToUserName; 
  27. $keyword = trim($postObj->Content); 
  28. $time = time(); 
  29. $textTpl = "<xml> 
  30. <ToUserName><![CDATA[%s]]></ToUserName> 
  31. <FromUserName><![CDATA[%s]]></FromUserName> 
  32. <CreateTime>%s</CreateTime> 
  33. <MsgType><![CDATA[%s]]></MsgType> 
  34. <Content><![CDATA[%s]]></Content> 
  35. <FuncFlag>0</FuncFlag> 
  36. </xml>";  
  37. if(!emptyempty($keyword)){ 
  38. //当输入文字类型 
  39. if($msgType = "text"){ 
  40. //$contentStr = $keyword.$fromUsername.$time; 
  41. //$preg = "/^/#([/W/w]*?)/#([/W/w]*?)/#(.*)/"; //0为功能,1为选项,2为余下的值 
  42. //$preg = "//#([/w]+)/"; //0为功能,1为选项,2为余下的值 
  43. $preg = "//#([/w/d/x{4e00}-/x{9fa5}]+)/u"//0为功能,1为选项,2为余下的值 
  44. preg_match_all($preg,$keyword,$newdata); 
  45. $fn_name = $newdata[1][0]; 
  46. //获取快递的参数 
  47. if(strtolower($fn_name)=="skiy"){ 
  48. $me = "我是此公众帐号的开发者,英文名Skiy。/n如果你对本功能有任何意见和建议,欢迎联系我,/n我的QQ是1005043848/n微信是forskiy,邮箱:/ndeveloper@zzzzy.com"
  49. $contentStr = $me
  50. }  
  51. //获取快递的参数 
  52. if($fn_name=="快递"||strtolower($fn_name)=="kuaidi"){ 
  53. $kdlist = ''
  54. //启用PDO连接sqlite的方式 
  55. $db = new PDO("sqlite:somedata/data.dat"); 
  56. $results = $db->query('SELECT * FROM kuaidi')->fetchAll(); 
  57. foreach ($results as $key=>$row) { 
  58. //var_dump($row); 
  59. //$list_one = $row['id']." ".$row['code']." ".$row['company']."/n"; 
  60. $list_one = $row['id'].' '.$row['company']."/n"
  61. $kdlist = $kdlist.$list_one
  62. }  
  63. //主机支持sqlite3的方式 
  64. /* $db = new SQLite3("somedata/data.dat"); 
  65. $results = $db->query('SELECT * FROM kuaidi'); 
  66. while ($row = $results->fetchArray()) { 
  67. //var_dump($row); 
  68. $list_one = $row['id']." ".$row['code']." ".$row['company']."/n/r"; 
  69. $kdlist = $kdlist.$list_one; 
  70. } */ 
  71. $contentStr = $kdlist
  72. if($fn_name=="查快递"||strtolower($fn_name)=="ckd"){ 
  73. $id = $newdata[1][1]; 
  74. $num = $newdata[1][2]; 
  75. $db = new PDO("sqlite:somedata/data.dat"); 
  76. $results = $db->query('SELECT code,company FROM kuaidi WHERE id = '.$id)->fetchAll(); 
  77. $code = $results[0]['code']; //获取英文代码 
  78. $com = $results[0]['company']; //获取公司名称 
  79. $numinfo = "快递:".$com."/n"."单号:".$num."/n"
  80. $kd_url = "http://m.kuaidi100.com/query?type=".$code."&postid=".$num
  81. $json_getdata = file_get_contents($kd_url); 
  82. $get_kdinfo = json_decode($json_getdata); //object 
  83. $get_kdinfo = json_decode($json_getdata,true); //array 
  84. $last_t = "查询时间:/n".$get_kdinfo['updatetime']."/n/n"//查询时间 
  85. $kd_shipinfo = $get_kdinfo['data']; //快递数据数组 
  86. $kd_total = count($kd_shipinfo)-1; 
  87. $ship = ''
  88. //物流倒序详情 
  89. for($i = $kd_total;$i>=0;$i--){ 
  90. $shipinfo = $kd_shipinfo[$i]['time']."/n".$kd_shipinfo[$i]['context']."/n"
  91. $ship = $shipinfo.$ship
  92. //顺序物流详情 
  93. /*foreach ($kd_shipinfo as $v){ 
  94. $shipinfo = $v['time']."/n".$v['context']."/n"; 
  95. $ship = $shipinfo.$ship; 
  96. } 
  97. */ 
  98. $get_kdinfo = $numinfo.$last_t."【物流详情】/n".$ship
  99. if($ship){ 
  100. $contentStr = $get_kdinfo
  101. }else
  102. $contentStr = $numinfo.">没有物流数据!"
  103. $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr); 
  104. echo $resultStr
  105. }else
  106. echo "Input something..."
  107. }else { 
  108. echo "You have no enter something..."
  109. exit
  110. //判断签名,返回bool 
  111. private function checkSignature(){ 
  112. $signature = $_GET["signature"]; 
  113. $timestamp = $_GET["timestamp"]; 
  114. $nonce = $_GET["nonce"];  
  115. $token = TOKEN; 
  116. $tmpArr = array($token$timestamp$nonce); 
  117. sort($tmpArr); 
  118. $tmpStr = implode( $tmpArr ); 
  119. $tmpStr = sha1( $tmpStr ); 
  120. if$tmpStr == $signature ){ 
  121. return true; 
  122. }else
  123. return false; 

2. index.php文件:

 

 
  1. <?php 
  2. /** 
  3.  
  4. * 微信公众平台消息接口 For Fshare(分享资讯) 
  5. * @author: Skiychan (Wechat:forskiy) 
  6. * @created:2013.11.19 
  7.  
  8. */ 
  9. include_once 'class.base.php'
  10. define('TOKEN''skiychan'); 
  11. $wx = new Wechat(); 
  12. //$wx->valid(); 
  13. $wx->responseMsg(); 

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表