客户说「已付款」、回调也显示成功:商户端假到账通知的两通道核验 图 1
客户说「已付款」、回调也显示成功:商户端假到账通知的两通道核验 · 图 1

做跨境电商、数字内容订阅或者链上接单的人,大概率遇到过这样的时刻:客户发来转账截图,说「已经打了,快点发货」;你自己的支付面板里,订单状态也跳成了「已收款」。两重证据摆在面前,大多数人会选择放款。问题恰恰出在这里:截图可以伪造,回调通知也可以不是钱真的到了——在加密货币收款场景里,真正说了算的只有链上状态这一件事。

先把三种「到账证据」的强度排个序。最弱的是付款方发来的截图或哈希字符串:截图是几张像素,哈希则只是一条「我广播过一笔交易」的线索,任何人任何工具都能给你一串。中间层是第三方支付网关或收款工具的回调通知:它说明服务商认为这笔款值得通知你,但回调通道本身可能被伪造触发,也可能因为服务商的风控口径(例如只等一个区块就报成功)而提前报喜。最强的证据只有一个:你自己用交易哈希去区块链浏览器或节点查询,看到这笔交易被打包、并且后续区块不断叠加。

这里要理解两个机制。第一是确认数。交易刚广播时只在内存池里打转,被矿工或验证者打包进区块才算「上链」,之后的每个新区块都在加固这个结论。确认数越多,交易被区块重组推翻的概率越低;小额收款等少量确认可能是效率与风险的平衡,大额收款则应当按自己的风险偏好多等若干确认。具体等几个区块,属于经营决策,不存在对所有人都成立的统一数字,但「刚拿到哈希就放款」几乎肯定是错的。第二是回调的真实性。如果你的收款系统监听第三方回调,那么回调请求本身要验证来源与签名,更重要的是,回调只能当作「提醒去查」的信号,不能当作「已经收妥」的结论——凡是不回查链上状态就触发放款的流程,都是在把判断权外包给一条可以随时伪装的 HTTP 消息。

在此基础上,商户端可以给自己立一套三对齐的核验清单。一是对齐订单:这笔链上转账对应的付款方地址、订单号或转账备注,是否和你系统里挂着的那笔订单匹配,而不是别人家的订单串了线。二是对齐金额:到账的币种、网络、精确数额与应收是否一致,跨币种结算时还要核对自己系统用的折算价格与折算时点,防止「短付差额」这种灰色手法——对方付了应收的百分之九十九,赌你不会为一分半厘起纠纷。三是对齐确认数:达到你自己事先写死的门槛才算完成,门槛写进内部流程,不给一线经办人临场放宽的空间。

退款环节还有一个容易被忽略的攻击面。纠纷发生时,很多商户的习惯是把款原路退回「付款地址」,但如果你的客服系统展示的付款地址来自可篡改的渠道(比如付款方自己填写的表单字段被回显在后台),地址替换就会在最后一米发生。稳妥做法是退款地址永远从链上交易记录的输入端取证,而不是从界面展示区复制。

真的发生假到账纠纷时,处置顺序建议这样走:先冻结发货或提现,把交易哈希、查询快照、回调日志、聊天记录按时间线存档;再用第二个独立浏览器或第二个浏览器工具复核链上状态,避免本地环境本身被动手脚;确认是欺诈后,走你与付款方事先约定的合同或平台规则处理,同时检查这套订单为什么绕过了三对齐流程——是经办人跳过,还是系统本来就没有回查。把一次纠纷变成流程补丁,比追回一单货款更值钱。

最后提醒一条边界:区块链浏览器也有多家,查询结果对不上时换一家独立来源再查,永远不要只信给你看结果的那一个页面。收款工具的加密钱包功能只是把查询自动化了,它的默认确认策略是什么、能不能自定义,值得你在接单前花十分钟读完文档。核验习惯是免费的,放款之后的追回成本从来都不便宜。

客户说「已付款」、回调也显示成功:商户端假到账通知的两通道核验 图 2
客户说「已付款」、回调也显示成功:商户端假到账通知的两通道核验 · 图 2