微信公众号开发(一、接收用户消息自动回复)

来源:互联网 发布: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
原创粉丝点击