mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

比特币开发指南 - 支付处理Payment Processing

收藏
分享


请求支付

在请求支付之前,程序需要首先生成一个比特币 地址 或者从其他程序,如Bitcoin Core,获得一个 地址 。比特币 地址 的详细信息在 交易 一节中阐述,并且在该节中给出了为何要 避免多次使用同一个比特币地址 的两个重要原因——而第三个原因则是与支付请求有关。

每次收款时使用单独 地址 会使辨别付款顾客身份变得更加繁琐。程序只需要追踪特定的的支付请求以及其中包含的 地址 ,然后搜索 区块链 ,查询匹配该 地址 的交易,即可确认身份。

下一小节将详细介绍四种相互兼容的方法,用以向支付者提供支付 地址 和金额。出于便利性和兼容性考虑,推荐支持所述全部方法。

1. 钱包 程序允许用户在支付界面中粘贴或者手动输入 地址 和支付金额。当然,这种方法并不方便,但提供了一种有效的退却选择。

2. 几乎所有的桌面钱包都可以关联到 bitcoin: URIs ,支付者只需要点击链接即可直接进入支付界面,同时支付地址与金额已经预填完整。许多手机移动钱包也支持此项功能,但网页钱包基本不支持,除非通过安装浏览器扩展程序或者配置URI链接句柄。

3. 大多数移动钱包支持扫描包含 bitcoin: URIs 编码信息的QR码,并且几乎所有的 钱包 程序都支持显示收款二维码。这同时也方便了在线订单,QR码对于当面交易十分有用。

4. 近期的 钱包 更新增加了对一种新型 支付协议 的支持,该协议通过 X.509 证书认证收款者身份,提高了支付的安全性,并且引入了一些重要新特性如 退款 等。

警告:需要特别当心针对收款支付的盗窃行为。尤其要注意的是, 私钥 绝对不能储存在网络服务器上,并且支付请求需要通过HTTPS或其他方法加密传输,防止中间人攻击替换收款 地址



纯文本

如果需要只通过复制粘贴手段就能确定支付数量,你需要提供 地址 、数量和 单位 。当然最好也包含一个有效时间,例如:

(注:所有本节范例使用的均是 Testnet 地址。)

Pay: mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN

Amount: 100 BTC

You must pay by: 2014-04-01 at 23:00 UTC

必须指定 单位 。在撰写本文时所有的流行比特币钱包程序默认显示单位均是 bitcoins (BTC)或 millibits (mBTC)。大多数都支持选择BTC或mBTC之一作为显示单位,还有一些程序支持以下这些 单位

Bitcoins

Unit (Abbreviation)

1.0

bitcoin (BTC)

0.01

bitcent (cBTC)

0.001

millibit (mBTC)

0.000001

microbit (uBTC)

0.00000001

satoshi

由于BTC和mBTC都被广泛接受,在以复制粘贴文本定义支付订单时,同时指定两种 单位 下的数额显得更加直观。例如:

Pay: mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN

Amount: 100 BTC  (100000 mBTC)

You must pay by: 2014-04-01 at 23:00 UTC

bitcoin: URI

BIP21 中定义的 bitcoin: URI 方案消除了支付者在复制粘贴文本中可能出现的支付 单位 的混淆。同时也能通过支付订单向支付者提供额外的信息。举个例子:

bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN?amount=100

只有 地址 是必要的,如果只定义了地址,钱包会生成一个预填好收款地址的支付请求,需要支付者输入支付数量。

支付数量总是以BTC的小数形式确定,对于整数数量的BTC(如上例),可以省略小数点。小数数量的BTC的数量开头的0可以省略;例如,下面例子中的1mBTC的请求均是有效的:

bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN?amount=.001

bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN?amount=0.001

还有两个被广泛支持的参数 label message label 参数用来标识收款人名字, message 参数通常被支付者用来描述支付请求。Label和message参数都被存储在支付者钱包程序中并不会被包含在真正的交易中,所以其他的比特币用户无法看到这两个参数信息。这两个参数必须通过 URI编码

四个参数集合起来,通过URI编码,转行显示为如下形式。

bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN\

?amount=0.10\

&label=Example+Merchant\

&message=Order+of+flowers+%26+chocolates

上述的URI可以编码成HTML格式,以兼容不支持URI链接的钱包程序,并且可以向支付者提供一个有效时间。

?amount=0.10\

&label=Example+Merchant\

&message=Order+of+flowers+%26+chocolates"

>Order flowers & chocolate using Bitcoin

(Pay 0.10 BTC [100 mBTC] to mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN by 2014-04-01 at 23:00 UTC)

上述代码生成链接如下:

Order flowers & chocolates using Bitcoin (Pay 0.10 BTC [100 mBTC] to mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN by 2014-04-01 at 23:00 UTC)

一些订单通过用Javascript显示倒计时来表示有效剩余支付时间。

在后文中的 支付协议 一节中可以看到,URI方案可以通过新的可选和必要参数进行扩展。在撰写本文时,唯一被广泛接受的新参数是 支付协议 中的 r 参数。

程序无论支持哪种形式的URIs链接,最终都需要通过提示由用户最终确认支付,除非用户明确地禁用了提示(可以用于小额支付)。

QR码

QR码可以用来交换 bitcoin: URIs 信息,广泛应用于当面交易、图像或影像中。大多数的移动钱包程序和部分桌面钱包程序都支持扫描QR码,直接进入预填支付界面。

下图中的四张 比特币QR码 显示的是同一个 bitcoin: URIs 码,分别以四种不同的错误修正级别(显示在在二维码上方)编码生成的。QR码可以包含 label message 参数,以及其他可选参数。在本例中为了压缩QR码的大小和保证较低素质的摄像头可以容易扫描成功,并未包含额外参数。

QR码提供了四种不同错误修正等级:

1. 低:最多可修复7%的图像损失

2. 中:最多可修复15%的图像损失,但QR码面积比低级修复等级图像大近8%。

3. 四分位:最多可修复25%图像损失,但QR码面积比低级修复等级图像大近20%。

4. 高:最多可修复30%图像损失,但QR码面积比低级修复等级图像大近26%。

错误修正配合校检和(checksum)可以确保比特币QR码信息完整且不会被意外修改,因此你的程序需要针对不同的显示面积来选择合适的错误修正等级。显示面积有限时低错误修正等级更加适用,而当具备高分辨率显示能力时四分位修正等级可以帮助实现快速扫码。

支付协议

比特币核心0.9版本支持新的支付协议。针对支付需求,新的支付协议添加了很多重要的功能。

· 支持X.509认证和SSL加密,以便能够对接收者的身份进行认证并阻止中间人的恶意攻击。

· 提供更多支付过程的

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。
相关阅读