从每个网站单独密钥迁移到统一的 Webhook 密钥
PAYWISE 现在用一个商户密钥为所有 Webhook 签名。之前设置的网站会保留旧密钥,直到您切换。以下是如何在不漏掉任何 Webhook 的情况下完成切换。
发布于 10 十月 2026 阅读约 2 分钟
PAYWISE 用一个签名密钥为您整个账户的所有 Webhook 签名。它显示在网站与 Webhook 页面上,需要时可以点击创建新密钥来更换。
如果您在这次变更之前添加了带有独立 Webhook URL 的网站,该网站仍使用自己的旧密钥签名。没有任何东西坏掉:您现有的对接继续正常运行。该网站会显示提示*"此网站仍在使用自己的旧密钥"*以及切换到主密钥按钮。

为什么要切换?
- 只需保存一个密钥。 所有服务器校验同一个值,需要同步的内容更少。
- 一处更换。 如果密钥泄露,一次点击即可为所有网站更换。
- 减少错误。 大多数"签名不匹配"问题都是因为服务器使用了错误的密钥。
不漏掉任何 Webhook 的切换方法
点击切换到主密钥的那一刻,用旧密钥生成的签名就会失效。为避免哪怕很短的空档,请让服务器暂时同时接受两个密钥:
$raw = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_PAYWISE_SIGNATURE'] ?? '';
$secrets = [getenv('PAYWISE_WEBHOOK_SECRET'), getenv('PAYWISE_OLD_SITE_SECRET')];
$valid = false;
foreach (array_filter($secrets) as $secret) {
if (hash_equals(hash_hmac('sha256', $raw, $secret), $signature)) {
$valid = true;
break;
}
}
if (! $valid) {
http_response_code(401);
exit;
}
然后按以下步骤操作:
- 从网站与 Webhook 页面复制主签名密钥,添加到服务器上,与旧密钥并存。
- 部署后点击发送测试 Webhook,确认用主密钥签名的投递能被接受。
- 在该网站上点击切换到主密钥。
- 查看投递历史:新的投递应返回 HTTP 2xx。
- 运行一天没有问题后,从服务器上删除旧密钥。
多个网站在不同服务器上?
每个网站执行一次上述步骤。每个网站单独切换,因此可以逐个迁移。
还是漏掉了 Webhook?
失败的投递会自动重试,大约在 1 分钟、5 分钟、30 分钟和 2 小时之后。您也可以对任何失败的投递点击立即重试。重试使用您当前的密钥签名。
更多签名相关内容:验证 PAYWISE Webhook 签名。

