Blockchain.info đã triển khai API thanh toán nhận thanh toán mới của họ vào ngày 23 tháng 11 năm 2015. (Nguồn) Việc này sẽ thay thế cho phiên bản API thanh toán nhận trước đó sẽ được loại bỏ vào ngày 7 tháng 12 năm 2015. Bất kỳ yêu cầu nào được thực hiện sau ngày đó đều phải sử dụng phiên bản Hierarchical Deterministic (HD) mới, nhưng đừng lo lắng cả hai phiên bản đều rất giống nhau trong cách sử dụng. Trong bài học này tôi sẽ chỉ ra sự khác biệt và cách sử dụng HD BIP32 xpub mới nhận thanh toán API.
Sự khác biệt chính với phiên bản mới là nó sử dụng địa chỉ xác định, cụ thể là BIP32. Việc này sử dụng khóa công khai mở rộng (xpub) để tạo ra tất cả các địa chỉ trong tương lai một cách xác định. Điều này đảm bảo rằng bạn có thể tạo ra chính xác các địa chỉ tương tự trong tương lai miễn là bạn vẫn có các khóa công khai và riêng tư mở rộng. Sử dụng công nghệ này blockchain.info đã có thể giảm chuyển tiếp các khoản tiền mà họ sử dụng trong phiên bản trước vì tất cả các địa chỉ đã được tạo sẽ được sở hữu theo khóa cá nhân mở rộng. Tính năng gọi lại vẫn làm việc tương tự như trong phiên bản trước, cho phép các thông báo được gửi đến máy chủ web của bạn sau khi nhận được thanh toán.
Đây là những gì bạn sẽ cần để bắt đầu sử dụng phiên bản mới của API nhận thanh toán.
Khóa API (Yêu cầu Một ở đây)
Khóa xpub BIP32
Đó là nó! Khóa công khai mở rộng BIP32 có thể là một trong số từ ví tiền bên ngoài như multibit hoặc bạn có thể sử dụng ví dụ alpha mới của blockchain.info.
Khởi tạo yêu cầu bằng cURL
PHP
index.php
//set parameters
$api_key = "your_blockchain_api_Key";
$xpub = "xpubYour_extended_public_key";
$secret = "your_secret"; //this can be anything you want
$rootURL = "http://yourrooturl.com/directory"; //example https://mysite.org or http://yourhomepage.com/store
$orderID = uniqid();
//call blockchain info receive payments API
$callback_url = $rootURL."/callback.php?invoice=".$orderID."&secret=".$secret;
$receive_url = "https://api.blockchain.info/v2/receive?key=".$api_key."&xpub=".$xpub."&callback=".urlencode($callback_url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $receive_url);
$ccc = curl_exec($ch);
$json = json_decode($ccc, true);
$payTo = $json['address']; //the newly created address will be stored under 'address' in the JSON response
echo $payTo; //echo out the newly created receiving address
Lưu phần trên dưới dạng tệp php và chạy nó trên máy chủ của bạn. Nếu bạn đã làm đúng mọi thứ, bạn sẽ thấy một địa chỉ mới trên màn hình. Callback có thể bao gồm bất kỳ thông tin tùy chỉnh bạn muốn, trong ví dụ này tôi chỉ bao gồm một thứ tự / số hóa đơn và bí mật. Giống như phiên bản trước của API nhận thanh toán, bí mật là một mã / mật khẩu mà bạn tạo nên. Nó được sử dụng để ngăn chặn kẻ tấn công cố gắng truy cập url gọi lại của bạn bằng tay mà không phải trả tiền.
Thực hiện gọi lại
PHP
[php]
<b>callback.php</b>
<pre id="block1" class="prettyprint"> //implementing the callback file
$secret = "your_secret";
if($_GET['secret'] != $secret)
{
die('Stop doing that');
}
else
{
//update DB
$order_num = $_GET['invoice'];
$amount = $_GET['value']; //default value is in satoshis
//$amountCalc = $amount / 100000000; //optional convert to bitcoins
$queryUpdate = "UPDATE orders SET paid = 1, recd = $amount WHERE orderid = '$order_num'";
$doUpdate = mysqli_query($conn, $queryUpdate) or die(mysqli_error($conn));
if($doUpdate)
{
echo "*ok*"; // you must echo *ok* on the page or blockchain will keep sending callback requests every block up to 1,000 times!
}
}
</pre>
[php]</pre>
Phần quan trọng nhất ở đây, là * ok * về thành công. Nếu bạn không echo * ok * blockchain.info sẽ tiếp tục truy cập vào url gọi lại của bạn mỗi khối mới cho đến 1.000 khối. Cũng quan trọng không kém là khối đầu tiên của mã kiểm tra để đảm bảo rằng các trận đấu bí mật. Nếu nó không phù hợp thì url gọi lại đang được truy cập theo cách thủ công để chúng tôi giết kịch bản.
Sử dụng $ _GETs chúng ta có thể nhận được thông tin về giao dịch. Các GET sau đây được cung cấp tự động theo yêu cầu.
$ _GET ['value'] - Đã nhận được bitcoin bao nhiêu, trong satoshis
$ _GET ['confirmationations'] - Số lượng xác nhận cho giao dịch này
$ _GET ['address'] - Địa chỉ đã được tạo ra để nhận thanh toán
$ _GET ['transaction_hash'] - băm giao dịch cho giao dịch này
Để đảm bảo an ninh bổ sung đối với chi tiêu kép, bạn có thể sử dụng thông số xác nhận để chỉ cập nhật cơ sở dữ liệu của mình khi bạn có một số xác nhận nhất định.
/ / thực hiện các tập tin gọi lại
<pre>[php]
//implementing the callback file $secret = "your_secret"; if($_GET['secret'] != $secret) { die('Stop doing that'); } else if($_GET['confirmations'] > 1) { //update DB $order_num = $_GET['invoice']; $amount = $_GET['value']; //default value is in satoshis //$amountCalc = $amount / 100000000; //optional convert to bitcoins $queryUpdate = "UPDATE orders SET paid = 1, recd = $amount WHERE orderid = '$order_num'"; $doUpdate = mysqli_query($conn, $queryUpdate) or die(mysqli_error($conn)); if($doUpdate) { echo "*ok*"; // you must echo *ok* on the page or blockchain will keep sending callback requests every block up to 1,000 times! } }
[/php]
Sử dụng các API thanh toán nhận thanh toán là tuyệt vời cho các thương nhân muốn có thể chấp nhận trực tuyến bitcoin. Bạn cũng có thể sử dụng nó để bắt đầu một cuộc gây quỹ trực tuyến cho một nhóm hoặc từ thiện. Bạn có thể sử dụng nó để tạo ra một hệ thống pay-per-post, hoặc một paywall để kiếm tiền từ nội dung web ... các sử dụng khác nhau có thể có vẻ gần vô hạn. Nó hoàn toàn miễn phí và không có ứng dụng hoặc kiểm tra tín dụng liên quan. Miễn là bạn yêu cầu một khóa API và có một khóa xpub, bạn có thể sử dụng dịch vụ này.
Google Translate for Business:Translator ToolkitWebsite Translator