初试微信公众号开发+关注自动

今天试了试微信公众号的开发,整体下来都很简单,都坑在自己的不仔细上面了。
首先进行开发的服务器的基本配置

   public function index(Request $request){
        //获取timestamp nonce signature echostr
        $timestamp = $request->get('timestamp','');
        $nonce = $request->get('nonce','');
        $signature = $request->get('signature','');
        $echostr = $request->get('echostr','');
        $token = 'wxgzh';
        //形成字符串  字典排序
        $array = array($timestamp,$nonce,$token);
        sort($array,SORT_STRING);
        //拼接成字符串  sha1加密   并于$signature比较
        $tmp = implode('',$array);
        $tmp = sha1($tmp);
        if ($tmp == $signature && $echostr){
            echo $echostr;
            exit();
        }else{
            //关注自动回复
            $this->responseMsg();
        }
    }

11096212-9c4d55d22d78e9bd.png

微信订阅号基本配置

点击提交即可。这样就完成了微信公众号的接入。完成之后别忘记点击启用服务器配置~ 查看微信微信关注取消事件。按照文档所示返回相应的数据即可。

11096212-2eea6cff55f29618.png

微信关注取消关注事件

 

11096212-bf4c0de0885a94f0.png

文本消息回复事件

 

public function responseMsg(){
        $postArr = file_get_contents("php://input");//不支持multipart/form-data类数据
//        $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];//需要开启对应的php扩展
        $postObj = simplexml_load_string($postArr);
        if (strtolower($postObj->MsgType) == 'event'){
            if (strtolower($postObj->Event) == 'subscribe'){
                $toUser = $postObj->FromUserName;
                $fromUser = $postObj->ToUserName;
                $time = time();
                $MsgType = 'text';
                $content = '欢迎关注ache的公众号';
                $tmp = "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        </xml>";
                $info = sprintf($tmp, $toUser, $fromUser, $time, $MsgType, $content);
                echo $info;
            }
        }
        echo '';
    }

然后自己的公众号关注走一波。

 

11096212-5098a836fa98a11c.png

最终效果

 

在编写测试过程中需要注意的是返回微信的数据是不能带空格的。在测试失败之后找了好久才发现。另外在接收关注事件的数据的时候因为是post请求关系,如果是使用框架开发的可能需要关闭csrf验证。我就是用laravel5.5来写的。死活就是收不到数据。看了文档是post请求,脑补了下才想到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

the ache

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值