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

微信公众号开发现在在企业应用中,比较火爆的一款应用,微信开放了第三方公众平台,作为开发者只需要按照公众平台的开发文档就能快速开发应用,废话不多说,下面我来介绍下个人公众号申请,第一个api调用,自动消息回复.

进行公众号开发需要获取接口使用权限, 公众平台提供了三类账号,分别是服务号、订阅号、企业号。服务号和企业号接口权限大于订阅号, 但是需要进行企业认证, 这里就拿个人订阅号来做演示。

第一步需要注册公众号,这里不过多描述,请前往https://mp.weixin.qq.com/微信公众平台注册。

一、被动回复消息-基础配置

    当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复峰。微信服务器在将用户的消息发给公众号的开发者服务器地址(开发者中心处配置)后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。

1. 在个人开发者中心,基本配置中进行服务器配置
    ![这里写图片描述](https://img-blog.csdn.net/20160527101459419)

填写配置信息字段说明:
url: 必须是可以正常访问的服务器地址
token: 这里填写的touken必须和你服务器的touken一致。
EncodingAESKes : 这里手机填写也可以选择随机生成
下面贴出服务器端验证代码

请求过程说明:手机微信端发送内容——>微信服务器根据内容生成xml请求——>我们自己的服务器程序接收并处理xml消息
响应过程:我们自己的服务器程序的响应内容xml——>微信服务器获取xml内容——>用户手机微信

也就是说,微信服务器其实是一个中介的作用。知道了它的过程,我们进行开发调试就简单了,这里我用到了firefox的一个扩展poster。调试方法如下所示:

<?php
/**
 *
  * wechat php test
  */

//define your token
define("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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值