PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送
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: 实例一:接收普通消息和接收事件推送相关推荐
- 基于php的微信公众平台开发入门实例
作者:zbtree 这篇文章主要介绍了基于php的微信公众平台开发入门,实例分析了微信公众平台从注册.配置方法及接口代码的实现技巧,深入浅出.希望可以帮助大家快速入门. CSDN学院开设了系列直播&l ...
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装...
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...
- php微信公众平台开发类,php微信公众平台开发类实例
本文实例讲述了php微信公众平台开发类.分享给大家供大家参考.具体分析如下: ThinkWechat.php类文件如下: class Wechat { /** * 微信推送过来的数据或响应数据 * @ ...
- 微信公众平台开发入门教程(三)消息类型讲解
接收消息类型 目前普通用户能向公众账号推送五种格式的消息:文本(包括表情).语音.图片.视频.位置.链接.名片发送会失败. 下面就这五种分别详解如下: 1. 文本(包括表情) 发送文本 后台格式: & ...
- 微信公众平台开发,自定义菜单,群发消息,网页授权(3)
前两节说的都是微信开发的初级篇,这一节说高级篇.微信公众号关注以后,下面都是有菜单的,底部有三个一级菜单,每个一级菜单可以添加5个二级菜单.一级菜单最多四个汉字,二级菜单最多7个汉字,多出来的汉字用& ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
- 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息
第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...
- 高性能微信公众平台开发
高性能微信公众平台开发 目前,微信平台的月活跃数已达4.38亿,微信已被越来越多的商家为一大重点营销平台.面对如此庞大的用户群,商家迫切需要提供定制化的服务.那么,如何运营微信公众号成为企业亟需解决的 ...
- 微信公众平台开发实战
第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发 第三篇 :微信公众平台开发实战Java版之 ...
最新文章
- Servlet的Filter的使用
- Python导入sciry包出错
- 转一个,中文分词方法概述
- 一文探讨 RPC 框架中的服务线程隔离
- 湖南大学第十五届程序设计竞赛
- 关于sql中的with(nolock)
- 看完这13张图,不得不佩服还是外国人会玩人工智能
- es6中数组的解构_ES6中的数组解构简介
- 范华专栏 | 挪威主权基金2018年报解读
- JAVA 前端上传文件,后端解析文件流并写入数据库
- 地理探测器“运行时系统找不到指定文件”报错
- matlab控制信号发生器,Matlab 跳频信号发生器
- modelica语言学习心得
- Windows最简单的重装系统
- 找不到战网服务器ip地址,wow服务器ip地址-我怎么知道战网服务器的IP地址去PING, – 手机爱问...
- Android11 图片裁剪问题
- MAC查看软件安装路径
- 【写作中的复杂名词短语练习题】前置与后置修饰
- 吴恩达团队盘点2019AI大势:自动驾驶寒冬、Deepfake已成魔
- 王牌战士怎么用电脑玩 王牌战士模拟器玩法教程
热门文章
- Java简易实现凯撒密码——英文句子加密
- Swift MD5加密
- HTML+CSS大作业——二次元漫画(8页) 漫画网页设计制作 简单静态HTML网页作品 我的漫画网页作业成品 学生漫画网站模板
- JavaScript——Symbol类型
- 【电子产品】关于指纹考勤机识别率下降
- Multism14安装问题
- Slack 开发入门之 Incoming Webhooks:往 Slack 的 Channel 中发消息
- 分贝通携手衡石科技,用心护好客户「钱袋子」 增收节流数百万
- 第六章 网络学习相关技巧2(权重设置)
- vue 使用fetch 出现问题解决以及 相应知识学习