Beispiel #1
0
        public IActionResult Buy(string addrHolder, string code, double amnt)
        {
            var amount = amnt * Admin.CoinPrice;
            //amnt = amnt * .005;//fee .5% fee
            var cmd = "create_transaction";

            SortedList <string, string> sl = new SortedList <string, string>
            {
                //{ "currency", "BTC" },
                //{ "format", "json" },
                { "amount", amount.ToString() },
                { "currency1", Admin.CoinUit },
                { "currency2", code },
                { "buyer_email", "*****@*****.**" },
                { "ipn_url", "https://gravitycash.azurewebsites.net/Payment/IpnBack?addrHolder=" + addrHolder + "&amnt=" + amnt }
            };
            //sl.Add("version", 1);

            //sl.Add("currency", "BTC");
            //sl.Add("version", 1);
            //sl.Add("currency", "BTC");
            //sl.Add("version", 1);
            var    response = CoinPayments.CallAPI(cmd, sl);
            string url      = response["result"]["status_url"];

            TempData["url"] = url;


            return(View());
            //return RedirectToAction("Crypto", new { url });
        }
Beispiel #2
0
        public ActionResult PayNow(int Id)
        {
            try
            {
                var storeScope  = this.GetActiveStoreScopeConfiguration(_services.StoreService, _services.WorkContext);
                var transaction = _transactionService.GetTransactionById(Id);
                if (transaction.ProcessorId == (int)PaymentMethod.CoinPayment)
                {
                    var          coinpaymentSettings = _services.Settings.LoadSetting <CoinPaymentSettings>(storeScope);
                    var          withdrawalSettings  = _services.Settings.LoadSetting <WithdrawalSettings>(storeScope);
                    CoinPayments coinPayments        = new CoinPayments(coinpaymentSettings.CP_ApiSecretKey, coinpaymentSettings.CP_PublicKey);
                    var          param = new SortedList <string, string>();
                    param.Add("amount", transaction.Amount.ToString());
                    param.Add("add_tx_fee", "1");
                    param.Add("currency", "BTC");
                    param.Add("currency2", "USD");
                    param.Add("address", transaction.Customer.GetAttribute <string>(SystemCustomerAttributeNames.BitcoinAddressAcc));;
                    if (coinpaymentSettings.CP_EmailConfirmationRequired)
                    {
                        param.Add("auto_confirm", "1");
                    }
                    param.Add("note", "9xBitcoin Matrix Withdrawal");
                    var result = coinPayments.CallAPI("create_withdrawal", param);
                    if (result["error"] == "" || result["error"] == null)
                    {
                        transaction.StatusId = (int)Status.Completed;
                        _transactionService.UpdateTransaction(transaction);
                        NotifySuccess(T("Report.Withdrawal.Rejected"));
                        return(Json(new
                        {
                            Success = true
                        }));
                    }
                }
                else
                {
                    NotifySuccess(T("Report.Withdrawal.AutoPayNotImplemented"));
                    return(Json(new
                    {
                        Success = true
                    }));
                }

                NotifySuccess("Something went wrong");
                return(Json(new
                {
                    Success = false
                }));
            }
            catch (Exception ex)
            {
                return(Json(new
                {
                    Success = false
                }));
            }
        }
Beispiel #3
0
        public async Task <IActionResult> BuyCustom(double amnt, string code)
        {
            var total = await Nether.GetBalance(Admin.PublicKey);

            if (Convert.ToDecimal(amnt) > total)
            {
                TempData["msg"] = total + " GVCH Coin Exists For ICO Sale.";
                return(RedirectToAction("Custom"));
            }


            var wallet = _ctx.Wallets.First();

            int percentage = 0;

            if (amnt > 2000)
            {
                percentage = 22;                //22%
            }

            var amount = amnt;
            var coin   = (1 / Admin.CoinPriceUSD) * amount;
            var bonus  = (coin * percentage) / 100;
            //amnt = amnt * .005;//fee .5% fee
            var cmd = "create_transaction";

            SortedList <string, string> sl = new SortedList <string, string>
            {
                //{ "currency", "BTC" },
                //{ "format", "json" },
                { "amount", amount.ToString() },
                { "currency1", "USD" },
                { "currency2", code },
                { "buyer_email", "*****@*****.**" },
                { "ipn_url", "https://gravitycash.azurewebsites.net/Payment/IpnBack?addrHolder=" + wallet.PublicKey + "&amnt=" + (coin + bonus) }
            };

            var    response = CoinPayments.CallAPI(cmd, sl);
            string url      = response["result"]["status_url"];

            return(RedirectToAction("Crypto", new { url }));
        }
        public HttpResponseMessage Verifica_Estado_Transaccion(string pUsuario, string pID_Transaccion_Monedero)
        {
            HttpResponseMessage respuesta = null;

            try
            {
                CripMonEntities db = new CripMonEntities();

                PA_bsc_Empresa_Result Empresa = db.PA_bsc_Empresa(Convert.ToInt32(ConfigurationManager.AppSettings["Empresa"].ToString())).FirstOrDefault();

                var coinPayment = new CoinPayments(Empresa.Llave_Privada, Empresa.Llave_Publica);

                string jsonResult = null;

                SortedList <string, string> parms = new SortedList <string, string>();
                parms.Add("txid", pID_Transaccion_Monedero);

                var result = coinPayment.Get_Tx_Info(parms, out jsonResult);

                if (result["error"].ToString() == "ok")
                {
                    var ret = new Dictionary <string, object>();

                    Dictionary <string, object> res = result["result"] as Dictionary <string, object>;

                    string vEstado_Transaccion = res["status_text"].ToString();

                    if (vEstado_Transaccion == "Complete")
                    {
                        db.PA_Actualiza_Estado(pUsuario, pID_Transaccion_Monedero);
                    }

                    respuesta = Request.CreateResponse(HttpStatusCode.OK, vEstado_Transaccion);
                }
            }
            catch (Exception ex)
            {
                respuesta = Request.CreateErrorResponse(HttpStatusCode.Conflict, (ex.InnerException == null) ? ex.Message : ex.InnerException.Message);
            }

            return(respuesta);
        }
