主页 > imtoken下载app钱包 > 网站集成比特币支付接口,实现比特币支付区块链api的应用
网站集成比特币支付接口,实现比特币支付区块链api的应用
比特币正变得越来越流行。对于需要集成到网站支付接口的,我们提供了一个区块链支付API开发思路,主要翻译自区块链API文档
首先,您需要注册区块链。注册区块链后,需要在后台生成一个比特币支付地址。这个以后有用
接下来说一下基本的操作流程
一、你需要知道当前人民币和比特币的汇率,然后换算汇率
通过GET接口
得到类似的返回数据
{
“美元”:{
“15m”:123.99,
“最后一个”:123.99,
“买”:123.99,
“卖出”:12415年比特币网站,
“符号”:“$”
},
“人民币”:{
“15m”:812.64193,
“最后”:812.64193,
“购买”:820,
“卖出”:835.20552,
“24 小时”:837.76,
“符号”:“¥”
},
...
}
其中,CNY是人民币。它提供了 15 分钟和 24 小时的平均值,可以换算成相对稳定的价格。
二、生成交易地址并设置回调通知
GET 接口 $xpub&callback=$callback_url&key=$key&gap_limit=$gap_limit
xpub - 你的xpub扩展公钥,在比特币钱包设置中的Wallets & Addresses下,点击右侧管理进入,生成你的钱包地址后,可以从上面xPub查询的更多选项中显示到
callback_url - 回调地址,URL需要编码
key - 你的区块链API密钥,申请地址:申请开通API接口,一般2-3个工作日开通
gap_limit - 可选。在出错之前允许有多少未使用的地址。
代码案例,直接CURL:
curl "https://api.blockchain.info/v2/receive?xpub=xpub6CWiJoiwxPQni3DFbrQNHWq8kwrL2J1HuBN7zm4xKPCZRmEshc7Dojz4zMah7E4o2GEEbD6HgfG7sQid186Fw9x9akMNKw2mu1PjqacTJB2&callback=https%3A%2F%2Fmystore.com%3Finvoice_id%3D058921123&key=[yourkeyhere]"
返回数据:
响应:200 OK,应用程序/json
{"address":"19jJyiC6DnKyKvPg38eBE8R6yCSXLLEjqw","index":23,"callback":"https://mystore.com?invoice_id=058921123"}
PHP案例:
$secret = 'ZzsMLGKe162CfA5EcG6j'; $my_xpub = '{YOUR XPUB ADDRESS}'; $my_api_key = '{YOUR API KEY}'; $my_callback_url = 'https://mystore.com?invoice_id=058921123&secret='.$secret; $root_url = 'https://api.blockchain.info/v2/receive'; $parameters = 'xpub=' .$my_xpub. '&callback=' .urlencode($my_callback_url). '&key=' .$my_api_key; $response = file_get_contents($root_url . '?' . $parameters); $object = json_decode($response); echo 'Send Payment To : ' . $object->address;
处理回调通知
用户支付完成后,区块链会访问之前设置的callback_url,并通过GET方法传入一系列参数15年比特币网站,如下:
value 用户支付的金额,以聪为单位。
input_address是用于接受用户付款的转账钱包地址
confirmations 交易的确认次数
{自定义参数}原来在callback_url中指定的参数还是会传回来的。但请注意,由于 GET 方式的限制,所有参数(包括区块链添加的参数)的总长度不得超过 255 个字符。
transaction_hash 交易哈希
input_transaction_hash 转账发生前完成用户支付的交易的哈希值
destination_address 用于接受付款的您自己的钱包地址
收到通知后,您应该向区块链返回以下字符:*ok*(包括前导星号和尾随星号)。这个约定一定要严格遵守,否则区块链服务器会在每一个新的区块重试一次(大约每10分钟一次),重试次数可以达到一千次(一周),你的域名很可能因此被上架列入黑名单。
回调处理参考代码
PHP:
prepare("replace INTO invoice_payments (invoice_id, transaction_hash, value) values(?, ?, ?)"); $stmt->bind_param("isd", $invoice_id, $transaction_hash, $value_in_btc); if($stmt->execute()) { echo "*ok*"; }