验证支付 Webhook 签名

在给客户入账或履约前,每一个支付 Webhook 都应该被验证。BoltUtil 使用商户 Webhook 密钥对 payload 签名。

适用于
HMAC-SHA256
适用于
原始 body 校验
适用于
恒定时间比较
签名验证模式
payload = raw_request_body
signature = HMAC_SHA256(payload, webhook_secret)

// Compare with the X-Bolt-Signature header by constant-time comparison.

验证流程

所有接收支付状态更新的 Webhook 端点都应该执行签名验证。

  1. 01

    读取完全未经修改的原始请求 body。

  2. 02

    使用 Webhook 密钥计算 HMAC-SHA256。

  3. 03

    用恒定时间比较与签名 header 对比。

  4. 04

    验证通过后再更新本地订单状态。

非托管结算

资金直接进入您配置的商户钱包。BoltUtil 只负责监听链上交易和发送通知,不接触也不托管用户资金。

三条 USDT 网络

通过同一套订单 API 和统一 Webhook,接入 TRC20、ERC20、BEP20 三条主流 USDT 网络。

Webhook 自动化

当链上交易被检测并确认后,您的系统会收到带签名的回调,可自动发货、开通会员或入账。

接入要点

上线前真正重要的细节

Raw body verification avoids JSON reformatting bugs

Do not rebuild the JSON object before signing. Even harmless whitespace or key-order changes can produce a different digest.

Constant-time comparison protects against timing leaks

Use language-native secure comparison helpers instead of normal string equality when comparing webhook signatures.

Signature checks are not a replacement for idempotency

A valid webhook proves source and integrity, but your business logic still needs to avoid duplicate fulfillment.

上线前商户常问的问题

这些回答帮助开发者、创始人和客服团队在接收真实 USDT 付款前理解完整支付生命周期。

BoltUtil 会托管商户资金吗? +

不会。BoltUtil 是非托管的链上监听与通知层,商户配置自己的收款钱包,资金直接到商户钱包。

BoltUtil 如何匹配一笔付款? +

系统会同时校验网络、收款地址、精确 USDT 金额、订单状态和订单有效期,然后才会更新订单。

目前支持哪些 USDT 网络? +

当前生产重点支持 TRC20、ERC20 和 BEP20。

相关资源

上线更清晰的 USDT 收款流程

创建订单、监听转账并通知您的后端,不再要求客户发送付款截图。

创建免费账户