微信关注自动回复
xuexi 2025-04-13 12:35:23 发表在:PHP 查看数:77
// 接收微信服务器推送的原始数据
$rawData = file_get_contents("php://input");

// 解析 XML 数据(含 CDATA 处理)
$xml = simplexml_load_string($rawData, 'SimpleXMLElement', LIBXML_NOCDATA);

// 验证解析结果
if ($xml === false) {
    file_put_contents('error.log', 'XML解析失败: ' . date('Y-m-d H:i:s') . "\n", FILE_APPEND);
    echo 'success'; // 必须返回响应防止微信重试
    exit;
}

// 处理事件类型
if (isset($xml->MsgType) && $xml->MsgType == 'event') {
    $event = (string)$xml->Event;

    // 关注事件处理
    if ($event == 'subscribe') {
        $toUser = (string)$xml->FromUserName;   // 接收者(用户OpenID)
        $fromUser = (string)$xml->ToUserName;   // 发送者(公众号ID)

        // 构建回复的 XML 消息(文本类型)
        $response = "<xml>
            <ToUserName><![CDATA[{$toUser}]]></ToUserName>
            <FromUserName><![CDATA[{$fromUser}]]></FromUserName>
            <CreateTime>" . time() . "</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[欢迎关注!\n回复【帮助】获取使用指南]]></Content>
        </xml>";

        echo $response;
        exit;
    }
}

// 其他事件或消息类型统一返回 success
echo 'success';
最近访问时间:2025-04-28 12:22:27
知识库:340条鸣谢:TAY  备案号:蜀ICP备2024090044号