假设您有一个游戏平台或服务,您计划接受加密货币以增强用户的余额。
apirone payment gate has wallets用于组合加密钱包的单独加密货币和accounts。可以通过API请求创建帐户和钱包,在扩展和部署现成的项目时,这非常方便。您也可以在页面上的https://apirone.com/dashboard/create请求完全匿名,您可以根据需要创建尽可能多的钱包和帐户,而无需限制该数字。
最主要的是将钱包数据保持在安全的地方。
测试钱包:TBTC-BDE1CFC70297E4FF7068334B25986819
传输键:hyl1aqkd5vwdzt1uexgucoxocekug4yc
要为任何金额补充余额,客户只需要查看current rate,付款地址和QR code即可。当以加密货币付款时,没有付款目的或确切的金额,因此该地址用作付款标识符(例如,让我们以比特币区块链为例)。
对于每个用户,我们使用POST request创建一个单独的比特币地址,并具有用户ID,电子邮件或登录名的参数。
另外,您可以添加一个秘密键以提高平台的安全性。
<?php
$json_data = array ( "callback" => array( 'url'=> 'http://example.com/callback', 'data' => array ( 'user_id' => "1234", 'secret' => "7j0ap91o99cxj8k9")));
$wallet = "tbtc-bde1cfc70297e4ff7068334b25986819";
$api_base = "https://apirone.com/api/v2/wallets/". $wallet ."/addresses";
$curl = curl_init($api_base);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($json_data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$http_status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$response = curl_exec($curl); curl_close($curl);
$decoded = json_decode($response, true);
echo "Please send the payment to the following bitcoin address: " . $decoded["address"];
?>
in'url'=>'http://example.com/callback'更改示例链接到我们网站上回调的页面地址。此页面将收到有关传入付款的所有信息。
'user_id'是您客户端的某些标识符。
'Secret'是您创建的秘密代码,在接收付款服务的数据时进行了额外的安全性。
$钱包 - 是我们正在使用的钱包的标识符。
在此示例中,我们使用比特币测试网进行调试,在生产中将其更改为您的钱包。
您可以创建一个无限数量的地址,此外,它们是永恒的。这意味着我们始终监视它们,当收到付款时,我们将所有保存参数通知指定的URL。
在“余额补充”页面上,如果付款自动出现在屏幕上,则可以为客户提供方便。为此,您可以定期请求数据库,并检查是否付款。
回调处理
回调页面用于接收交易数据,并在付款时遵循业务逻辑。 Apirone将我们指定的地址,金额,交易哈希,确认数和数据(user_id and Secret)发送到此页面。数据以JSON格式发送的POST请求发送,该请求更方便,更安全。
<?php
$secret = "7j0ap91o99cxj8k9";
//receive JSON data
$data = file_get_contents('php://input');
if ($data) {
$params = json_decode($data, true);
// Checking the secret code
if ($params["data"]["secret"] !== $secret) die();
$input_address = $params["input_address"];
$value_in_satoshi = $params["value"];
// If the number of confirmations = zero, then we write data into the database but do not pay
if ($params["confirmations"] == 0) {
// Writing data about the transaction and
note the invoice status - waiting for payment confirmation
}
if ($params["confirmations"] >= 1) {
// the transaction is confirmed in the network, we answer *ok* to the payment service and replenish the client balance
echo "*ok*";
}
}
?>
P.S。:
我们强烈建议在网络中至少进行一次确认后,如果金额明显大,则在3个确认后进行充电。
>
我们建议在数据库中存储整数satoshi量,因为浮点值可能导致计算错误。
所有钱包的终点都是相同的,将$钱包参数更改为莱特币,比特币现金,狗狗等。新的加密货币,稳定币和代币将来会出现。