跳转到主要内容
稳定币支付未按预期到账时会发生什么,以及当您退款一笔 USDC 或 USDT 订单时 必须发送什么。订单字段、链的选择 和确认行为见稳定币支付; 所有支付方式通用的规则见退款 FAQ。

有哪些异常情形?订单还能成功吗?

Waffo 会把不符合规范的转账归入以下情形之一——您提交工单时,支持团队使用的就是这些标签。 表格贯穿两条规则:结算始终基于订单 金额,绝不基于实际转账金额;向购物者退回资金 不是您账户上的退款——没有退款订单,也不会出现在您的退款报表里。

购物者多付了——多出来的归我吗?

不。订单按订单金额完成,多出部分不属于您。所以永远不要 用链上金额来核对稳定币订单。

购物者少付了或付晚了——我还能发货吗?

不能。两种情形都不算支付成功,所以不要凭您自己观察到的 链上转账发货。请引导购物者在支付页面的支付窗口内, 一次转账付足全部订单金额。

链错了、代币错了、或者用了旧地址——会自动解决吗?

不会。WRONG_TOKEN、WRONG_CHAIN 和 NO_MATCH_ORDER 永远不会自动 处理:订单不会成功,资金也不会自行 退回。请携交易哈希、链、代币和订单 id 提交支持工单。 NO_MATCH_ORDER 的常见原因是复用了收款地址——地址是 按订单签发的,所以如果您缓存了地址或让购物者付了两次,第二笔 转账不会匹配任何订单。

我自己在哪里能看到这些异常情形?

您能看到的是订单:它要么到达了最终成功状态,要么 没有。上述一切说的是资金去了哪里,而不是 订单,并且这些情形都不会在您账户上创建退款订单——所以 它们也永远不会出现在您的退款列表或退款报表中。 于是当购物者坚称已付款时只剩一条路:把订单 id 连同 购物者能提供的交易哈希、链和代币一起提交给 支持团队。这四项事实就是识别该情形的依据。

退款稳定币订单时我必须发送什么?

每笔 USDC 和 USDT 退款都必须填写退款目标地址。请把地址放在 /api/v1/order/refund 的 extendInfo 里。外层 extendInfo 的值是一个 包含 JSON 的字符串,不是嵌套的 JSON 对象。 下面是完整的请求体示例。请把每个占位值替换为订单和购物者的实际值:
能否部分退款取决于您的协议和所走渠道(见下文);如果您的路由只支持全额退款,refundAmount 必须填写订单的全部可退金额,否则退款会以 A0014(“Order cannot be refunded due to refund rules”)拒绝。退款地址必须适用于原支付 使用的链。对 USDC 或 USDT 订单这是必填的,省略它退款将无法成功(Portal 退款抽屉里该字段同样必填)——请求会在前置参数校验时失败,返回 A0003,错误信息为 Parameter validation failed ( missing refund optional field ), msgParams.missingFields 中会包含 extendInfo.refundAddress;对法币订单它是不必要的,传了会被忽略。 请把这当作一次集成变更: 如果您已经在调用退款 API,之后又接入稳定币,请先更新您的 退款路径。请自行向购物者收集地址——Waffo 无法 联系您的购物者索要。

我能退到另一条链,或者任意钱包吗?

两者都不行。链从原支付读取并锁定;退款请求上没有 链参数,任何试图传入的都会被忽略。 链决定接受哪种地址格式,退款处理时会按 该链的格式校验地址: 被拒绝的地址会失败并附带具体原因,链上没有任何资金移动。请用修正后的地址重新发起退款,并在重发前检查 remainingRefundAmount。 请使用自托管(EOA)钱包地址,不支持合约地址;Portal 的退款抽屉里也写明了同样的规则。 Portal 应用相同的约束:在退款抽屉中,链是原支付链的 只读标签,标注为*“Refund must use the same chain as the original payment,”*,地址字段在您输入时按该 链的格式校验。

稳定币订单可以部分退款吗?

稳定币订单能否部分退款,取决于您自己协议上该支付方式的退款形态,以及订单所走的渠道路由是否支持部分退款。请在 Service → Payin 的 Refundable 列,或您配置响应中的 refundAllowed 确认——四种形态及其编码在 读懂您的支付方式配置中说明。如仍无法确认,请联系你的对接人。