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

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

使用方法:

#查快递(或三个首字母ckd)#快递编号#快递单号
如(查询EMS单号为1034616494006的快递):
#ckd#15#1034616494006
常用快递编号:<br />
15EMS,56申通,57顺丰,77圆通,
80韵达,87中通,85宅急送,62天天

1. class.base.php文件:

<?php
/**
 * 微信公众平台基础类 For Fshare
 * @author: Skiychan
 * @created:  2013.11.19
 */
class Wechat{
// public $token = '';
/* public function __construct($token){
  $this->token = $token;
 }  */
 //判断是否来自微信服务器
/* public function valid(){
  $echoStr = $_GET["echostr"];
  if($this->checkSignature()){
   echo $echoStr;
   exit;
  }
 }
*/
 public function responseMsg(){
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  if (!empty($postStr)){
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
   $fromUsername = $postObj->FromUserName;
   $toUsername = $postObj->ToUserName;
   $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>";
   if(!empty($keyword)){
    //当输入文字类型
    if($msgType = "text"){
     //$contentStr = $keyword.$fromUsername.$time;
     //$preg = "/^\#([\W\w]*?)\#([\W\w]*?)\#(.*)/"; //0为功能,1为选项,2为余下的值
     //$preg = "/\#([\w]+)/"; //0为功能,1为选项,2为余下的值
     $preg = "/\#([\w\d\x{4e00}-\x{9fa5}]+)/u"; //0为功能,1为选项,2为余下的值
     preg_match_all($preg,$keyword,$newdata);
     $fn_name = $newdata[1][0];
     //获取快递的参数
     if(strtolower($fn_name)=="skiy"){
      $me = "我是此公众帐号的开发者,英文名Skiy。\n如果你对本功能有任何意见和建议,欢迎联系我,\n我的QQ是1005043848\n微信是forskiy,邮箱:\ndeveloper@zzzzy.com";
      $contentStr = $me;
     }
     //获取快递的参数
     if($fn_name=="快递"||strtolower($fn_name)=="kuaidi"){
      $kdlist = '';
      //启用PDO连接sqlite的方式
      $db = new PDO("sqlite:somedata/data.dat");
      $results = $db->query('SELECT * FROM kuaidi')->fetchAll();
      foreach ($results as $key=>$row) {
       //var_dump($row);
       //$list_one = $row['id']." ".$row['code']." ".$row['company']."\n";
       $list_one = $row['id'].' '.$row['company']."\n";
       $kdlist = $kdlist.$list_one;
      }
      //主机支持sqlite3的方式
/*      $db = new SQLite3("somedata/data.dat");
      $results = $db->query('SELECT * FROM kuaidi');
      while ($row = $results->fetchArray()) {
       //var_dump($row);
       $list_one = $row['id']." ".$row['code']." ".$row['company']."\n\r";
       $kdlist = $kdlist.$list_one;
      }  */
      $contentStr = $kdlist;
     }
     if($fn_name=="查快递"||strtolower($fn_name)=="ckd"){
      $id = $newdata[1][1];
      $num = $newdata[1][2];
      $db = new PDO("sqlite:somedata/data.dat");
      $results = $db->query('SELECT code,company FROM kuaidi WHERE id = '.$id)->fetchAll();
      $code = $results[0]['code'];  //获取英文代码
      $com = $results[0]['company'];  //获取公司名称
      $numinfo = "快递:".$com."\n"."单号:".$num."\n";
      $kd_url = "http://m.kuaidi100.com/query?type=".$code."&postid=".$num;
      $json_getdata = file_get_contents($kd_url);
      $get_kdinfo = json_decode($json_getdata);  //object
      $get_kdinfo = json_decode($json_getdata,true); //array
      $last_t = "查询时间:\n".$get_kdinfo['updatetime']."\n\n";  //查询时间
      $kd_shipinfo = $get_kdinfo['data']; //快递数据数组
      $kd_total = count($kd_shipinfo)-1;
      $ship = '';
      //物流倒序详情
      for($i = $kd_total;$i>=0;$i--){
       $shipinfo = $kd_shipinfo[$i]['time']."\n".$kd_shipinfo[$i]['context']."\n";
       $ship = $shipinfo.$ship;
      }
      //顺序物流详情
      /*foreach ($kd_shipinfo as $v){
       $shipinfo = $v['time']."\n".$v['context']."\n";
       $ship = $shipinfo.$ship;
      }
      */
      $get_kdinfo = $numinfo.$last_t."【物流详情】\n".$ship;
      if($ship){
       $contentStr = $get_kdinfo;
      }else{
       $contentStr = $numinfo.">没有物流数据!";
      }
     }
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
     echo $resultStr;
    }else{
     echo "Input something...";
    }
   }
  }else {
   echo "You have no enter something...";
   exit;
  }
 }
 //判断签名,返回bool
 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;
  }
 }
}

2. index.php文件:

<?php
/**
 *
 * 微信公众平台消息接口 For Fshare(分享资讯)
 * @author: Skiychan (Wechat:forskiy)
 * @created:2013.11.19
 *
 */
