热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信公众号开发(3)—历史上的今天小实例

功能是在关注意创3D打印测试这个订阅号之后,输入月日,比如0204(代表2月4日),会收到很多天历史上的这一天发生的大事件。代码部署环境是用了新浪sae,thi


功能是在关注意创3D打印测试这个订阅号之后,输入月日,比如0204(代表2月4日),会收到很多天历史上的这一天发生的大事件。

代码部署环境是用了新浪sae,thinkphp框架基础上实现功能。

控制器中:

namespace HomeController;
use ThinkController;

class IndexController extends Controller {
    //token验证,微信服务器发送post请求过来
    public function index(){
      $timestamp = $_GET["timestamp"];//a时间戳
      $nOnce= $_GET["nonce"];//随机数
      $token = "weixin";//token
      $signature = $_GET["signature"];//加密签名
      $echoStr = $_GET["echostr"];;//随机字符串
      //1)将token、timestamp、nonce三个参数进行字典序排序
      $tmpArr = array($token, $timestamp, $nonce);
      sort($tmpArr, SORT_STRING);
     //2)将三个参数字符串拼接成一个字符串进行sha1加密
     $tmpStr = implode( $tmpArr );
     $tmpStr = sha1( $tmpStr );
     //3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    if( ($tmpStr == $signature) && $echoStr ){
         echo  $echoStr;//第一次接入
         exit;
       }else{
           $this->responseMsg();//第二、三、、、、、、次接入,除了第一次接入,以后的接入不会传送$echoStr
       }
    }
    public function responseMsg(){
       //获取到微信推送过来的数据
       $postArr = $GLOBALS["HTTP_RAW_POST_DATA"];
       
       //处理消息
        $postObj = simplexml_load_string($postArr);//转成了对象
        //用户关注后,微信推送过来一个包含用户信息的xml数据包,我们接收后并回复
        //判断消息类型
        if(strtolower($postObj->MsgType) == "event"){
            //判断事件类型,是订阅(subscribe),还是退订(unsubscribe)
            if(strtolower($postObj->Event) == "subscribe"){
                //$cOntent= "旅行者,欢迎你--用户的openid:".$postObj->FromUserName."--开发者微信号:".$postObj->ToUserName."--消息类型:".$postObj->MsgType."--事件类型:".$postObj->Event;
                $cOntent= "欢迎你,旅行者,快过来,告诉你个秘密,你输入月日我就可以帮你查到历史上的大事件,比如0101";
                $wxSdkModel = new HomeModelIndexModel();
                $wxSdkModel -> reponseSubscribe($postObj,$content); 
            }
        }

 //调取历史上的今天接口,返回信息
        if(strtolower($postObj->MsgType) == "text"){
            $time = $postObj->Content;
            $yue = substr($time,0,2);
            $ri = substr($time,-2);
            //历史上的今天接口
            $path = "http://api.avatardata.cn/HistoryToday/LookUp?key=4fa3a138823747b48366757422b61977&yue=".$yue."&ri=".$ri."&type=1&page=1&rows=50";
            //初始化
            $ch = curl_init();
            //设置参数
            curl_setopt($ch,CURLOPT_URL,$path);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
            //调接口
            $res = curl_exec($ch);
            //关闭
            curl_close($ch);
            if(curl_errno($ch)){
                echo curl_error($ch);
            }
            $arr = json_decode($res,true);//不加true是对象,加true是数组
            $cOntent= "一共查到".$arr[‘total‘]."条数据n";
            $arrnews = $arr[‘result‘];
            foreach($arrnews as $k => $v){
                $content.= $v[‘year‘]."年的这一天".$v[‘title‘]."n";
            }
            $wxSdkModel = new HomeModelIndexModel();
            $wxSdkModel -> reponseText($postObj,$content);   
            }
    }

 

 

其中实例化的$wxSdkModel代表model类IndexModel.class.php

代码如下:

namespace HomeModel;
use ThinkModel;

class IndexModel{

//用户发送文本消息,接收到后回复文本消息
    public function reponseText($postObj,$content){
         $toUserName = $postObj->FromUserName;
         $fromUserName = $postObj->ToUserName;//开发者微信号(原始ID)
         $crateTime = time();
         $msgType = "text";
         $template="
               
               
               
                %s
               
               
               
";
                $info = sprintf($template,$toUserName,$fromUserName,$crateTime,$msgType,$content);
                echo $info; 
    }

}

其实这个model类就是一个集成的sdk,一些通用的方法都放在这里,不用每次都写一遍,比如回复文本消息,回复图文消息,回复图片消息,这里贴出的只是回复文本消息

的方法。

微信公众号开发(3)---历史上的今天小实例

原文:http://www.cnblogs.com/yinmeng/p/7225257.html




推荐阅读
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • linux时间字符串转正常时间 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 工作用可能会用到会话分组:Message是消息实体对象,里面有toId和fromId指明接收方ID和发送方Id,通过组合形式“12-22-”为map的key其中Mess ... [详细]
  • java开发公众号,java自学网公众号
    本文目录一览:1、JAVA微信公众号开发回复消息能回复多条吗?具体怎么代码实现? ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
author-avatar
Nicole-sasanh_880
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有