对方发来一个“支付链接”:收款付款两边的核对清单 图 1
对方发来一个“支付链接”:收款付款两边的核对清单 · 图 1

在以太坊生态里,一种叫支付请求链接的格式把收款要素打包进了一个可点击的字符串:收款地址、金额、目标合约、链标识都可以编码进去,钱包读取后自动填好一切,你只需要确认。它的设计初衷是减少手抄地址的错误率,这个初衷是好的;但要清楚格式的定位:规范里写得很明白,链接携带的金额等参数只是建议值,客户端会提示但用户有权修改——所以自动填充替你省的是打字,替你做的不应该是决定。凡是替你做决定的自动填充,都要先问一句:填进去的每一个字段,是谁决定的。

站在付款方角度,风险就藏在自动填充里。第一,地址:链接里的收款地址和订单、发票上那个,必须逐字符一致——支付链接不能替代带外核对,它只是替你少打字,不能替你少怀疑。第二,链和合约:同名代币在不同链上各有一份,链接里的链标识和合约地址要和收款方书面指定的一致,钱包自动切换网络的提示不该随手点掉。第三,隐藏的调用数据:请求链接还可以携带一段函数调用,钱包弹窗里那行数据,决定这笔点击究竟是转账、授权还是别的行为;看不懂的数据,多问一句再签,正规收款请求不该需要你去猜它的意图。第四,一次点击串起多个请求的页面,逐条拆开核,不存在一揽子信任。另外给日常支付立一条金额分层规矩:高频小额可以用支付链接图省事,中大额一律回到手动模式——从自己的地址簿或带外确认过的渠道逐项填地址、网络和金额,把自动填充的三秒便利还给核对环节。

收款方这边同样有清单。自由职业者或小商家最稳的做法是用自己的钱包生成收款地址,通过订单系统或聊天记录里的固定位置发出,而不是使用来源不明的第三方链接生成器——生成器后台换地址,你是不会收到提醒的。大额收款配一个只读监控地址,到账即有通知;给客户的开票话术里写清楚支持的网络和代币合约地址,把链上错付的责任边界留在纸面上。

最容易出事的场景是多付和退款。有人在你的收款地址多打了一笔,随即联系你要求退还差额,还给出一个新地址——这一步危险系数最高:链上转账的发起方地址是可见的,但声称自己是那个地址的主人,不需要任何证明,光凭聊天截图认领多付款,等于把退款送进任意一个地址。正确顺序是:先到区块浏览器核实那笔转账真实存在且确实来自对方给出的地址;要求认领人用该地址做一次消息签名验证,或者向该地址回一笔带备注的小额测试交易由对方回应确认;都过不了,宁可让这笔钱留在原地址等对方走正规渠道。任何情况下都不要把多收的款项转往第三个地址。补一个容易被利用的时间差玩法:假买家先小额试付建立信任,第二笔谎称多打了并出示伪造的回执催促退差价,而真实链上状态要几分钟才同步完整——凡是以我很急为理由压缩你核实链上状态的步骤的,等于自认心虚。链上事实不需要抢时间,需要抢时间的核实要求,本身就是红旗。

最后补一句边界:支付链接是格式不是担保,它既不能证明收款方身份,也不能阻止付款方手滑。所有信任仍然要由带外渠道来建立——对得上的订单号、固定的开票地址、签名验证过的对方。带外渠道的定义很简单:一条与这笔交易本身无关、攻击者来不及同时控制的确认路径,比如你当面存进地址簿的那串地址,或对方在另一个平台上早于交易发布过的收款公告。自动填充让一笔支付快了三秒,这三秒不能是核对环节省出来的。

对方发来一个“支付链接”:收款付款两边的核对清单 图 2
对方发来一个“支付链接”:收款付款两边的核对清单 · 图 2