thinkphp wechat
该接口对应的文件为Com/Wechat.class.php, 主要用户接收微信推送过来的用户数据并自动回复。
注意:识别和分析用户发送的内容,并提供回复内容需要开发者更具实际情况自己实现,本接口值提供获取用户数据和自动回复方法。
执行流程
- 实例化WeChat类,并传入在微信后台填写的token
$wechat = new Wechat($token);
- 接收微信服务器推送的数据
$data = $wechat->request();
- 分析数据,决定要做出什么样的回复 (由开发者自己实现)
- 回复消息
$wechat->response($content, $type);
注意:在微信后台填写 TOKEN 和 URL 时验证Token的逻辑已经在Wechat类里面实现,你完全不需要考虑认证的情况。只需要保证微信服务器能正常访问到你所提供的URL,且该 URL对应的Controller里实例化了 Wechat 类就可以了。
示例代码
$token = ''; //微信后台填写的TOKEN
/* 加载微信SDK */
$wechat = new Wechat($token);
/* 获取请求信息 */
$data = $wechat->request();
if($data && is_array($data)){
//在这里你可以分析用户发送过来的数据来决定需要做出什么样的回复
$content = ''; //回复内容,回复不同类型消息,内容的格式有所不同
$type = ''; //回复消息的类型
/* 响应当前请求(自动回复) */
$wechat->response($content, $type);
}
接收到的消息类型
接受到的信息类型有9种,分别使用下面九个常量标识
- Wechat::MSG_TYPE_TEXT //文本消息
- Wechat::MSG_TYPE_IMAGE //图片消息
- Wechat::MSG_TYPE_VOICE //音频消息
- Wechat::MSG_TYPE_VIDEO //视频消息
- Wechat::MSG_TYPE_MUSIC //音乐消息
- Wechat::MSG_TYPE_NEWS //图文消息(推送过来的应该不存在这种类型,但是可以给用户回复该类型消息)
- Wechat::MSG_TYPE_LOCATION //位置消息
- Wechat::MSG_TYPE_LINK //连接消息
- Wechat::MSG_TYPE_EVENT //事件消息
事件消息又分为下面五种
- Wechat::MSG_EVENT_SUBSCRIBE //订阅
- Wechat::MSG_EVENT_SCAN //二维码扫描
- Wechat::MSG_EVENT_LOCATION //报告位置
- Wechat::MSG_EVENT_CLICK //菜单点击
- Wechat::MSG_EVENT_MASSSENDJOBFINISH //群发消息成功
自动回复消息
识别用户发送的消息,通过相关程序处理后,决定要给用户回复什么样的数据,可以调用 $wechat->response($content, $type);
进行回复。 其中,$content
为回复的内容,$type
为回复的消息类型。不同类型的消息,$content
的数据结构有所不同。
文本消息:
//当回复文本消息时$content为字符串
$content='回复的文本消息';
图片消息:
//当回复图片消息时$content为图片ID
//图片ID是通过 WechatAuth 的 mediaUpload 接口上传的图片ID
$content=$midea_id;
音频消息:
//当回复音频消息时$content为音频ID
//音频ID是通过 WechatAuth 的 mediaUpload 接口上传的音频ID
$content=$midea_id;
视频消息:
//当回复视频消息时$content为一维数组
//array($media_id, $title, $description)
//$media_id WechatAuth 的 mediaUpload 接口上传的视频ID
//$title 视频标题
//$description 视频说明
$content=array($media_id, $title, $description);
音乐消息:
//当回复音乐消息时$content为一维数组
//array($title, $description, $musicurl, $hqmusicurl, $thumb_media_id)
//$title //音乐名称
//$description //音乐说明
//$musicurl //普通音质 mp3 url
//$hqmusicurl //高品质 mp3 url
//$thumb_media_id //缩略图ID
$content=array($title, $description, $musicurl, $hqmusicurl, $thumb_media_id);
图文消息:
//当回复图文消息时$content为二维数组
//array($news, $news1, $news2, ..., $news9);
//注意:微信规定,一条消息最多只能发送10条图文信息
//每条消息的结构如下
//$news=array($title, $description, $url, $thumb_media_id);
//$title //新闻标题
//$description //新闻简介
//$url //新闻原文URL
//$thumb_media_id //缩略图ID
$content=array(
array($title, $description, $url, $thumb_media_id),
array($title1, $description1, $url1, $thumb_media_id1),
array($title2, $description2, $url2, $thumb_media_id2),
...
array($title9, $description9, $url9, $thumb_media_id9),
);
thinkphp wechat的更多相关文章
- Thinkphp框架----微信公众测试号开发
最开始的一个步骤.注册一个微信公众测试号.URL:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login; 接口配置的信息,对新手 ...
- thinkphp 开发的获取用户信息
<?php namespace Home\Controller; use Think\Controller; use Com\Wechat; use Com\WechatAuth; class ...
- thinkphp微信开发:安全模式消息加解密
使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. TRight 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解 ...
- 一个基于thinkphp的微信授权登陆功能
共享一份基于thinkphp开发的用户授权登陆的功能代码,本实例使用thinkphp的第三方微信公众平台PHP-SDK,地址https://github.com/dodgepudding/wechat ...
- 【TP3.2.X】(同样适用于OT) 设置单入口index.php文件,区分PC/WAP/Wechat 三个终端
1.目的:本教程适用于 OneThink1.0.或者TP3.2.X 系列,达到单入口index.php文件,区分PC/WAP/Wechat 三个终端 2.启发至 : http://www.thinkp ...
- thinkphp微信开发(消息加密解密)
使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录. 分析问题: 解密微信服务器消息老是不成功,下载下微信公众平台官方给出的解密文件和Wec ...
- overtrue/wechat 包 由 sys_get_temp_dir 引发的 the directory "c:\Windows" is not writable
vendor\overtrue\wechat\src\Foundation\Application.php registerBase 方法 在初始化属性时 $this['cache'] = funct ...
- 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP)
wechat github 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP) 概述 公众号开发是痛苦的,痛苦在好多问题开发者文档是没有提到的,是需要你猜的. 在开发过程中 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
随机推荐
- 关于云计算三大服务模式LAAS,PAAS,SAAS的含义及区别
根据NIST的权威定义,云计算有SPI,即SAAS,PAAS和LAAS三大服务模式,上层是SAAS,中间层是PAAS,底层是LAAS,一层支撑一层. LAAS(Infrastucture-as-a-S ...
- NVMe SSD是什么?
https://blog.51cto.com/alanwu/1766945 一直对闪存存储关注的朋友对NVMe SSD一定非常熟悉,NVMe SSD是现如今性能最好的存储盘.这种高性能盘在互联网领域已 ...
- Mybatis基于接口注解配置SQL映射器(二)
Mybatis之增强型注解 MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码.但是注解对动态SQL的支持一直差强人意,即使My ...
- QT文件和目录
一.文件操作 QFile和QFileInfo: #include <QCoreApplication> #include <QFileInfo> #include <QS ...
- 「NOI2017」游戏 解题报告
「NOI2017」游戏 \(d\)这么小,你考虑直接对\(d\)个东西暴力 枚举\(x\)为\(a\)或\(b\)(\(c\)就不用了,因为\(a,b\)已经包含\(c\))了,剩下的就是个\(2-s ...
- python requests函数封装方法
python requests函数封装方法 上代码 import requests import json """ 封装request请求, 1.post:my_pos ...
- oraToolKit Oracle安装辅助工具的使用方法
目录 目录 otk使用方式 使用oraToolKit进行检测安装包情况 使用oraToolKit进行检测操作系统情况 最后 otk使用方式 oraToolkit的安装在RHEL6.1 安装 Oracl ...
- 前端之间的url 传值
转自:https://www.cnblogs.com/candy-Yao/p/8858166.html
- Django框架(十七)—— 中间件、CSRF跨站请求伪造
目录 中间件 一.什么是中间件 二.中间件的作用 三.中间件执行顺序 四.自定义中间件 1.导包 2.定义类,继承MiddlewareMixin 3.在视图函数中定义一个函数 4.在settings的 ...
- Java中的集合和线程安全
通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection). 话题有点高端,我们不是很好理解.所 ...