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;

    }

  }

}

?>

     
2017最新 手把手PHP基础入门到实战构建原生商城
2017挑战高薪面试无忧最新最系统的PHP面试视频教程 
2017 PHP高级实战小程序商城 
360大牛全面解读PHP面试–某课网价值266元实战教程 
打造扛得住的MySQL数据库架构 MySQL优化实战案例教学 换个视角学习MySQL数据库
WORDPRESS拼音链接插件:PINYIN PERMALINK(中文链接转拼音) 
WORDPRESS标题别名自动翻译插件:WP SLUG TRANSLATE 
尚硅谷Redis NoSQL最佳入门课程 Redis极速入门视频教程 Redis NoSQL培训视频教程 
兄弟连NoSQL数据库之 Redis数据库管理与基础课程 Redis数据库零基础入门学习课程
童老师ThinkPHP5.0企业项目开发实战 第二季
Laravel大神推荐-基础入门+实战+拓展视频教程 
2017 最新 Laravel5.4实战快速开发自媒体网站   ...2
PHP开发高可用高安全App后端 
PHP WEB开发框架:Laravel 4 快速上手系列教程 Laravel 4简单轻松入门视频教程 
Laravel 5.4 快速开发简书-某课网价值199元实战教程 
Thinkphp 5.0 仿百度糯米开发多商家电商平台-某课网价值189元实战教程 
Yii 2.0开发一个仿京东商城平台-某课网价值268元实战教程 
2017最新全方位解读Laravel框架
PHP在职提升必备之设计模式精讲 
Drupal7系列培训入门到精通视频教程 开源内容管理框架Drupal7入门学习视频教程 

原文地址:https://www.cnblogs.com/virginiaff/p/10164460.html

时间: 2024-10-10 06:45:04

php微信公众号开发之快递查询的相关文章

微信公众号开发系列导航

 1.0.NET微信公众号开发-1.0初始微信公众号 1.0.NET微信公众号开发-1.0初始微信公众号 2.0.NET微信公众号开发-2.0创建自定义菜单  2.0.NET微信公众号开发-2.0创建自定义菜单 3.0.NET微信公众号开发-3.0查询自定义菜单  3.0.NET微信公众号开发-3.0查询自定义菜单 4.0.NET微信公众号开发-4.0公众号消息处理  4.0.NET微信公众号开发-4.0公众号消息处理 5.0.NET微信公众号开发-5.0微信支付  5.0.NET微信公众号开发

nodejs + BAE 搭建微信公众号开发平台

闲来无事创建了一个微信公众账号,名曰“深圳生活小助手”, 关注的人不多,平时发一些深圳新闻,趣事啥的,为了丰富公众号的内容,准备添加一些便民查询功能,例如天气预报.快递查询等等. 于是就有了本文的内容. 深圳的读者扫描关注支持下啊... 闲话不多说,本文主要介绍的就是如何基于nodejs和百度云搭建微信公众号开发平台,下一节介绍如何基于该平台实现了一个简单的天气预报查询功能的小例子. 1. 使用Express搭建本地站点 Express 是一个简洁.灵活的 node.js Web 应用开发框架,

VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启)

VopSdk一个高逼格微信公众号开发SDK(源码下载) VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启) 针对第一版,我们搞了第二版本,老规矩先定个目标. 一 我们的目标 a.移除PayExcute,统一执行入口,目前只保留一个入口Excute b.序列化特性统一,目前只用设置xml特性即可(反序列化时xml和json都可以直接用) c.支持文件上传,目前只有多客服管理上传头像接口用到过 d.使用T4模板自动生产所有Request.Response.以及所有测试Test(装

C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)

原文:C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C#微信公众号开发系列教程四(接收普通消息) C#微信公众号开发系列教程五(接收事件推送与消息排重) C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件) 第四,第五章已经讲了怎么处理用户发送的消息,本章就来讲讲怎么响应用户的

JAVA微信公众号开发入门

好久没进博客,最近应某人的要求,要每周写一篇博客,故此今天就把我这周刚学的微信公众号开发的知识在此总结总结,以供后人查阅.我写博客都是简要白话文,勿喷. 1.为什么要学微信公众号开发 微信的用户量庞大,微信公众号的完善和不断的开放力度,企业市场对公众号开发的需求不断增加 2.如何搭建微信开发平台 开发工具什么的就不说了,因为微信是要外网访问的,所有你必须有个网上的服务器资源,而且你必须申请一个微信公众号. 2.1申请微信公众号 公众号有3种:订阅号,服务号,企业号 区别是企业号适合内部人使用,因

微信公众号开发之自动消息回复和自定义菜单

(一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 上一篇我们大致讲解了下微信公众号开发的基本原理和流程概述.本章主要是对文本消息回复和自定义菜单做一个记录和分解 消息回复 处理请求,并响应 1)关注 也可参考官网文档:https://mp.weixin.qq.com/wiki 当微信用户关注公众账号时,可以给其适当的提示.可以是欢迎词,可以是帮助提示.示例代码如下: class EventHandler : IHandler

.NET微信公众号开发-4.0公众号消息处理

一.前言 微信公众平台的消息处理还是比较完善的,有最基本的文本消息,到图文消息,到图片消息,语音消息,视频消息,音乐消息其基本原理都是一样的,只不过所post的xml数据有所差别,在处理消息之前,我们要认真阅读,官方给我们的文档:http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html.首先我们从最基本的文本消息处理开始. <xml> <ToUserName><![CDATA[toUser]]&

.NET微信公众号开发-5.0微信支付

一.前言 在开始做这个功能之前,我们要做的第一件事情就是思考,如何做这个微信支付,从哪里开始,从哪里入手,官方的sdk说明什么的,有没有什么官方的demo,还有就是老板给我的一些资料齐全不,那些要申请的接口什么的都有没有. 经过自己的一些探索,在老板的催促下终于硬着头皮做完了这个,很坑很坑的微信支付,在此做一些总结,希望对你们有所帮助,本人能力有限,如果有什么说的不好,希望大家多多包涵. 二.开发前准备. 1.0微信支付官方开发者文档 2.0官方demo下载 我们用c#所以选择.net版本 不过

.NET微信公众号开发-6.0模板消息

一.前言 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板ID向用户主动推送提醒.通知消息.这个意思也就是,我们作为微信商户,不能主动的给用户推送消息,如果这个功能完全开放,那么用户有可能会受到大量的垃圾信息,为了做一个很好的控制,微信那边给我们开放了一个模板消息,通过模板消息我们可以友好的给用户发送一些相关的消息提醒. 二.开发前的准备 1.0模板消息官方文档地址 2.0查看我们的模板消息是否申请成功