include_once 'class.base.php';
define('TOKEN', 'skiychan');
$wx = new Wechat();
//$wx->valid();
$wx->responseMsg();

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索微信公众平台
快递查询
iframe用法实例、java枚举类的用法实例、java map用法 实例、ajax用法实例、vb随机函数用法和实例,以便于您获取更多的相关知识。

时间: 2024-10-29 23:26:37

微信公众平台之快递查询功能用法实例_php技巧的相关文章

php实现基于微信公众平台开发SDK(demo)扩展的方法_php技巧

本文实例讲述了php实现基于微信公众平台开发SDK(demo)扩展的方法.分享给大家供大家参考.具体分析如下: 该扩展基于官方的微信公众平台SDK,这里只做了简单地封装,实现了一些基本的功能(如天气查询,翻译,自动聊天机器人,自定义菜单接口)仅供学习之用.代码如下: 复制代码 代码如下: define("TOKEN", "xingans"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->respo

微信公众平台上线原创声明功能暂时向微信认证媒体公测

1月22日,微信公众平台在晚间发布声明称,为维护作者权益,鼓励优质内容产生,微信公众平台上线原创声明功能,暂时面向微信认证的媒体类型公众帐号公测. 该声明表示,原创文章在原创声明成功后,微信公众平台会对该文章添加"原创"标识,当其他用户在微信公众平台发布已进行原创声明的文章时,系统会为其注明出处. 如何申请原创声明 原创者可在微信公众平台后台的"素材管理"处进入"图文消息"编辑,点击"申请原创声明".并填写提交原创声明的信息.

微信公众平台推数据统计功能 商业价值可量化

原标题:微信公众平台推出数据统计功能将引起3个变化8月29日晚,微信产品团队通过服务号"微信公众平台"发布消息,宣布"微信公众平台增加数据统计功能".与此同时,细心的用户发现登陆微信公众平台,后台界面上增加了"数据统计"的新菜单,菜单中分为用户分析.图文分析和消息分析三大项,用户可以查看从2013年7月1日起的数据情况.尽管这次"数据统计"功能在微信公众平台 灰度上线,但将引起的3个变化微妙而不乏战略意义,值得重视.变化一:大

微信公众平台开发之天气预报功能_php实例

最近有项目需求给微信公众号上增加了天气预报功能,使用百度提供的车联网API V3.0中的天气查询功能实现.先上一张最终效果图: 项目需求:有连接好的微信平台,有百度注册帐号,需要在百度LBS开放云平台,添加应用,获取AK代码,PHP代码编辑器,如EditPlus等 下面详细介绍下开发步骤: 第一步:准备工作       登录微信公众平台,检查服务器配置是否已启用,URL(服务器地址) 是否已配置Token(令牌),与自己写的微信入口文件中的Token(令牌一致),如下图:然后点击提交,只至网页上

云微客微信公众平台高级接口系列功能率先推出

中介交易 SEO诊断 淘宝客 云主机 技术大厅 继上次云微客版本的更新,用户界面和功能都获得阶段性的飞跃,这少不了全国各地的代理商和准代理提出的宝贵意见.当中最受大家关注的,无疑是针对已认证服务号微信早前公布的五大接口功能,3721.html">2014年5月3日,云微客结合五大接口功能正式上线,大大丰富了商家在微信营销过程中的各项需求.以下让我们来介绍这次更新的内容: 1.数据魔方 数据魔方,全方位提供客户行为分析数据,帮助商家更精准掌握客户行为,对微信营销策划及效果评估作出实质数据支持

微信公众平台新增评论管理功能 可显示用户评论

一大早打开微信公众平台,发现插件那边新增了"评论管理"功能组件,查看了一下,可以显示用户评论.微信公众平台要整合微社区的节奏? 通过腾讯微信相关公告消息称,开通微信认证的公众号可以申请添加该功能模块,发布之前选择开启评论才能评论.可以选择精选评论,公众帐号文章只显示被运营者放入精选的评论.

微信公众平台开放设备连接功能

摘要: 微信公众平台开放了设备连接功能,可以让公众号和终端设备之间互相传输数据.该功能当前支持智能可穿戴设备,其他硬件设备产品据说会陆续开放,支持蓝牙2.X,3.X,4.0,Wi-Fi以及 微信公众平台开放了设备连接功能,可以让公众号和终端设备之间互相传输数据.该功能当前支持智能可穿戴设备,其他硬件设备产品据说会陆续开放,支持蓝牙2.X,3.X,4.0,Wi-Fi以及移动网络接入. 这项功能只有获得微信资质认证和名称认证的服务号(大V)才能申请开通,官方给出的具体步骤如下: 1.厂商基本资料提交

如何使用微信公众平台开发模式实现多客服_php实例

其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧! 在这篇微信公众平台开发教程中,我们将介绍如何使用开发模式实现多客服系统. 一.回复多客服消息 在新的微信协议中,开发模式也可以接入客服系统. 开发者如果需要让用户使用客服系统,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_s

php微信公众平台开发(三)订阅事件处理_php实例

一.简介 新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应回复处理. 在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台,通俗一点讲就是该平台的"使用说明书". 本文将详细讲述对subscribe事件的处理过程,回复相应信息提升交互性. 二.思路分析 微信目前提供了五种消息类型,分别为: 文本消息(text): 图片消息(image): 地理位置消息(location): 链接消息(link): 事件推送(e