StableOps
常见问题

客户多付、少付或发错链了怎么办

了解客户少付、多付、发错资产、发错链或迟到付款时,StableOps 如何记录异常付款尝试、为何支付订单不会自动完成,以及商户应如何核对实际到账并选择补款、人工入账或退款。文档同时说明哪些订单可以使用退款接口,哪些错付资金必须通过商户钱包人工处理。

StableOps 只有在转账与订单在每一个键上都完全匹配时,才会把订单推进到 detected

  • 收款地址,并按组织与环境隔离
  • 资产
  • 金额,按代币精度换算成最小单位后比较

匹配时订单还必须处于 created 状态。只要其中任意一项不同,订单就不会推进,也不会发送 payment.detected,而是继续等待,直到过期

如果 StableOps 支持并正在扫描转账实际发生的链、资产和地址,转账仍会被保存为链上事件,并记录一条异常付款尝试。例如,金额不一致会标记为 amount_mismatch,过期后到账会标记为 late_payment。发生在未支持或未扫描网络上的转账不一定会出现在 StableOps 中,必须通过相应网络的区块浏览器或商户钱包调查。

少付或多付

金额与你请求的 amount 不完全相等的转账都不会匹配订单。StableOps 不会合并多笔转账、部分履约,也不会接受“差不多”的金额。对一笔 10.00 的订单而言,9.9910.01 都算未命中。

应对方式:

  • 始终向客户展示 paymentInstructions 中的精确金额,并禁止其修改。很多钱包允许用户自行输入金额,这是订单卡住的常见原因。
  • 如果客户仍然少付或多付,让原订单按计划过期,再根据商户政策决定退款、要求补款或人工入账。
  • 如果要求补款,不要期待两笔金额不同的转账自动合并并完成原订单。应创建新的付款请求,或在商户账本中经过审批后人工合并处理结果。

发错链或发错资产

订单只会监听你在 acceptedAssets 中传入的 (chain, asset) 组合。转账发生在订单未接受的链或资产上,或者客户把 USDT 发给只接受 USDC 的订单时,都不能匹配原订单。

在 EVM 网络上,同一个 0x… 地址可能存在于多条链。资金即使到达相同文字形式的地址,只要实际网络与付款指令不同,仍然属于发错链,不能完成订单。

只有支持资产表中列出的 (chain, asset) 组合才可能被接受。表外组合会在创建订单时被拒绝,StableOps 也不保证能够发现发生在未支持网络或资产上的转账。

退款接口的适用边界

StableOps 退款接口只适用于已经 finalized 的付款。此类订单具有一笔精确匹配的原始支付事件,可以创建独立的非托管退款请求,再由商户钱包签名并广播退款交易。

少付、多付、发错链、发错资产或过期后到账的转账没有让原订单进入 finalized,因此不能针对该订单调用退款接口。请保留原订单及异常付款记录,通过商户自己的资金工具处理实际到账资金,并把退款、补款或人工入账记为独立且经过审批的异常操作。完整流程见少付、多付或发错网络的处理方法

找回打错的资金

找回资金需要你自行操作。StableOps 不持有你的私钥,也不会替你签署或广播资金交易。

  • 使用 BYO 地址时,资金通常到达你控制的地址。先确认商户钱包确实支持转账实际发生的链与资产,再决定退款或人工入账。
  • 不要直接把原交易的来源地址当作退款地址。付款可能来自交易所、托管钱包或智能合约,应让客户确认退款链、资产和目标地址。
  • 保存原订单、交易哈希、实际链、资产、金额、处理决定、审批人和最终退款交易哈希,不要为了让记录看起来匹配而改写原订单状态。

避免订单卡住

  • 原样渲染 paymentInstructions 中的金额、链、资产与地址,不让客户自行改动。
  • 给订单设置合理的过期窗口,避免一笔输错的付款让订单无限期挂着。
  • payment.finalized 上履约,绝不要凭客户“我已经发了”的口头声明发货。
  • 上线前分别测试少付、多付、发错链和过期后到账,并为每种异常指定客服、财务与资金操作责任人。

相关

这篇文档怎么样?

最后更新

本页内容