Beispiel #5
0
        public HttpResponseMessage Compra(CCompra pModelo)
        {
            HttpResponseMessage respuesta = null;

            try
            {
                CripMonEntities       db      = new CripMonEntities();
                PA_bsc_Empresa_Result Empresa = db.PA_bsc_Empresa(Convert.ToInt32(ConfigurationManager.AppSettings["Empresa"].ToString())).FirstOrDefault();

                CoinPayments payment = new CoinPayments(Empresa.Llave_Privada, Empresa.Llave_Publica);
                SortedList <string, string> parms = new SortedList <string, string>();
                parms.Add("amount", pModelo.producto.Monto.ToString());
                parms.Add("currency1", "ETH");
                parms.Add("currency2", "ETH");

                string jsonResult = null;
                Dictionary <string, object> result = payment.CreateTransaction(parms, out jsonResult);

                if (result["error"].ToString() == "ok")
                {
                    CCoinPaymentMessage cpRespuesta = (jsonResult == null) ? null : JObject.Parse(jsonResult).ToObject <CCoinPaymentMessage>();

                    db.PA_Transaccion(cpRespuesta.result.txn_id,
                                      Convert.ToInt32(ConfigurationManager.AppSettings["Monedero"].ToString()),
                                      null,
                                      pModelo.persona.Usuario,
                                      jsonResult,
                                      pModelo.producto.Producto,
                                      cpRespuesta.result.amount,
                                      Convert.ToInt32(cpRespuesta.result.timeout),
                                      cpRespuesta.result.status_url,
                                      cpRespuesta.result.qrcode_url,
                                      cpRespuesta.result.address);

                    respuesta = Request.CreateResponse(HttpStatusCode.OK, true);
                }
                else
                {
                    string errResult = null;

                    switch (result["error"].ToString())
                    {
                    case "HMAC signature does not match":
                        errResult = "Cartera no reconocida";
                        break;

                    default:
                        errResult = "Error desconocido.";
                        break;
                    }

                    respuesta = Request.CreateResponse(HttpStatusCode.NotImplemented, errResult);
                }
            }
            catch (Exception ex)
            {
                respuesta = Request.CreateErrorResponse(HttpStatusCode.Conflict, (ex.InnerException == null) ? ex.Message : ex.InnerException.Message);
            }

            return(respuesta);
        }
        public ActionResult Withdrawal(TransactionModel model)
        {
            try
            {
                ViewBag.CurrencyCode = _workContext.WorkingCurrency.CurrencyCode;
                var storeScope         = this.GetActiveStoreScopeConfiguration(_services.StoreService, _services.WorkContext);
                var StatusIds          = new int[] { (int)Status.Pending, (int)Status.Inprogress, (int)Status.Completed };
                var TranscationTypeIds = new int[] { (int)TransactionType.Withdrawal };

                var transcations = _transactionService.GetTodaysWithdrawal(_workContext.CurrentCustomer.Id);
                model.AvailableBalance = _customerService.GetAvailableBalance(_workContext.CurrentCustomer.Id);
                var withdrawalSettings = _services.Settings.LoadSetting <WithdrawalSettings>(storeScope);
                if (model.AvailableBalance < model.Amount)
                {
                    NotifyError(T("Investment.Withdrawal.InsufficentBalance"));
                    return(RedirectToAction("Withdrawal"));
                }
                if (transcations.Count >= withdrawalSettings.MaxRequestPerDay)
                {
                    NotifyError(T("Investment.Withdrawal.MaxWithdrawalPerDayError", withdrawalSettings.MaxRequestPerDay));
                    return(RedirectToAction("Withdrawal"));
                }
                if (!withdrawalSettings.AllowAutoWithdrawal)
                {
                    NotifyError(T("Investment.Withdrawal.DisabledError"));
                    return(RedirectToAction("Withdrawal"));
                }
                if (!(model.Amount >= withdrawalSettings.MinWithdrawal && model.Amount <= withdrawalSettings.MaxWithdrawal))
                {
                    NotifyError("Minimum withdrawal limit " + _workContext.WorkingCurrency.CurrencyCode + " " + withdrawalSettings.MinWithdrawal + ", Maximum withdrawal limit " + _workContext.WorkingCurrency.CurrencyCode + " " + withdrawalSettings.MaxWithdrawal);
                    return(RedirectToAction("Withdrawal"));
                }

                if (ModelState.IsValid)
                {
                    if (withdrawalSettings.AllowAutoWithdrawal)
                    {
                        try
                        {
                            model.CustomerId      = _workContext.CurrentCustomer.Id;
                            model.FinalAmount     = model.Amount;
                            model.TransactionDate = DateTime.Now;

                            model.RefId             = 0;
                            model.TranscationTypeId = (int)TransactionType.Withdrawal;

                            var customer = _customerService.GetCustomerById(model.CustomerId);
                            model.BitcoinAddress   = customer.GetAttribute <string>(SystemCustomerAttributeNames.BitcoinAddressAcc);
                            model.PayzaAcc         = customer.GetAttribute <string>(SystemCustomerAttributeNames.PayzaAcc);
                            model.SolidTrustPayAcc = customer.GetAttribute <string>(SystemCustomerAttributeNames.SolidTrustPayAcc);
                            model.PayeerAcc        = customer.GetAttribute <string>(SystemCustomerAttributeNames.PayeerAcc);
                            model.PMAcc            = customer.GetAttribute <string>(SystemCustomerAttributeNames.PMAcc);
                            model.AdvanceCashAcc   = customer.GetAttribute <string>(SystemCustomerAttributeNames.AdvanceCashAcc);
                            if (model.ProcessorId == (int)PaymentMethod.CoinPayment)
                            {
                                model.WithdrawalAccount = model.BitcoinAddress;
                            }
                            if (model.ProcessorId == (int)PaymentMethod.Payza)
                            {
                                model.WithdrawalAccount = model.PayzaAcc;
                            }
                            if (model.ProcessorId == (int)PaymentMethod.SolidTrustPay)
                            {
                                model.WithdrawalAccount = model.SolidTrustPayAcc;
                            }
                            if (model.ProcessorId == (int)PaymentMethod.Payeer)
                            {
                                model.WithdrawalAccount = model.PayeerAcc;
                            }
                            if (model.ProcessorId == (int)PaymentMethod.PM)
                            {
                                model.WithdrawalAccount = model.PMAcc;
                            }

                            if (model.WithdrawalAccount.IsEmpty())
                            {
                                NotifyError("Please update your Withdrawal account in Profile page");
                                return(RedirectToAction("Withdrawal"));
                            }
                            var transcation = model.ToEntity();
                            transcation.ProcessorId       = model.ProcessorId;
                            transcation.TranscationTypeId = model.TranscationTypeId;
                            transcation.StatusId          = (int)Status.Pending;
                            transcation.WithdrawalAddress = model.WithdrawalAccount;
                            _transactionService.InsertTransaction(transcation);

                            if (model.ProcessorId == (int)PaymentMethod.CoinPayment)
                            {
                                var coinpaymentSettings = _services.Settings.LoadSetting <CoinPaymentSettings>(storeScope);

                                CoinPayments coinPayments = new CoinPayments(coinpaymentSettings.CP_ApiSecretKey, coinpaymentSettings.CP_PublicKey);
                                var          param        = new SortedList <string, string>();
                                param.Add("amount", model.Amount.ToString());
                                param.Add("add_tx_fee", "1");
                                param.Add("currency", "BTC");
                                param.Add("currency2", "USD");
                                param.Add("address", model.BitcoinAddress);
                                if (coinpaymentSettings.CP_EmailConfirmationRequired)
                                {
                                    param.Add("auto_confirm", "1");
                                }
                                param.Add("note", withdrawalSettings.PaymentNote);
                                var result = coinPayments.CallAPI("create_withdrawal", param);
                                if (result["error"] == "ok")
                                {
                                    var res = result["result"];
                                    if (res["status"] == 0 || res["status"] == 1)
                                    {
                                        if (res["status"] == 1)
                                        {
                                            transcation.StatusId = (int)Status.Completed;
                                        }
                                        else
                                        {
                                            transcation.StatusId = (int)Status.Pending;
                                        }
                                        transcation.TranscationNote = res["id"];
                                        _transactionService.UpdateTransaction(transcation);
                                    }
                                }
                            }

                            // Notifications
                            if (withdrawalSettings.NotifyWithdrawalRequestToUser)
                            {
                                Services.MessageFactory.SendWithdrawalNotificationMessageToUser(transcation, "", "", _localizationSettings.DefaultAdminLanguageId);
                            }
                            if (withdrawalSettings.NotifyWithdrawalRequestToAdmin)
                            {
                                Services.MessageFactory.SendWithdrawalNotificationMessageToAdmin(transcation, "", "", _localizationSettings.DefaultAdminLanguageId);
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }

                    NotifySuccess(T("Investment.Withdrawal.Success"));
                }
            }
            catch (Exception exception)
            {
                NotifyError(T("Investment.Withdrawal.Error"));
                return(RedirectToAction("Withdrawal"));
            }
            return(RedirectToAction("Withdrawal"));
        }