如何在网站上接受比特币支付:商户实操指南
想接受比特币支付?对比个人钱包与支付网关,了解确认几次后再发货,以及如何处理币价波动和付款金额不符。

有些顾客宁愿用手里已有的加密货币付款,也不想输入银行卡号,而这种币很多时候就是比特币。如果你想在网站上接受比特币支付,难点并不在于收币,而在于弄清每笔款项对应哪个订单、什么时候发货才安全,以及顾客付错金额时该怎么办。
本文介绍几种可选方案、比特币收银台的实际流程、应该等待几个确认,以及如何应对币价波动和手续费。适合网店、SaaS、主机服务和数字商品等在线业务。
为什么要接受比特币支付?
- 已经持有 BTC 的顾客:比特币仍是大多数人最先想到的加密货币,提供这个选项可以少一个放弃付款的理由。
- 没有拒付:已确认的比特币交易无法被付款人的银行撤回,是否退款完全由你决定。
- 面向全球:任何国家的买家都能付款,不会遇到境外银行卡被拒的问题。
- 第二条收款通道:即使银行卡收单账户被冻结,订单仍可以通过加密货币继续进来。
当然也有缺点:比特币价格波动大,网络拥堵时手续费会上涨,平均约十分钟才出一个区块,确认速度比 TRON 等网络慢。所以大多数商户会把比特币作为 USDT 等稳定币之外的补充,而不是替代。稳定币部分可以参考我们的USDT 收款指南。
接受比特币支付的三种方式
| 个人钱包 | 自建支付服务器 | 比特币支付网关 | |
|---|---|---|---|
| 搭建时间 | 几分钟 | 数天:服务器、节点或索引器、持续更新 | 提交商户申请,之后一个 API 调用或付款链接即可 |
| 款项与订单匹配 | 手动在区块浏览器核对 | 自动 | 自动,每张账单一个独立地址 |
| 付款时的汇率 | 自己计算 | 自动 | 在账单有效期内锁定 |
| 订单通知 | 无 | 取决于你的配置 | 向你的服务器发送签名 Webhook |
| 运维 | 无 | 长期由你负责 | 由网关负责 |
| 适合谁 | 偶尔几笔手动交易 | 有运维能力的团队 | 希望省心运行的企业 |
在网站上只贴一个钱包地址,收捐款还可以,但只要两位顾客同时转入相近的金额,你就分不清谁付了哪一单。支付网关的做法是给每张账单分配独立的收款地址。
通过支付网关收比特币的流程
在 mistKET,比特币和平台上其他资产走的是同一套流程:
- 后端创建账单:发送一个签名的 API 请求,包含金额、计价货币(USD、EUR、GBP、TRY、RUB 或 AED)和你的订单号,返回收银台链接。也可以在商户后台手动创建账单,再通过聊天或邮件发送链接。
- 顾客打开托管收银台:页面显示精确的 BTC 金额、原生 SegWit 地址和二维码。二维码采用标准的 bitcoin: 支付 URI,大多数钱包会自动填好地址和金额。
- 汇率锁定:在账单有效期内,BTC 金额保持不变。
- 网关发现交易:未确认的交易在内存池(mempool)中就会被识别,顾客立即看到“已收到付款”的提示。
- 跟踪确认数:达到所需确认数后,你的服务器会收到经 HMAC-SHA256 签名的
invoice.paid和invoice.confirmedWebhook。验证方法见加密货币支付 Webhook 一文。 - 余额入账:扣除约定费率后,款项计入你的 BTC 余额,你可以随时申请提现到自己的地址。
确认数:什么时候发货才安全?
内存池里的交易已经广播,但还没有被写入区块。在确认之前,它在少数情况下可能被替换或丢弃。每多一个区块叠加在上面,被撤销的可能性就大幅降低。比特币平均约十分钟出一个块,但间隔差异很大。
mistKET 目前在比特币网络上等待两个确认后才将账单标记为已确认。合理的发货规则如下:
| 你卖什么 | 何时交付 |
|---|---|
| 即时交付的数字商品、授权码、充值 | 收到 invoice.confirmed 之后 |
| 几天后才发出的实物商品 | 收到 invoice.paid 开始备货,invoice.confirmed 后发货 |
| 订阅和主机服务 | invoice.confirmed 后开通;告知顾客通常需要 10 到 30 分钟 |
提前告诉顾客比特币确认比刷卡慢。在订单页写上一句话,就能减少大部分“我的订单呢?”的咨询。
币价波动、手续费和金额不符
币价波动
你用法币定价,比如 49 美元,账单按锁定汇率换算成 BTC。之后你持有的是比特币,它的价值还会继续变化。mistKET 的余额按资产分别记账,BTC 收款在你提现之前一直是 BTC。如果不想承担价格风险,可以定期提现并在自己常用的交易所兑换,或者引导不在意币种的顾客使用 USDT。
网络手续费
比特币网络手续费由顾客在转账时支付,以实际到达收款地址的金额为准。从交易所提币的顾客有时会忘记交易所还会扣除提币手续费,导致到账金额不足。收银台页面会提醒这一点,但最好在你自己的付款说明里再强调一次。
少付和多付
- 少付:到账金额不足时,账单会被标记为少付,顾客可以补足差额,截止时间会相应延长。你也可以为账户设置一个小的容差百分比。
- 多付:多付的金额会单独标记,但仍算付款成功,是否退还差额由你决定。
- 延迟付款:计时结束后不久到达的转账,在短暂的宽限期内仍会匹配;更晚到达的会进入人工审核,而不是直接入账。
接入比特币收款的步骤
- 申请成为商户:提交网站、业务类型、预计交易量以及需要的资产(包括比特币)。团队会在发放 API 密钥前审核每份申请。
- 确定发货规则:根据上面的确认表,写清楚订单何时交付。
- 完成对接:用一个签名的 POST 请求创建账单,并处理 Webhook。任何能发 HTTPS 请求并计算 HMAC 的语言都可以;接口说明见 API 文档。不想写代码,也可以直接用后台的付款链接。
- 小额测试:自己付一笔真实账单,观察状态从待支付到已支付再到已确认,并检查订单系统是否正确响应。
- 写清付款说明:“请在比特币网络上用 BTC 付款,按显示金额足额转账;如从交易所提币,请把提币手续费计算在内。”
- 制定提现节奏:按固定周期申请提现到自己的钱包。每笔提现会立即冻结相应余额,审核后发出,并记录交易哈希。
常见错误
- 所有顾客共用一个地址,导致无法对账。
- 交易尚未确认就交付即时数字商品。
- 把加密货币选项藏在收银台最底部。
- 在错误的网络上收款。转到其他链地址的比特币,网关无法匹配。
- 忽视 Webhook 失败。记录每次推送,并让处理程序按订单号保持幂等,因为 Webhook 可能会重试。
税务、记账与合规
接受比特币并不意味着可以不顾税法和消费者保护规定。请记录每张账单及其付款时的法币价值;商户后台会显示应收金额、实收金额和交易哈希,方便记账。各国规定差异很大:中国大陆禁止开展虚拟货币相关业务活动,境内企业不能用加密货币收款;土耳其等国家也限制或禁止把加密货币作为支付手段。上线前请确认适用于你业务的法规,并且只销售在你和顾客所在地都合法的商品。
如果想先了解整体思路,可以阅读网站如何接受加密货币支付。


