Сгенерированный адрес работает постоянно, на него можно присылать неограниченное количество платежей все они будут обрабатываться по заданному правилу.
Так же к сгенерированному адресу формируется код платежа по которому можно просматривать статистику непосредственно на нашем сайте.
Пример:
Генерируем адрес :
$payout_address = "39cjjxHTu7344mXExKb5SoDzbAoDWBpCj9";
$confirmations = 3;
$fee_level = "low";
$callback = urlencode("
http://www.test.me/addbalance.php?user=118");
$data = file_get_contents("
https://bitaps.com/api/create/payment/". $payout_address. "/" . $callback . "?confirmations=" . $confirmations"&fee_level=" . $fee_level);
$respond = json_decode($data,true);
$address = $respond["address"]; // Bitcoin address to receive payments
$payment_code = $respond["payment_code"]; //Payment Code
$invoice = $respond["invoice"]; // Invoice to view payments and transactions
?>
в результате получаем
{"payment_code": "PMTug7vx9UkT3Kz6KM7QJw18uXkcNPj66Nc9jX2woqjC3ZpEA2zF2",
"address": "17MjiqqY3hR8mdm8rWyjPk5EGhW7sXdWmp",
"invoice": "invPQiRoWT6Br2ux1zQXK1WzCtja362e3K2v6G6AhmruuXGgT8BPk"}
Пример просмотра транзакций по payment code
https://bitaps.com/PMTv2xgVZ6Kzc1yHdriPheVybjp2KTGfTEBRJHpPkjM5AyrCm9jRKИ можно ли срадствами api определить адрес от куда пришел платеж на этот адрес?Да можно
Callback присылает следующую информацию:
invoice={invoice}&
tx_hash={transaction hash}&
code={payement code}&
confirmations={confirmations}&
amount={amount} # satoshi
По хешу транзакции вы можете запросить все детали данной транзакции:
https://bitaps.com/api/transaction/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33bВ ответе вы получаете всю детальную информацию:
{"timestamp": 1478770861, "input": [{"redeem_script": null, "input_index": 0, "output_index": 1, "amount": 1116112, "sequence": 4294967295, "address": ["1BPcLTp4M5vQBFtXgvhp52HNe8p1XWdCTa"], "sig_script": {"hex": "483045022100d98727158c466bda9ac82a6d476409accb6722e960955dabd1fc314ff187518a022 02dd6eb80d882baed10c3a7a7767910eea4ab0e1599d8e2c5837a883cacbb40c00121025df5cf78 a4c923caa7054e6d75715238450b9910e7015db42f430d5e2b40e6b3", "pattern": "<72> <33>", "asm": "3045022100d98727158c466bda9ac82a6d476409accb6722e960955dabd1fc314ff187518a02202 dd6eb80d882baed10c3a7a7767910eea4ab0e1599d8e2c5837a883cacbb40c001 025df5cf78a4c923caa7054e6d75715238450b9910e7015db42f430d5e2b40e6b3", "type": "SIGSCRIPT"}, "transaction_block": 438194, "script": {"hex": "76a91471f7e7d7a2acc5f3be6dd25562514c6abce5f14988ac", "pattern": "OP_DUP OP_HASH160 <20> OP_EQUALVERIFY OP_CHECKSIG", "asm": "OP_DUP OP_HASH160 71f7e7d7a2acc5f3be6dd25562514c6abce5f149 OP_EQUALVERIFY OP_CHECKSIG", "type": "P2PKH"}, "transaction_hash": "c0056f26a50cc33f8bb92da375b8c49abd77e842e7f7c0bfde98cacf32c578f7"}], "block": 438197, "locktime": 0, "hash": "545d09b0d0b8ddba3f03d7dacf5eacf10f0f1f2deda5a33654190e20dee8a49b", "size": 226, "coinbase": false, "output": [{"address": ["1TipsnxGEhPwNxhAwKouhHgTUnmmuYg9P"], "out_index": 0, "script": {"hex": "76a914050dbaa82baeaa15ab5e31385fd880a8f25ef42288ac", "pattern": "OP_DUP OP_HASH160 <20> OP_EQUALVERIFY OP_CHECKSIG", "type": "P2PKH", "asm": "OP_DUP OP_HASH160 050dbaa82baeaa15ab5e31385fd880a8f25ef422 OP_EQUALVERIFY OP_CHECKSIG"}, "amount": 20000}, {"address": ["14kKE1nVxTxc6bvjL2orRnKmCPKVVpWxKv"], "out_index": 1, "script": {"hex": "76a91429197a058c8570cb8e9968c24fbbec643805b76188ac", "pattern": "OP_DUP OP_HASH160 <20> OP_EQUALVERIFY OP_CHECKSIG", "type": "P2PKH", "asm": "OP_DUP OP_HASH160 29197a058c8570cb8e9968c24fbbec643805b761 OP_EQUALVERIFY OP_CHECKSIG"}, "amount": 1086480}], "fee": 9632, "data": ""}
Запрос возвращает словарь в котором по ключу "input" доступен список всех входящих монет включая адреса а также статусы монет (подтвержденные или нет)
К примеру в сервисе который сделан нами для примера использования нашего API btcphone.ru, мы используем статусы монет для того что бы иметь возможность зачислять платежи на мобильные телефоны с 0 подтверждением транзакции биткоин.
При получения callback действует следующий алгоритм:
1. Получить все данные о транзакции
2. Проверить что все входящие монеты в данной транзакции являются уже подтвержденными ( то есть это не цепочка unconfirmed transaction)
3. Проверить что уровень комиссия в данной транзакции достаточен что бы она зашла в блокчейн в течении часа
4. Входы транзакции имеют поле "sequence" = 4294967295 ( то есть нет replace by fee сигнала)
Если все 4 условия выполняются можно принимать данный платеж с 0 подтверждением.
Если у вас есть какие либо дополнительные вопросы будем рады ответить!