微信公众号开发(一、接收用户消息自动回复)
来源:互联网 发布:sqlserver删除主键约束 编辑:程序博客网 时间:2024/05/16 01:34
微信公众号开发现在在企业应用中,比较火爆的一款应用,微信开放了第三方公众平台,作为开发者只需要按照公众平台的开发文档就能快速开发应用,废话不多说,下面我来介绍下个人公众号申请,第一个api调用,自动消息回复.
进行公众号开发需要获取接口使用权限, 公众平台提供了三类账号,分别是服务号、订阅号、企业号。服务号和企业号接口权限大于订阅号, 但是需要进行企业认证, 这里就拿个人订阅号来做演示。第一步需要注册公众号,这里不过多描述,请前往https://mp.weixin.qq.com/微信公众平台注册。
一、被动回复消息-基础配置
当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复峰。微信服务器在将用户的消息发给公众号的开发者服务器地址(开发者中心处配置)后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。1. 在个人开发者中心,基本配置中进行服务器配置 ![这里写图片描述](http://img.blog.csdn.net/20160527101459419)
填写配置信息字段说明:
url: 必须是可以正常访问的服务器地址
token: 这里填写的touken必须和你服务器的touken一致。
EncodingAESKes : 这里手机填写也可以选择随机生成
下面贴出服务器端验证代码
请求过程说明:手机微信端发送内容——>微信服务器根据内容生成xml请求——>我们自己的服务器程序接收并处理xml消息
响应过程:我们自己的服务器程序的响应内容xml——>微信服务器获取xml内容——>用户手机微信
也就是说,微信服务器其实是一个中介的作用。知道了它的过程,我们进行开发调试就简单了,这里我用到了firefox的一个扩展poster。调试方法如下所示:
<?php/** * * wechat php test *///define your tokendefine("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{ public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ //验证成功后,返回$echoStr字符串给微信处理 echo $echoStr; exit; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } }}?>
配置提交成功后启用配置,即时生效。
二:被动回复消息-用户发送消息给公众号,自动回复
被动回复文本消息, 官方文档戳:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543&token=&lang=zh_CN
<?php$wechatObj = new wechatCallbackapiTest();$wechatObj->responseMsg();class wechatCallbackapiTest{ public function responseMsg(){ $postStr = file_get_contents("php://input", 'r'); if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0<FuncFlag> </xml>"; if(!empty( $keyword )){ if($keyword == 1){ $contentStr = '数字1'; }elseif($keyword == 2){ $contentStr = '数字2'; }else{ $contentStr = '<a href="http://www.baidu.com">hello welcome to</a>'; } $msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo '请输入1/2,系统会自动回复'; } }else { echo '咋不说哈呢'; exit; } }}
0 0
- 微信公众号开发(一、接收用户消息自动回复)
- 微信公众号开发-接收与回复消息
- 从零开发微信公众号系列 【三】接收和自动回复消息
- C#开发微信公众号之消息自动回复
- 微信公众号开发之文本消息自动回复
- 3、微信公众号开发之接收用户消息
- 微信公众号开发--消息的接收与被动回复消息
- 微信公众号开发自动回复
- 微信公众号开发教程[010]-消息管理-获取公众号的自动回复规则
- 用java开发微信公众号:接收和被动回复普通消息(三)
- 微信公众号开发--接收与回复消息(Java)
- dotNet微信公众号开发二:接收并回复普通文字消息
- 基于springboot+mybatis的微信公众号开发第三篇-消息的接收与回复
- 微信公众号开发--接收与回复消息(Java)
- 微信公众号开发(2)---接收订阅事件推送并回复消息
- 微信公众号开发--接收与回复消息(Java)
- 微信公众号相应消息 ,自动回复消息
- java微信开发-消息接收和自动回复
- 手机1520 win8.1升级win10
- Spring bean加载多个配置文件
- 纯css实现未知尺寸图片在DIV中垂直水平居中(超简单)
- 删除链表中的元素
- js基础总结
- 微信公众号开发(一、接收用户消息自动回复)
- compat-wireless简介
- iOS--tag的使用(通过tag找view子视图)
- json解析二维对象
- Java中的String和Date、Timestamp之间的转换+long类型的陷阱
- Android ActionBar应用实战,高仿微信主界面的设计
- oracle数据泵使用
- iOS学习之—— autorelease
- 临时变量调用拷贝构造函数的次数