Ejemplo n.º 1
0
        /// <summary>
        /// Transfer coins from DC hot wallet to users address
        /// </summary>
        /// <param name="amount"></param>
        /// <param name="cardId">Users DC Card</param>
        /// <returns></returns>
        public String TransferCoinsToBuyer(String cardId, Decimal amount)
        {
            if (amount > 0)
            {
                if (!String.IsNullOrEmpty(cardId))
                {
                    using (DC.Data.DiamondCircle_dbEntities db = new Data.DiamondCircle_dbEntities())
                    {
                        DC.Data.Card card = db.Cards.First(c => c.CardId == cardId);

                        if (card != null)
                        {
                            Providers.IWallet wallet = Helpers.Factory.GetWallet();

                            String txn = wallet.Send(card.PublicKey, amount);
                            return(txn);
                        }
                        else
                        {
                            throw new Exception(String.Format("No card found with card id {0}", cardId));
                        }
                    }
                }
                else
                {
                    throw new ArgumentException("Invalid bitcoin address.");
                }
            }
            else
            {
                throw new ArgumentException("Amount must be greater than zero.");
            }
        }
Ejemplo n.º 2
0
        private void AddCreditCardDetails(string cardId, string firstName, string lastName, string address, string city, string zip, string state, string countryName, string telephone, string dob, string emailAddress, string cardHolderName, string cardNumber, string expiryMonth, string expiryYear, string cvc2)
        {
            //Add a billing address
            //var billingAddress = new DC.Data.Address() { AddressLine1 = address, Suburb = city, Postcode = zip, State = state, Mobile = telephone, CountryId = countryId, AddressTypeId = 1 };
            //CC details including the billing address
            var crediCardId = Guid.NewGuid();

            var creditCard = new CreditCard()
            {
                CreditCardId = crediCardId, Active = true, CardHolderName = cardHolderName, CardNumber = cardNumber, ExpiryMonth = expiryMonth, ExpiryYear = expiryYear, CVC2 = cvc2, AddressLine1 = address, Suburb = city, Postcode = zip, State = state, CountryName = countryName, Telephone = telephone, FirstName = firstName, LastName = lastName, DOB = dob, EmailAddress = emailAddress
            };

            using (DC.Data.DiamondCircle_dbEntities db = new Data.DiamondCircle_dbEntities())
            {
                var card = db.Cards.Where(c => c.CardId == cardId).FirstOrDefault();

                if (card == null)
                {
                    throw new InvalidOperationException("The card entered does not exist");
                }
                card.CreditCardId = crediCardId;
                db.CreditCards.Add(creditCard);
                db.SaveChanges();
            }
        }
Ejemplo n.º 3
0
        public String ReceiveCoins(String encryptedPrivateKey, String cardId, String destinationAddress, Decimal amount)
        {
            if (!String.IsNullOrEmpty(cardId))
            {
                using (DC.Data.DiamondCircle_dbEntities db = new Data.DiamondCircle_dbEntities())
                {
                    DC.Data.Card card = db.Cards.First(c => c.CardId == cardId);

                    if (card != null)
                    {
                        Byte[] encryptedPrivateKeyAsBytes = Convert.FromBase64String(encryptedPrivateKey);
                        Byte[] password = Convert.FromBase64String(card.Password);
                        String wif      = DC.Common.Security.DecryptStringFromBytes_Aes(encryptedPrivateKeyAsBytes, password);

                        return(SignAndTransfer(wif, destinationAddress, amount));
                    }
                    else
                    {
                        throw new Exception(String.Format("No card found with card id {0}", cardId));
                    }
                }
            }
            else
            {
                throw new ArgumentOutOfRangeException("Card id must not be null.");
            }
        }
Ejemplo n.º 4
0
        public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.TraceInformation("DC.TransactionWorker entry point called");

            DC.Providers.IAddress address = new DC.Providers.BlockExplorer();

            while (true)
            {
                using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
                {
                    var transactions = ef.UnconfirmedTransactions.Where(t => t.Confirmations <= 6);
                    {
                        foreach (DC.Data.UnconfirmedTransaction u in transactions)
                        {
                            if (u.BTCAmount == address.GetBalance(u.Address, 6))
                            {
                                u.Confirmations = 6;
                            }
                        }
                    }

                    //ef.UnconfirmedTransactions.Add(transaction);
                }

                Thread.Sleep(10000);
                Trace.TraceInformation("Working");
            }
        }
