BTC платежи через blockchain.info в NodeJS

Может кто-нибудь объяснить, как я могу проверить платеж BTC с помощью blockchain api в моем проекте? У меня есть конфиги и заказы, порядок размещения пользователей, я сохраняю его в MongoDB и даю ему уникальный адрес, созданный с помощью blockhain API, вот пример маршрута в порядке размещения (Express).

let order = new Order();

order.type = 1;
.....
order.currency = botconfig.currency;

let callback = env.cbUrl + '/' + botconfig._id + '/secret/' + md5(botconfig._id + new Date());

rp({uri: 'https://api.blockchain.info/v2/receive?xpub=' + env.xPub + '&callback=' + callback + '&key=' + env.apiKey + '&gap_limit=' + env.gap_limit})
         .then(function (data) {

               console.log(data);

               let jsonData = JSON.parse(data);

               order.addr = jsonData.address;
               order.callback = callback;

               order.save(function (err) {
                     if (!err) {

                         req.flash('success', 'Order placed. Now please send BTC ');

                         res.render('botconfig/waitbtc', {
                               botcfg: botconfig,
                               order_id: order._id,
                               address: jsonData.address,
                               user: user
                             });
                           }
                        });
                    })
          .catch(function (err) {
               console.log(err);
               res.render('error', {
                      message: 'Service unavailable',
                            error: {status: 'Code: 400', stack: 'BTC payment is not available now. Please try later.'}
                        });
                    });

В ответ я получаю новый адрес для оплаты и обратный звонок из моего запроса-обещания

{
  "address" : "1HypEBfqqyzkfjfSDTkLs8BhYpFwqLCFXQ",
  "index" : 26,
  "callback" : "https://mywebsite.com/orders/payments/id/5ac20d1954b4c03600f95ac0/secret/a13ca78e411c2fe43cebd2b473df7749"
}

И страница отображается с новым адресом для оплаты. Но что мне тогда делать? Как я могу проверить, что платеж получен, я могу обновить некоторые div, например, с помощью ajax с помощью blockchain.info API POST-запроса, как это

rp({uri: 'https://api.blockchain.info/v2/receive/balance_update?key=' + env.apiKey + '&addr=' + order.addr + '&callback=' + order.callback + '&onNotification=KEEP', method: 'POST'})
                    .then(function (data) {
                        console.log(data);    
                    })

Но это будет 500 Внутренняя ошибка сервера в ответе json... Или, может быть, мне не нужно использовать второй запрос POST и должен вызвать обратный вызов из первого запроса get с новым сгенерированным адресом, но я не понимаю, где я могу разместить его и кто должен идти по этой ссылке...

0 ответов

Другие вопросы по тегам