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 }); }
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 })); } }
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); }
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")); }