在浏览器本地生成请求头并复制到下方调试面板的 Headers 中(secret 不经过服务器)。HMAC 签名串:{METHOD}\n{PATH}\n{AppId}\n{Timestamp}\n{Nonce}\n{sha256(body)}
\n 拼接 6 段 —— HTTP方法、路径、AppId、时间戳、Nonce、body的SHA-256。路径不含 query string。base64( HMAC-SHA256(secret, 签名串) ),结果是 base64 而非十六进制。X-App-Id、X-Timestamp、X-Nonce、X-Signature。YOUR_APP_SECRET 替换为真实值
| 现象 | 常见原因 | 解决办法 |
|---|---|---|
| 签名校验失败 | 签名串分段顺序或换行错误 | 确保 6 段按顺序以 \n 连接,path 不含 query |
| 签名校验失败 | body 摘要不一致 | body 须为发送的原始字节;表单即 a=1&b=2 原文,勿二次序列化 |
| 签名校验失败 | 签名编码错误 | 签名是 base64(HMAC 字节),不是十六进制 |
| 签名校验失败 | secret 不匹配 | 核对平台分配的 App Secret;密钥轮换期新旧密钥均有效 |
| 时间窗过期 | 服务器时间偏差过大 | 时间戳用 Unix 秒,与服务器偏差 ≤ 300 秒;启用 NTP 校时 |
| Nonce 重复 | 同一 nonce 被复用 | 每次请求生成随机 nonce,5 分钟内不可重复 |
输入已授权 pcaptcha 插件的 AppID(appid),即可在本页直接体验完整验证流程。验证成功后展示 token,供你的后端调用 verify 接口。注意:若该 AppID 配置了来源域名白名单,需包含当前域名。