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


Posted in PHP onOctober 20, 2018

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

快递查询

  • 数组用法
  • foreach

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

核心代码如下:

$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整体代码如下:

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

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
Apr 25 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
PHP 第一节 php简介
Apr 28 PHP
解析PHP缓存函数的使用说明
May 10 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
php有效防止同一用户多次登录
Nov 19 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
基于win2003虚拟机中apache服务器的访问
Aug 01 PHP
PHP中数组转换为SimpleXML教程
Jan 27 PHP
php微信公众号开发之翻页查询
Oct 20 #PHP
php微信公众号开发之校园图书馆
Oct 20 #PHP
php微信公众号开发之二级菜单
Oct 20 #PHP
php微信公众号开发之音乐信息
Oct 20 #PHP
php微信公众号开发之欢迎老朋友
Oct 20 #PHP
php微信公众号开发之秒杀
Oct 20 #PHP
php微信公众号开发之关键词回复
Oct 20 #PHP
You might like
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
Using the TextRange Object
2006/10/14 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
初中校园广播稿
2014/02/02 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
学习雷锋活动总结
2014/04/29 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
思想工作总结范文
2015/08/12 职场文书
小学班级管理心得体会
2016/01/07 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
总结Python常用的魔法方法
2021/05/25 Python
Python并发编程实例教程之线程的玩法
2021/06/20 Python