微信小程序消息推送配置URL验证程序(PHP实现)

<?php
/**
 * 微信小程序消息推送配置 - URL验证程序
 * 
 * 将此文件部署到你需要配置的URL对应的服务器上
 * 然后在微信公众平台配置消息推送时,微信服务器会发送验证请求到此URL
 */

// 设置PHP错误报告级别(生产环境可以关闭)
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 获取微信发送的GET参数
$signature = isset($_GET['signature']) ? $_GET['signature'] : '';
$timestamp = isset($_GET['timestamp']) ? $_GET['timestamp'] : '';
$nonce = isset($_GET['nonce']) ? $_GET['nonce'] : '';
$echostr = isset($_GET['echostr']) ? $_GET['echostr'] : '';

// 你的小程序消息推送配置的Token(在微信公众平台配置的)
$token = '你的Token'; // 替换为你在微信公众平台配置的Token

/**
 * 验证微信服务器的签名
 * 
 * @param string $token 令牌
 * @param string $timestamp 时间戳
 * @param string $nonce 随机数
 * @param string $signature 微信加密签名
 * @return bool 验证结果
 */
function checkSignature($token, $timestamp, $nonce, $signature)
{
    // 将token、timestamp、nonce按字典序排序
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    
    // 将三个参数字符串拼接成一个字符串进行sha1加密
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    
    // 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    return $tmpStr === $signature;
}

// 验证签名
if (checkSignature($token, $timestamp, $nonce, $signature)) {
    // 签名验证通过,返回echostr参数内容
    echo $echostr;
    exit;
} else {
    // 签名验证失败
    header('HTTP/1.1 403 Forbidden');
    echo "签名验证失败";
    exit;
}
?>

将以上代码保存为callback.php,上传的服务器后,在下图中验证

验证后,可以用自己实际 要用的内容替换 callback.php

使用说明

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

  2. 上传到你的服务器,确保可以通过你配置的URL访问到

  3. 在微信公众平台的小程序后台配置消息推送时:

    • 填写这个PHP文件的完整URL

    • 设置Token(与代码中的$token变量一致)

    • 选择加密方式(根据你的需求选择)

  4. 点击"提交"按钮时,微信服务器会发送验证请求到你的URL

  5. 如果验证通过,配置就会成功

注意事项

  1. Token安全:Token相当于密码,请妥善保管,不要泄露

  2. 服务器要求

    • PHP环境(通常5.6以上版本都可以)

    • 服务器需要能够处理GET请求

    • 确保URL可以通过公网访问

  3. 日志记录:生产环境建议添加日志记录功能,记录验证请求

  4. HTTPS:微信要求消息推送接口必须使用HTTPS协议

扩展功能

如果需要处理后续的消息推送,可以在这个验证通过后,添加消息处理逻辑。微信服务器会以POST方式发送XML格式的消息内容到你的URL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

恰好

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

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

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

打赏作者

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

抵扣说明:

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

余额充值