本来是要用于模版消息功能,但发现只有“服务号”可以使用。以下是一个完整的微信公众号 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;
}
}
}
?>
使用说明
-
将上述代码保存为一个PHP文件(例如
wechat.php
) -
将
your_token_here
替换为你自己在微信公众号后台设置的Token -
将此文件上传到你的服务器
-
在微信公众号后台的"开发->基本配置"中:
-
填写服务器地址URL(例如:
https://yourdomain.com/wechat.php
) -
填写Token(与代码中TOKEN常量一致)
-
选择加密方式(初始验证时可选择明文模式)
-
点击提交,微信服务器会发送验证请求
-
注意事项
-
确保你的服务器可以通过80或443端口访问(微信公众号只支持这两个端口)
-
如果使用HTTPS,需要配置有效的SSL证书
-
验证通过后,此接口还需要处理微信服务器推送的消息和事件,你可以在此基础上扩展
扩展建议
验证通过后,你可以继续完善这个类,添加消息处理功能。例如:
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;
// 其他消息类型...
}
}
}