目录 · 22
世界上所有加密货币结账页面的结构都一样:一个地址、一个金额、一个倒计时。几乎所有出问题的情况,都出在你的钱包实际发送的内容,和这三样东西所要求的内容之间的落差上。发送金额略少是最常见的失误,几乎从来都不是你算错了账,而且是可以补救的。发送到错误的链要罕见得多,也是唯一一种谁也无法挽回的失误。
本指南讲的是付款环节,不是代码本身。如果你已经收到礼品卡,却无法兑换,那是另一个问题,原因也不同——我们的兑换故障排查指南专门讲这个。接下来要讲的,是从你按下支付的那一刻,到订单变为已确认的那一刻之间,可能发生的所有情况,按照实际发生频率从高到低排列。
倒计时进行期间,结账页面在做什么
当你选择一种币时,三件事会同时发生。系统会为你的订单单独生成一个收款地址,不做他用。同时会锁定一个报价——也就是那一秒钟卡片以该币计价的价格——并将其保留。倒计时也随之启动,这个倒计时的时长,就是这个报价的有效时间。
从那一刻起,这个地址会被持续监控。监控从广播那一刻就开始,而不是从确认那一刻开始:你的钱包把交易推送进网络的那一秒,付款页面就会看到,并从“等待中”变为“确认中”。你不需要发送哈希值,不需要粘贴收据,也不需要告诉任何人任何事。这里没有账户,所以既没有什么可以登录,也不需要手动把一笔付款关联到订单上。
倒计时代表的是报价到期,不是你这笔钱的最后期限。这个区别正是整件事里大部分恐慌的来源,所以值得说清楚:倒计时归零时,价格不再有保证。你的币并没有消失,没有被销毁,也没有丢失。它们只是在一个已经失效的报价之后才到账,而这种情况有单独的处理机制——下文会详细说明——负责把它们收进来。
订单可能处于的五种状态
付款页面始终只显示五种状态中的一种,并且会实时更新,不需要你刷新页面。知道自己处于哪种状态,就知道该采取行动,还是该等待。
| 状态 | 含义 | 你应该做什么 |
|---|---|---|
| 待处理 | 地址已生成,链上尚未出现任何交易。倒计时正在进行。 | 发送付款,或者关闭页面,之后重新开始。你不欠任何款项。 |
| 确认中 | 你的交易已出现在mempool中。网络正在对其进行确认。 | 什么都不用做。你可以关闭页面——代码会发送到你的邮箱。 |
| 检测到部分付款 | 真实资金已到账,但少于报价要求的金额。订单已暂停。 | 把差额发送到同一个地址,或者申请退回已到账的余额。 |
| 窗口已关闭 | 在存款确认之前,报价已经失效。 | 如果你还没有付款,请重新开始。如果你晚了才付款,请等待找回扫描处理。 |
| 已确认 | 确认数已经足够。代码正在发放中。 | 留意你的收件箱——从头到尾平均耗时11分钟。 |
“确认中”和“已确认”之间的时间差,是链上工作本身耗费的时间,不是我们这边排队造成的,而且完全取决于你选择的币种。这个时间线的逐分钟拆解,见11分钟交付究竟是如何做到的。
金额不足,是提现手续费的问题,不是失误
这是导致大多数订单暂停的失误,而原因平淡到近乎让人失望:你让交易所发送0.00184 BTC,而交易所实际发送的是0.00184 BTC减去它的提现手续费。
每一家托管交易所的处理方式都不一样,而且几乎没有一家会在确认页面上把这件事说清楚。有的会从你输入的金额里直接扣除网络手续费。有的会把手续费加在上面,从你的余额里扣除总额。有的让你自己选择,但这个选项藏在一个不起眼的切换开关后面。如果你用的那家是扣除式的,订单要求的是一个数字,实际收到的却是这个数字减去几美分到30美元不等的差额——而一笔要求精确金额的订单,会把这种情况判定为部分付款,因为事实正是如此。
同样的事情,还会以第二种更不易察觉的方式发生在代币转账上。在Ethereum上发送USDT时,gas费是用ETH支付的,所以USDT会足额到账;但如果发送方是从代币金额里直接扣除自己服务费的平台,情况就不同了。这里的变量不是链本身,而是发送方的手续费政策。
还有第三种情况,连细心的人也会中招。带有“发送最大金额”或“清空”按钮的钱包,会自动计算扣除手续费后能发送的最大金额——这个功能用来清空一个地址确实很好用,但用来支付一笔订单就很糟糕,因为算出来的数字是“剩下多少算多少”,而不是订单要求的那个数字。
部分付款究竟是如何解决的
当到账金额不足时,付款页面并不会失败。它会显示一个标题为检测到部分付款的面板,里面列出三个数字:目前已到账金额、要求的总金额,以及两者的差额。收款地址仍然有效,也仍然是你的。
接下来你有两条路可走,而且两条路最终都不会让你吃亏:
- 补足差额。把差额发送到同一个地址。监控系统会把多笔存款累加起来,所以针对0.00003 BTC的差额补发0.00003 BTC,就能补齐订单,订单随后正常继续。请在报价仍然有效、你最初获得的价格仍然适用的时候完成这一步。
- 把钱退回来。申请退回实际到账的金额。退款会以你发送时使用的原币种退回——绝不会被兑换成其他币种——退到你提供的钱包地址。在全额确认之前,不会发放任何代码,所以绝不会出现“付了一部分、也收到了一部分”这种状态。
唯一不该做的事,就是另外开一个新订单,去付那一个。这样一来,你手上就有两个同时有效的订单,一个部分到账,一个全额到账,要把它们理清楚,就得靠人工处理。补足原有地址的差额,在任何情况下都更快。
多付了,反而是最简单的情况
多付的情况更少见,也没那么复杂。订单资金已经到位,所以会立即继续处理,代码会按照你当初获得的报价发放。多出的部分,会以相同币种退回到你提供的钱包地址。
多付通常来自手动向上取整——因为0.00184看着太琐碎,就干脆输入0.0019。这会让你多付出一次退款往返和一笔网络手续费,而在Bitcoin上,这笔手续费往往比你想省掉的零头还要贵。用复制按钮获取金额,而不是手动重新输入,这一整类问题就完全不会发生。
倒计时归零了,但你其实已经付了款
这种状态看起来像是灾难,但几乎从来都不是。在拥堵时段,Bitcoin交易可能未确认的时间比报价保留的时间还长;按银行工作时间处理的交易所提现,可能被排队等待人工审核;你也可能只是在付款进行到一半时离开了。页面显示窗口已关闭,而你的交易还停留在mempool里,看起来无处可去。
延迟到账的存款,会在窗口关闭后的48小时内被自动收录。找回扫描会针对已过期的订单运行,把到账的存款和它所对应的订单匹配起来,并完成这笔订单。你不需要提交任何东西,也不需要填任何表格——这个地址原本就只为你的订单生成,所以这笔钱本身就能证明自己的身份。
找回扫描做不到的一件事,是保住原来的价格。报价本身已经失效,所以如果发送和找回扫描之间价格出现大幅波动,这个波动会被计入结算,而不是被忽略。实际上,如果你是那种开始付款后注意力就容易被打断的买家,这正是应该用快链上的稳定币付款的最有力理由:USDT不会趁你没注意的时候变动。
转错链:唯一无法挽回的失误
以上这些情况都是可以补救的。这一种,通常不行,也值得用本指南里最直白的一段话来说清楚:发送到一个该地址根本不存在的网络上的存款,不会被任何人收到。这种情况没有找回扫描可用,因为我们这边根本没有东西可找。这笔交易本身有效、已确认,而且永久留在了一条没有人在监控的链上。
之所以会发生这种情况,是因为同一个币种代号在多条链上通用,而提现页面又经常把网络选择器放在需要往下滚动才能看到的位置。USDT同时存在于Ethereum、Tron、Solana、BNB Chain等十几条链上。这些链上的USDT,每一个都是不同的资产,有着不同的地址格式,而其中两个——Ethereum和BNB Chain——使用的是相同的地址格式,这正是这个特定错误如此经典的原因。地址看起来是对的。它确实是对的,只不过是在一条我们没有监控的链上是对的。
| 结账时选择的币种 | 应选择的网络 | 地址开头 | 确认时间 | 最容易出错的方式 |
|---|---|---|---|---|
| Bitcoin | Bitcoin主网 | bc1、1或3 | 1至2次确认,约10至30分钟 | 以BEP-20“BTCB”的形式提现BTC |
| Tether(TRC-20) | Tron | T | 1次确认,90秒至3分钟 | 网络选择器忘了从Ethereum切换过来 |
| Tether(ERC-20) | Ethereum | 0x | 约12个区块,2至5分钟 | 选成了BNB Chain——地址同样以0x开头 |
| Ethereum | Ethereum主网 | 0x | 约12个区块,2至5分钟 | 从二层网络(Arbitrum、Base、Optimism)发送 |
| Monero | Monero | 4或8 | 10次确认,约20分钟 | 极少出错——没有包装版XMR会造成混淆 |
| Litecoin | Litecoin | ltc1、L或M | 约2次确认,5至15分钟 | 旧钱包里3开头的旧式地址 |
| Solana | Solana | base58,32至44个字符 | 约1次确认,5至30秒 | 把SOL和Solana上的USDT搞混 |
| TRON | Tron | T | 1次确认,约1至3分钟 | 把TRX发送到了USDT-TRC20的订单地址 |
付款页面上,地址旁边始终会标明网络名称,在你确认任何操作之前,花两秒钟读一下是值得的。一开始就慎重选择币种,也能缩小风险:我们对购买礼品卡最佳币种的排名,权衡的正是这一点,以及手续费和速度。
为什么“在钱包中打开”按钮有时不会出现
在一些订单上,付款页面会提供一个链接,直接把地址和金额传给桌面钱包。在另一些订单上,页面只显示二维码和地址。这是有意为之,也是少数几个“不提供便利反而更安全”的工程决策场景之一。
只要这笔付款无法在钱包URI中被无歧义地表达,这个按钮就会被撤下:比如需要备注或标签,但没有一种URI协议能携带它;比如地址的格式和该币种的地址形状对不上;比如记录的网络和币种本身矛盾;比如金额缺失或格式错误;又或者金额无法被精确转换成该代币的最小单位。把小数位截断,会导致发送的金额比要求的略少——这就相当于我们自己人为制造了一次金额不足。所以宁可不提供这个按钮。
Tron是唯一一种这个按钮完全不会出现的情况:TRX和USDT-TRC20没有标准的URI协议,可用的替代方案是各钱包专属的网页链接,而这会把你的收款地址暴露给第三方。这两种币只保留二维码,别无其他。当界面上提到具体的桌面钱包名称时——Bitcoin对应Electrum、Sparrow或Exodus;Litecoin对应Litecoin Core或Electrum-LTC;XMR对应Monero GUI或Feather——这些名字会写在一句话里,而不会做成按钮,因为一台设备针对每种URI协议只会注册一个处理程序,三个按钮做的其实是同一件事。
需要备注和标签的币种
有些链会把整个平台所有客户的存款都汇集到同一个地址,再用备注、标签或留言字段来区分不同客户。在这些链上,就你的订单而言,备注就是地址。一笔到账时没有附带备注的存款,会落入一个没有任何标记、说明它属于谁的资金池,要找回它,只能靠人工、缓慢、尽力而为地处理,而不是自动完成。
本站结账时可选的8种币——Bitcoin、Monero、Ethereum、Tron或Ethereum上的USDT、Litecoin、TRON和Solana——通常都不需要备注。如果你在任何付款页面上看到备注字段,哪怕它被标注为“可选”,也请把它当作必填项,并且绝不要从一个无法附加备注的交易所发送付款。
把一笔付款拆成两笔交易
发送到同一地址的两笔存款会被累加起来,所以刻意拆分付款,最终也能补齐一笔订单。但这仍然是错误的付款方式,原因和算术无关。
订单只有在总额确认之后才会继续,也就是说,你相当于把确认延迟买了两遍,而且要受两笔交易中较慢的那一笔拖累。在拥堵时段的Bitcoin上,这可能比整个报价窗口还要久。你也为一笔付款多付了一笔网络手续费。而如果其中一笔手续费出价过低、卡在mempool里,订单就会一直停留在部分付款状态,直到它被处理完。正确做法是一笔交易、精确金额、复制而不是重新输入。拆分付款是一种补救手段,不是一种付款策略。
卡在mempool里:一小时都没确认
以低于市场行情的手续费广播出去的交易,并没有丢失,只是在排队,而在Bitcoin网络拥堵高峰期,这个队伍可能长达数小时。付款页面在整个过程中都会如实显示“确认中”,因为它确实看到了这笔广播。
你有三种选择,而且都需要在你自己的钱包里操作,不是在我们这边。等待——手续费行情涨跌各半,大多数卡住的交易会在几小时内被处理完。如果你开启了replace-by-fee,可以用更高的手续费重新广播同一笔交易来提速。或者用child-pays-for-parent的方式推动它:用高手续费把找零输出重新花给自己,这样矿工为了收到这笔高手续费,就必须先确认那笔父交易。如果这期间报价整个失效了,48小时找回扫描依然会在背后为你兜底。
从根本上解决这个问题的办法,是不要再用有手续费竞价机制的链,去做金额小、时效紧的付款。用USDT-TRC20或Solana购买的卡,几秒钟就能确认,手续费只要几美分,而且这两条链都没有mempool竞价机制可言。
从交易所付款,和从自己的钱包付款
以上几乎所有失误,在币从托管交易所转出时都更容易发生,因为交易所夹在你的指令和链之间,会在两端都套用它自己的规则。
| 失误 | 来自交易所 | 来自你自己的钱包 |
|---|---|---|
| 到账不足 | 常见——手续费政策各不相同,也很少写清楚 | 少见——金额和手续费由你分别设置 |
| 网络选错 | 最主要的来源——一个下拉菜单,对应多条链 | 几乎不可能——钱包本身只对应一条链 |
| 窗口关闭后才到账 | 有可能——提现可能被批量处理,或被留作人工审核 | 广播是即时的 |
| 卡在低手续费上 | 少见——交易所通常会多付手续费 | 如果你手动设置手续费,就有可能发生 |
| 交易所会掌握什么 | 一笔提现到某个地址的记录,与你已核实的身份绑定 | 什么都不会——没有中间方可以告知 |
最后一行说的不是付款失误,却是最容易被人低估的一行。从一个已核实身份的账户提现,会产生一条永久记录,把你的身份和你付款的地址绑在一起。我们只会问你要一个邮箱地址,别无其他,也就是说结账环节本身几乎不掌握任何信息——但上游一步之遥的那家做过KYC的交易所,掌握的信息可不少。隐私威胁模型一文,梳理了这条链条上每一方实际能看到什么;与在交易所变现的比较一文,则讲清楚了成本方面的问题。
六个习惯,能避免上述所有问题
- 复制金额,绝不手动重新输入。复制按钮给出的数字精确到每一位小数。手动输入的金额容易被四舍五入,而金额不足和多付,都是这样发生的。
- 确认之前,先读一下网络那一行。它就在付款页面和提现页面里,紧挨着地址。花两秒钟做这件事,就能排除唯一一种无法挽回的失误。
- 在交易所付款时,确认手续费是被扣除还是额外添加的。如果是扣除式的,就把你输入的金额加上这笔手续费,让订单收到它原本要求的金额。
- 只发送一次。一笔交易,全额付清。拆分付款会让手续费和确认风险都翻倍。
- 根据具体情况选择币种。时效紧的付款,用快链上的稳定币;如果隐私比多等20分钟更重要,就用Monero。
- 是否留着这个页面,完全随你。订单保存在服务器端,代码会发送到你的邮箱。关闭页面不会取消任何东西。
常见问题
我付款金额略少,订单会因此作废吗?
不会。订单会暂停,付款页面会显示一个部分付款面板,标明确切的差额。把这个差额发送到同一个地址,订单就会补齐;你也可以要求把已到账的余额按你发送时的币种退回。在全额确认之前,不会发放任何代码,所以不存在“发一半货”这种状态。
我付款之后倒计时才归零。我的钱是不是没了?
没有。窗口关闭后的48小时内,延迟到账的存款会被找回扫描自动收录,而且这个地址从一开始就只属于你的订单。唯一无法保留的是价格——报价已经失效,所以结算会使用找回扫描处理那一刻的汇率,而不是当初显示给你的那个价格。
我把USDT发到了错误的网络上,还能找回来吗?
通常不能。在一条该地址根本不存在的链上完成确认的存款,我们这边没有任何人收到,所以我们这边也没有什么可以退还的。这是唯一一种值得你放慢速度、小心对待的失误,也是为什么网络名称会被印在地址旁边。
为什么我的交易“确认中”显示了一个小时?
因为手续费低于当时的市场行情,交易被排在了mempool里等待处理。你可以选择等待,也可以用replace-by-fee提高手续费重新广播,或者用child-pays-for-parent的方式推它一把。如果报价先失效了,48小时找回扫描依然适用。改用USDT-TRC20或Solana,可以完全避开手续费竞价机制。
我可以从Binance、Kraken或Coinbase付款吗?
可以,很多人都是这么做的。要留意两件事:网络选择器,这是转错链的来源;以及手续费政策,这是金额不足的来源。用你自己掌控的钱包付款,可以同时避开这两个问题,也不会留下把你的身份和地址绑在一起的提现记录。
我需要发送交易哈希值来证明自己付过款吗?
不需要。收款地址只为你的订单单独生成,所以到账的存款本身就能证明自己的身份。这里没有账户,没有工单,也没有任何需要提交的证明。监控从广播那一刻就已经开始,早于第一次确认。
如果我在付款过程中关闭了付款页面怎么办?
什么都不会改变。倒计时和监控系统都在服务器端运行,代码会通过邮件送达。你可以在订单查询页面,用你的订单号和结账时使用的邮箱重新打开这个订单。
如果我只是单纯改变主意了,能退款吗?
在代码发放之前,可以——一笔尚未到账或只部分到账的订单,可以按你发送时的币种退回。发放之后,一个尚未兑换的代码,可以在14天内按原币种申请退款。一旦代码已经在品牌方那里被兑换,就无法撤销了。常见问题页面列出了每一种情况,其余没有覆盖到的问题,可以通过联系我们找到真人处理。
