+
95
-

回答

可以使用blockchain api,他可以实时监听钱包收付款事件并通过回调告知您的服务器。

地址:https://www.blockchain.com/api/api_receive

Blockchain Receive Payments API 介绍

Blockchain Receive Payments API V2 是开始接受自动比特币支付的最快捷、最简单的方法。只需一个简单的 HTTP GET 请求,您就可以在几分钟内启动并运行。
接收比特币付款所涉及的困难之一是需要为每个新用户或发票生成一个唯一地址。这些地址需要安全地监控和存储。区块链接收支付 API 负责地址的生成和监控。每当收到付款时,我们都会使用简单的回调通知您的服务器。

请求 API 密钥

访问 Blockchain.info API

要使用 Receive Payments API V2,请在https://www.blockchain.com/api/request申请 API 密钥。

此 API 密钥仅适用于我们的 Receive Payments API。您不能将标准区块链钱包 API 密钥用于 Receive Payments V2,反之亦然。

获取扩展公钥 (xPub)

可以使用我们新的区块链钱包创建 xPubs

此 API 要求您拥有 BIP 32 帐户 xPub 才能接收付款。开始接收付款的最简单方法是在https://www.blockchain.com/api/request打开一个区块链钱包。您应该在您的钱包中创建一个新帐户,专门用于此 API 促成的交易。进行 API 调用时,请使用此帐户的 xPub(位于 Settings -> Addresses -> Manage -> More Options -> Show xPub 中)。

生成接收地址 [GET]

为您的客户提供唯一的、未使用的比特币地址

可以使用我们新的区块链钱包创建 xPubs

https://api.blockchain.info/v2/receive?xpub=$xpub&callback=$callback_url&key=$key

根据 BIP 44 的定义,钱包软件不会扫描过去 20 个未使用的地址。如果来自此 API 的足够多的请求没有匹配的付款,您可以生成超出此范围的地址,这将使支付给这些地址的资金变得非常困难。因此,如果此 API 检测到会造成超过 20 个未使用地址的间隙,它将返回错误并拒绝生成新地址。如果您遇到此错误,您将需要切换到新的 xPub(在同一个钱包内也可以),或者接收到之前创建的 20 个地址之一的付款。

https://api.blockchain.info/v2/receive?xpub=$xpub&callback=$callback_url&key=$key&gap_limit=$gap_limit

xpub -您的 xPub(您希望将付款发送到的位置)

callback_url -收到付款时要通知的回调 URL。记得在调用 create 方法时对回调 url 进行 URL 编码。

key -您的 blockchain.info 接收付款 v2 api 密钥。请求 API 密钥。

gap_limit -可选。在出错之前允许多少个未使用的地址。

使用您的 xPub 派生一个未使用的地址:

curl "https://api.blockchain.info/v2/receive?xpub=xpub6CWiJoiwxPQni3DFbrQNHWq8kwrL2J1HuBN7zm4xKPCZRmEshc7Dojz4zMah7E4o2GEEbD6HgfG7sQid186Fw9x9akMNKw2mu1PjqacTJB2&callback=https%3A%2F%2Fmystore.com%3Finvoice_id%3D058921123&key=[yourkeyhere]"

让您的客户将比特币发送到响应中包含的地址:

响应:
200 OK,应用程序/json
{
“地址”:“19jJyiC6DnKyKvPg38eBE8R6yCSXLLEjqw”,
“索引”:23,
“回调”:“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;

回调通知处理php示例代码

$real_secret = 'ZzsMLGKe162CfA5EcG6j';
$invoice_id = $_GET['invoice_id']; //invoice_id is passed back to
the callback URL
$transaction_hash = $_GET['transaction_hash'];
$value_in_satoshi = $_GET['value'];
$value_in_btc = $value_in_satoshi / 100000000;

//Commented out to test, uncomment when live
if ($_GET['test'] == true) {
return
}

try {
//create or open the database
$database = new SQLiteDatabase('db.sqlite', 0666, $error);
} catch(Exception $e) {
die($error);
}

//Add the invoice to the database
$stmt = $db->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*";
}



网友回复

我知道答案,我要回答