微信公众号配置

发布时间:2024年01月09日

一、申请微信公众号开发者账号

首先,我们需要申请一个微信公众号开发者账号。在微信公众平台(https://mp.weixin.qq.com/)上进行注册和申请即可。在申请成功后,会获得一个AppID和AppSecret。

二、获取微信公众号接口权限

在微信公众平台上创建公众号,并绑定一个域名。这里我们假设绑定的域名为example.com。
登录微信公众平台,打开开发者中心,在"开发配置"页面中,找到并点击"服务器配置"。
在"服务器配置"页面中填写服务器配置信息:

URL:填写服务器接口的地址,例如:http://example.com/api.php
Token:自定义的验证token,例如:my_token
EncodingAESKey:随机生成的用于消息加解密的AES密钥,可以不填写,留空即可。
提交服务器配置信息后,微信会向你的服务器发送一个GET请求,用于验证服务器配置的有效性。我们需要在服务器端接收并处理这个GET请求,返回验证成功的echostr。
三、处理微信公众号的消息和事件

在服务器上创建一个名为api.php的文件,用来处理微信公众号的消息和事件。

<?php
  /**
     * 公众号请求
     */
    public function index()
    {
        //验证成功后注释掉checkSignature方法
        //$this->checkSignature();
        $this->responseMsg();//定义自动回复功能
    }

    
    /**
     * 验证签名是否正确
     * @return 
     */
    public function checkSignature()
    {
        $token = "my_token"; // 与微信公众号后台设置的Token一致
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $echostr = $_GET["echostr"];
        
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode($tmpArr);
        $tmpStr = sha1($tmpStr);
        
        if ($tmpStr == $signature) {
            echo $echostr;
            exit;
        }

    }
    //定义自动回复功能
    public function responseMsg(){

        // 处理接收到的消息和事件
        $postStr = file_get_contents("php://input");
        if (!empty($postStr)) {
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $msgType = $postObj->MsgType;
            
            // 根据不同的消息类型进行回复
            switch ($msgType) {
                case "text":
                    $content = $postObj->Content;
                    $responseText = "您发送的消息是:" . $content;
                    $this->replyText($postObj, $responseText); // 调用回复文本消息的函数
                    break;
                case "event":
                    $event = $postObj->Event;
                    if ($event == "subscribe") {
                        $responseText = "感谢您关注我们的公众号!";
                        $this->replyText($postObj, $responseText); // 调用回复文本消息的函数
                    }
                    break;
                    // 其他消息类型的处理
                    // ...
            }
        }
      
       
    }
    // 回复文本消息的函数
    function replyText($postObj, $content) {
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $time = time();
        
        $textTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[%s]]></Content>
        </xml>";
        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $content);
        echo $resultStr;
    }
    
?>
文章来源:https://blog.csdn.net/qq_24100549/article/details/135474705
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。