Exemplo n.º 1
0
        private Payment CheckCryptoCurrency(Invoice invoice)
        {
            var config = db.PaymentTypeConfig.Where(p => p.PaymentId == invoice.PaymentTypeId).OrderByDescending(p => p.Id).FirstOrDefault();

            double balance = 0;

            if (config != null)
            {
                CryptoCurrency = new BitCoin(config.Login, config.Pass, config.Host, config.Port);
                balance        = CryptoCurrency.GetBalance(invoice.AccountNumber);

                if (balance >= invoice.Value)
                {
                    var transaction = CryptoCurrency.GetListTransactions <TransactionInfoList>();
                    var txinfo      = transaction.result.Where(t => t.address == invoice.AccountNumber).LastOrDefault();

                    if (txinfo != null && txinfo.confirmations >= ConfirmAmount) // нашли транзакцию. Проверям кол-во подтверждений
                    {
                        return(AddPayment(invoice.Id, txinfo.txid, balance, UnixTimeStampToDateTime(txinfo.timereceived)));
                    }

                    if (txinfo == null)
                    {
                        return(AddPayment(invoice.Id, "", balance, DateTime.Now));
                    }

                    return(null);
                }

                else
                {
                    return(null);
                }
            }

            else
            {
                return(null);
            }
        }