PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送

  • 1. API接口的声明
  • 2. PHP脚本代码
  • 3. 运行结果

由于消息类型有多钟,本文中,“接收普通消息”我以接收文本消息为例,“接收事件推送”我以关注事件推送为例。

1. API接口的声明

  • 1) 接收文本消息

  • 2) 关注事件推送

2. PHP脚本代码

<?php
define("TOKEN", "peng");
$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {$wechatObj->responseMsg();    //调用responseMsg()接收消息
}else{$wechatObj->valid();    //其实已经不再调用
}class wechatCallbackapiTest
{private $access_token;public function __construct(){    //构造函数}public function valid(){//略,本系列第一篇中有代码}private function checkSignature(){//略,本系列第一篇中有代码}public function responseMsg(){$postArr = file_get_contents("php://input");    //php7.0只能用这种方式获取数据,之前的$GLOBALS['HTTP_RAW_POST_DATA']7.0版本不可用$postObj = simplexml_load_string($postArr);    //读取xml格式文件,记得安装php7.0-xml//接收关注事件推送:用户关注微信号后,将会受到一条“欢迎光临”的消息if(strtolower($postObj->MsgType) == 'event'){if(strtolower($postObj->Event) == 'subscribe'){$toUser       = $postObj->FromUserName;$fromUser  = $postObj->ToUserName;$time      = time();$msgType   = 'text';$content   = '欢迎光临!';$template  = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$info= sprintf($template,$toUser,$fromUser,$time,$msgType,$content);echo $info;}}//接收普通文本消息:用户发送“tuwen”后,将收到4条图文消息if(strtolower($postObj->MsgType)=='text' && trim($postObj->Content)=='tuwen'){$toUser   =$postObj->FromUserName;$fromUser =$postObj->ToUserName;$arr=array(array('title'=>'百度','description'=>"百度很棒!",   //单图文会显示,多图文不显示description'picUrl'=>'http://www.peng.com/baidu.jpg','url'=>'http://www.baidu.com',    //这里的网页也可以是自己写的html,php等网页),array('title'=>'中国亚马逊','description'=>"中国亚马逊很棒!",'picUrl'=>'http://www.peng.com/amazon_cn.png','url'=>'https://www.amazon.cn/',),array('title'=>'Amazon in UK','description'=>"Amanon is very good!",'picUrl'=>'http://www.peng.com/amazon_co_uk.png','url'=>'https://www.amazon.co.uk/',),array('title'=>'Amazon en France','description'=>"Amazon est très bon!",'picUrl'=>'http://www.peng.com/amazon_fr.png','url'=>'https://www.amazon.fr/',));$template="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><ArticleCount>".count($arr)."</ArticleCount><Articles>";foreach($arr as $k=>$v){$template .="<item><Title><![CDATA[".$v['title']."]]></Title><Description><![CDATA[".$v['description']."]]></Description><PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl><Url><![CDATA[".$v['url']."]]></Url></item>";}$template .="</Articles></xml> ";echo sprintf($template,$toUser,$fromUser,time(),'news');}}
}
?>

3. 运行结果

我申请了一个测试号,关注这个测试号以后,首先会自动出现“欢迎光临”的消息,然后我再发送一条消息“tuwen”,微信又自动给我回复四条上面定义的图文消息,运行结果如下:

PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送相关推荐

  1. 基于php的微信公众平台开发入门实例

    作者:zbtree 这篇文章主要介绍了基于php的微信公众平台开发入门,实例分析了微信公众平台从注册.配置方法及接口代码的实现技巧,深入浅出.希望可以帮助大家快速入门. CSDN学院开设了系列直播&l ...

  2. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装...

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  3. php微信公众平台开发类,php微信公众平台开发类实例

    本文实例讲述了php微信公众平台开发类.分享给大家供大家参考.具体分析如下: ThinkWechat.php类文件如下: class Wechat { /** * 微信推送过来的数据或响应数据 * @ ...

  4. 微信公众平台开发入门教程(三)消息类型讲解

    接收消息类型 目前普通用户能向公众账号推送五种格式的消息:文本(包括表情).语音.图片.视频.位置.链接.名片发送会失败. 下面就这五种分别详解如下: 1. 文本(包括表情) 发送文本 后台格式: & ...

  5. 微信公众平台开发,自定义菜单,群发消息,网页授权(3)

    前两节说的都是微信开发的初级篇,这一节说高级篇.微信公众号关注以后,下面都是有菜单的,底部有三个一级菜单,每个一级菜单可以添加5个二级菜单.一级菜单最多四个汉字,二级菜单最多7个汉字,多出来的汉字用& ...

  6. 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单

    我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...

  7. 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息

    第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...

  8. 高性能微信公众平台开发

    高性能微信公众平台开发 目前,微信平台的月活跃数已达4.38亿,微信已被越来越多的商家为一大重点营销平台.面对如此庞大的用户群,商家迫切需要提供定制化的服务.那么,如何运营微信公众号成为企业亟需解决的 ...

  9. 微信公众平台开发实战

    第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发 第三篇 :微信公众平台开发实战Java版之 ...

最新文章

  1. Servlet的Filter的使用
  2. Python导入sciry包出错
  3. 转一个,中文分词方法概述
  4. 一文探讨 RPC 框架中的服务线程隔离
  5. 湖南大学第十五届程序设计竞赛
  6. 关于sql中的with(nolock)
  7. 看完这13张图,不得不佩服还是外国人会玩人工智能
  8. es6中数组的解构_ES6中的数组解构简介
  9. 范华专栏 | 挪威主权基金2018年报解读
  10. JAVA 前端上传文件,后端解析文件流并写入数据库
  11. 地理探测器“运行时系统找不到指定文件”报错
  12. matlab控制信号发生器,Matlab 跳频信号发生器
  13. modelica语言学习心得
  14. Windows最简单的重装系统
  15. 找不到战网服务器ip地址,wow服务器ip地址-我怎么知道战网服务器的IP地址去PING, – 手机爱问...
  16. Android11 图片裁剪问题
  17. MAC查看软件安装路径
  18. 【写作中的复杂名词短语练习题】前置与后置修饰
  19. 吴恩达团队盘点2019AI大势:自动驾驶寒冬、Deepfake已成魔
  20. 王牌战士怎么用电脑玩 王牌战士模拟器玩法教程

热门文章

  1. Java简易实现凯撒密码——英文句子加密
  2. Swift MD5加密
  3. HTML+CSS大作业——二次元漫画(8页) 漫画网页设计制作 简单静态HTML网页作品 我的漫画网页作业成品 学生漫画网站模板
  4. JavaScript——Symbol类型
  5. 【电子产品】关于指纹考勤机识别率下降
  6. Multism14安装问题
  7. Slack 开发入门之 Incoming Webhooks:往 Slack 的 Channel 中发消息
  8. 分贝通携手衡石科技,用心护好客户「钱袋子」 增收节流数百万
  9. 第六章 网络学习相关技巧2(权重设置)
  10. vue 使用fetch 出现问题解决以及 相应知识学习