Ejemplo n.º 5
0
 public bool IsCardOnFile(string CardId)
 {
     using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
     {
         DC.Data.Card card = ef.Cards.SingleOrDefault(c => c.CardId == CardId);
         return(card != null);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Get an address to sell or send to
 /// </summary>
 /// <returns></returns>
 public String GetColdStorageAddress()
 {
     using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
     {
         DC.Data.ColdStorage address = ef.ColdStorages.Single();
         return(address.BitcoinAddress);
     }
 }
Ejemplo n.º 7
0
 private void AddCardWithCustomerId(string CardId, string PublicKey, string Password, string PIN, decimal customerId)
 {
     using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
     {
         ef.Cards.Add(new DC.Data.Card()
         {
             CardId = CardId, PublicKey = PublicKey, Password = Password, Pin = PIN, DateIssued = DateTime.Now, CustomerID = customerId
         });
         ef.SaveChanges();
     }
 }
Ejemplo n.º 8
0
 public void AddCardWithPIN(string CardId, string PublicKey, string Password, string PIN)
 {
     using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
     {
         ef.Cards.Add(new DC.Data.Card()
         {
             CardId = CardId, PublicKey = PublicKey, Password = Password, Pin = PIN, DateIssued = DateTime.Now
         });
         ef.SaveChanges();
     }
 }
Ejemplo n.º 9
0
 public void AddCardWithPINL(string CardId, string PublicKey, string Password, string PIN, string CurrencyCode, decimal Limit, bool Topup, Decimal TopupAmount)
 {
     // Untested - Fields not added to database.
     using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
     {
         ef.Cards.Add(new DC.Data.Card()
         {
             CardId = CardId, PublicKey = PublicKey, Password = Password, Pin = PIN, DateIssued = DateTime.Now, CurrencyCode = CurrencyCode, Limit = Limit, Topup = Topup, TopupAmount = TopupAmount
         });
         ef.SaveChanges();
     }
 }
Ejemplo n.º 10
0
        public Common.Models.TerminalSettings GetSettings(Int32 TerminalId)
        {
            using (DC.Data.DiamondCircle_dbEntities db = new Data.DiamondCircle_dbEntities())
            {
                DC.Data.Terminal terminal = db.Terminals.FirstOrDefault(t => t.Id == TerminalId);
                if (terminal != null)
                {
                    Common.Models.TerminalSettings settings = new Common.Models.TerminalSettings()
                    {
                        DefaultCryptoCurrency = terminal.DefaultCryptoCurrency,
                        DefaultFiatCurrency   = terminal.DefaultFiatCurrency
                    };

                    return(settings);
                }
                else
                {
                    throw new KeyNotFoundException("No terminal exists.");
                }
            }
        }
Ejemplo n.º 11
0
 public Decimal WriteTransaction(string CardId, string TransType, Int32 TerminalId, string NumuratorCurrency, string DenominatorCurrency, decimal Amount, decimal Price, string Reference, int TransactionID)
 {
     using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
     {
         Data.Transaction transaction = new Data.Transaction()
         {
             CardId             = CardId,
             TransType          = TransType,
             TerminalId         = TerminalId.ToString(),
             NumuratorCurrency  = NumuratorCurrency,
             DeominatorCurrency = DenominatorCurrency,
             Amount             = Amount,
             Price     = Price,
             Reference = Reference,
             DateTime  = DateTime.UtcNow
         };
         ef.Transactions.Add(transaction);
         ef.SaveChanges();
         return(transaction.Id);
     }
 }
Ejemplo n.º 12
0
        public bool MakeFiatPayment(string cardId, string currency, decimal amount, int terminalId)
        {
            DC.Data.CreditCard creditCard;
            //Get the card
            using (DC.Data.DiamondCircle_dbEntities ef = new Data.DiamondCircle_dbEntities())
            {
                var card = ef.Cards.Include("Card.CreditCard").FirstOrDefault(c => c.CardId == cardId);
                if (card == null)
                {
                    throw new InvalidOperationException("Bitcoin card ID is invalid");
                }
                if (card.CreditCard == null)
                {
                    throw new InvalidOperationException("There is no credit card related to this Bitcoin card");
                }

                creditCard = card.CreditCard;
                return(card != null);
            }

            var result = ChargeCreditCard(creditCard.CardNumber, (int)amount * 100, creditCard.FirstName, creditCard.LastName, creditCard.AddressLine1, creditCard.Suburb, creditCard.Postcode, creditCard.State, creditCard.CountryName, creditCard.Telephone, creditCard.DOB, creditCard.EmailAddress, creditCard.CardHolderName, creditCard.ExpiryMonth, creditCard.ExpiryYear, creditCard.CVC2, currency);

            return(string.IsNullOrEmpty(result.failure_code));
        }