PHP 微信公众号开发接口 URL 验证代码

本来是要用于模版消息功能,但发现只有“服务号”可以使用。以下是一个完整的微信公众号 URL 验证接口的 PHP 实现代码。这个代码用于在微信公众号后台配置服务器地址时的验证过程。

<?php
/**
 * 微信公众号开发 - 服务器URL验证
 */

// 定义Token,需要与微信公众号后台配置的一致
define("TOKEN", "your_token_here");

// 实例化并处理验证请求
$wechat = new WeChatCallbackAPI();
$wechat->valid();

class WeChatCallbackAPI {
    /**
     * 验证微信服务器URL
     */
    public function valid() {
        $echoStr = $_GET["echostr"];

        // 验证签名
        if ($this->checkSignature()) {
            echo $echoStr;
            exit;
        }
    }

    /**
     * 验证微信签名
     * @return bool
     */
    private function checkSignature() {
        // 获取微信发送的参数
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        // 将token、timestamp、nonce按字典序排序并拼接
        $tmpArr = array(TOKEN, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode($tmpArr);
        
        // 进行sha1加密
        $tmpStr = sha1($tmpStr);

        // 与微信发送的signature对比
        if ($tmpStr == $signature) {
            return true;
        } else {
            return false;
        }
    }
}
?>

使用说明

  1. 将上述代码保存为一个PHP文件(例如wechat.php

  2. your_token_here替换为你自己在微信公众号后台设置的Token

  3. 将此文件上传到你的服务器

  4. 在微信公众号后台的"开发->基本配置"中:

    • 填写服务器地址URL(例如:https://yourdomain.com/wechat.php

    • 填写Token(与代码中TOKEN常量一致)

    • 选择加密方式(初始验证时可选择明文模式)

    • 点击提交,微信服务器会发送验证请求

注意事项

  1. 确保你的服务器可以通过80或443端口访问(微信公众号只支持这两个端口)

  2. 如果使用HTTPS,需要配置有效的SSL证书

  3. 验证通过后,此接口还需要处理微信服务器推送的消息和事件,你可以在此基础上扩展

扩展建议

验证通过后,你可以继续完善这个类,添加消息处理功能。例如:

public function responseMsg() {
    // 获取微信推送的POST数据
    $postStr = file_get_contents("php://input");
    
    if (!empty($postStr)) {
        // 解析XML数据
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        
        // 根据消息类型进行处理
        switch($postObj->MsgType) {
            case "text":
                // 处理文本消息
                break;
            case "event":
                // 处理事件
                break;
            // 其他消息类型...
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

恰好

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

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

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

打赏作者

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

抵扣说明:

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

余额充值