微信公众号开发(2)---接收订阅事件推送并回复消息
来源:互联网 发布:中国人才流动数据 编辑:程序博客网 时间:2024/06/04 08:34
在thinkphp框架内完成的,下面是控制器页面(不涉及其他页面)
<?php
namespace Home\Controller;use Think\Controller;
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
}
}
//用户关注后,微信推送过来一个包含用户信息的xml数据包,我们接收后并回复
public function responseMsg(){
//获取到微信推送过来的数据
$postArr = $GLOBALS["HTTP_RAW_POST_DATA"];
//处理消息
//<xml>
//<ToUserName><![CDATA[toUser]]></ToUserName>
//<FromUserName><![CDATA[FromUser]]></FromUserName>
//<CreateTime>123456789</CreateTime>
//<MsgType><![CDATA[event]]></MsgType>
//<Event><![CDATA[subscribe]]></Event>
//</xml>
$postObj = simplexml_load_string($postArr);//转成了对象
//判断消息类型
if(strtolower($postObj->MsgType) == "event"){
//判断事件类型,是订阅(subscribe),还是退订(unsubscribe)
if(strtolower($postObj->Event) == "subscribe"){
$toUserName = $postObj->FromUserName;
$fromUserName = $postObj->ToUserName;
$crateTime = 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,$toUserName,$fromUserName,$crateTime,$msgType,$content);
echo $info;
}
}
}
}
0 0
- 微信公众号开发(2)---接收订阅事件推送并回复消息
- 微信开发(一):接收事件推送并回复
- 微信公众号开发-接收与回复消息
- dotNet微信公众号开发二:接收并回复普通文字消息
- 微信公众号开发(十二):推送消息处理器之订阅事件处理器、菜单点击处理器、二维码扫描事件处理器、位置事件处理器、取消订阅事件处理器
- 微信公众号三方平台开发【代微信公众号接收消息事件并响应】
- 微信公众平台 java示例 接收消息并回复
- 用java开发微信公众号:接收和被动回复普通消息(三)
- 微信公众号开发--接收与回复消息(Java)
- 微信公众号开发--接收与回复消息(Java)
- 微信公众号开发--接收与回复消息(Java)
- 微信公众号开发--消息的接收与被动回复消息
- 微信公众号开发(一、接收用户消息自动回复)
- 基于springboot+mybatis的微信公众号开发第三篇-消息的接收与回复
- 从零开发微信公众号系列 【三】接收和自动回复消息
- PHP微信公众平台开:获取接口调用凭据access_token、订阅事件推、消息回复
- PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送
- (微信公众号)如何接收和回复文本消息
- LeetCode
- LeetCode
- LeetCode
- LeetCode
- Vim快捷键操作命令大全
- 微信公众号开发(2)---接收订阅事件推送并回复消息
- C++
- ubuntu14.04安装ros系统
- 海思芯片.通用GPIO 使用篇
- sql server DML操作对索引的影响
- hbase rowkey设计
- 操作系统相关总结
- Math
- 页面置换算