跳到正文
← 使用教程

MoonPay Commerce:核对Pay Link成功事件、验签和重投

链小知 · 进阶 · 核验 · 依官方文档整理

固定事件作用域与交易ID,避免把重复通知或Deposit告警当成新增订单收款。

开始前准备

  • 准备已有且脱敏的订单、请求或回执记录;没有实际记录时仅按文档列出待核字段。
  • 本教程依据公开资料,不登录、申请密钥、调用业务API、创建收款或执行退款。

1. 固定Pay Link事件与作用域

Pay Link一次性付款成功通知的订阅类型为REGULAR_TRANSACTION或ALL,实际payload的event为CREATED。省略paylinkId表示账户全局,指定则限该Pay Link。

Deposit与订阅是其他事件类别;不用DEPOSIT_TX_*、最低额或审核告警判断Pay Link已收款。

检查结果:订阅类型、CREATED及全局/单链接作用域对应。

2. 先验Bearer和原正文签名

官方Webhook要求Authorization: Bearer <sharedToken>与X-Signature。用原请求正文在JSON解析前计算sharedToken为键的HMAC-SHA256十六进制摘要,使用恒定时间比较。

sharedToken在创建时只返回一次;本文不创建、不读取或保存实际凭据,仅核已有脱敏验签结果。认证缺失或验签失败则事件不作为订单完成依据。

检查结果:Bearer检查与原正文HMAC检查都有结果或明确未验证。

3. 按交易字段关联订单并防重复

CREATED载荷的transactionObject含id、paylinkId和meta.transactionSignature/transactionStatus;transaction是同一数据的JSON字符串。chargeToken关联买方Charge页面。

重投可能重复同一交易。应用处理时按已核实的交易id及订单关联避免重复履约;这是对交易字段与重投机制的处理建议,不声称官方提供全平台exactly-once。X-Webhook-Delivery-Id与X-Transaction-Id在当前参考页限定Deposit通知,不能假定Pay Link也有。

检查结果:重投与新交易已分开;没有限定头时不用猜测头值去重。

4. 对照通知送达和真实收款

仪表盘Developers → Webhooks可核事件日志、送达状态及时间,官方自动重投最多12次,达到上限可从日志手动replay。本文只核已有记录,不重放实际通知。

送达失败属于通知问题,不能据此宣称付款失败;结合Charge的paylinkTx或signature交易记录核收款。无法取得对应交易时保留未知。

检查结果:日志送达、重投次数和底层交易三项分列。

怎样确认完成

  • 形成订单、资源ID、金额、状态与未验证项的对照;保留失败原文。

常见错误与边界

  • 本文只核Pay Link成功事件;Deposit共享请求头及配额告警不扩展到所有Webhook。
  • 通知处理建议不保证不丢消息,也不代替实际收款和对账验收。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据