跳到正文
← 使用教程

Request Network付款已提交:核webhook、request足额状态与批量记录

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

从原通知与请求记录区分浏览器活动、Legacy部分付款、跨链fallback与最终结算,并核签名、重投及分页。

开始前准备

  • 准备已有脱敏请求/订单、原通知headers与验证结果、request或payments返回及环境时点;不包含secret、Client ID凭据或完整支付访问token。

1. 先固定请求、接收角色与事件版本

准备同一业务requestId、paymentReference、原支付链接token的脱敏标识及Client ID/端点角色记录。Client ID与linked orchestrator可用同URL,但分别注册、分别签名secret,不能按URL相同当同一端点。

当前payment.confirmed两者可接收;payment.failed和access_rejected只发平台Client ID。后续重新link/unlink不改旧付款的orchestratorId归属。先辨当前Secure Payment流程或原Legacy API,不能套Request Finance发票status。

检查结果:同一请求、平台/orchestrator角色和当前/Legacy范围明确。

2. 核原通知验签、测试与重投材料

对照已有服务端验证记录:x-request-network-signature是对raw body用对应secret算HMAC-SHA256,JSON parse/重新序列化之后的字节不能代替原体。secret只在注册时返回一次;缺原验证结果就记未验证,不收集或公开密钥。

x-request-network-test=true使用占位数据,即使签名有效也不能更新业务付款状态。x-request-network-delivery用于交付去重,retry-count为0–3;文档写3次重投、总4次,间隔1/5/15秒、单次超时5秒,非2xx/超时/连接错误可重投。它们是文档政策,不是本人已收到全部尝试。

检查结果:原体验签、测试标志、delivery和retry分别记录,不把测试或重投当新付款。

3. 将页面活动、筛查与最终付款分开

wallet_connected、payment_sent_to_wallet、payment_approved_in_wallet属于secure_payment.user_event,是best-effort浏览器活动;到签名/提交hash也不等结算完成,活动缺失也不证明未操作。kyt.screening.completed是approved/rejected筛查结果,provider errors不发;allowlist拒绝是另一个access_rejected事件。

当前payment.confirmed才是结算信号。llms索引讲payment.partial作为中间状态,而canonical Webhooks将partial/refunded/processing放Legacy;原Legacy部分付款不能当足额,当前支付页也不能靠等待partial推状态。allowlist/KYT拒绝或钱包取消不会自动发payment.failed,缺failed不能证明成功。

检查结果:浏览器活动、筛查/allowlist、Legacy部分付款与当前confirmed未混用。

4. 用同request的原状态核足额与fallback

当前规格以GET /v2/request/{requestId}查hasBeenPaid、paymentReference、txHash、isListening;只读已有脱敏返回。isListening不是已付。payerAddress与payerEoaAddress可因smart account不同,null或缺值不猜支付人。

requestAmount是原发票币种金额,paidAmount、receivedAmount、excessAmount分别是付出、路由实际收到、超出已应用到请求部分,不从任一金额单独判足额。少数LiFi桥已交付却最终支付合约调用失败的fallback可被检测确认,detectionSource="lifi"及note需保留;仍看同请求hasBeenPaid,不能拿任意目的链转账当成功。

检查结果:请求足额标志、各金额含义、付款身份和fallback来源各有原记录或未知。

5. 支付列表逐行关联、翻页并只计一次

GET /v2/payments至少要一项搜索条件,如requestId/paymentReference/txHash/walletAddress/reference或type/币种;只有日期范围不满足要求。多个筛选按AND,fromDate/toDate为ISO UTC且to≥from。按已有结果查看pagination.total/limit/offset/hasMore,第一页空不推无付款。

同hash或钱包可有多条batch结果,按payments[].id及嵌套request.requestId/paymentReference/hasBeenPaid核每行;sourceTxHash与destinationTxHash、发票currency与paymentCurrency分开。将重复delivery与重复查询行去重,只有已验的confirmed或同request足额状态才支持业务已付,真实资产到账仍依对应记录。

检查结果:筛选、分页、批量行和去重完整,缺状态或到账材料明确未知。

怎样确认完成

  • 得到同一请求的通知、验签/测试标志、足额状态和支付行对照;官方方法已核,真实业务返回及到账未实测。

常见错误与边界

  • payment_approved_in_wallet、KYT approved与isListening均不是足额支付证明。
  • 当前与Legacy事件口径不同;一次batch交易可含多条付款,重投通知不可重复记账。

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