public async Task <IActionResult> ProcessPayment([FromBody] PaymentRequestViewModel model) { if (!ModelState.IsValid) { return(BadRequest(SmartJsonResult <PaymentResponseViewModel> .Failure(GetModelStateErrors(ModelState)))); } // ReSharper disable once PossibleInvalidOperationException model.UserId = CurrentUser.UserId.Value; //var connection = HttpContext.Features.Get<IHttpConnectionFeature>(); //model.CustomerIP = connection?.RemoteIpAddress?.ToString();ca model.CustomerIP = HttpContext.Connection.RemoteIpAddress?.ToString() ?? "127.0.0.1"; model.UserEmail = CurrentUser.Email; model.UserName = CurrentUser.Name; model.UserLastName = CurrentUser.LastName; var request = _mapper.Map <PaymentRequest>(model); request.notifyUrl = Url.Action("Notify", "Payment", new { area = "Portal" }, "http"); request.continueUrl = Url.Action("ShopContinue", "Home", new { area = "Portal" }, "http"); var payuServiceResult = await _payuService.ProcessPaymentAsync(request, model.UserId, OrderPlace.Website); if (payuServiceResult.IsValid) { return(Ok(SmartJsonResult <PaymentResponseViewModel> .Success(_mapper.Map <PaymentResponseViewModel>(payuServiceResult.Result)))); } return(BadRequest(SmartJsonResult <PaymentResponseViewModel> .Failure(payuServiceResult.ValidationErrors))); }
public async Task <ActionResult> Deposit(PaymentRequestViewModel paymentRequestViewModel) { try { var userId = User.Claims.Where(x => x.Type.Contains("primarysid")).Select(x => x).First().Value; var transaction = new TransactionRequestViewModel() { From = PaymentUserType.ExternalAccount.ToString(), To = PaymentUserType.Me.ToString(), UserId = userId, Validated = true, Value = paymentRequestViewModel.Value }; var ok = await _transactionService.AddTransaction(transaction); if (!ok) { return(View()); } var model = new UpdateBalanceRequestViewModel() { Value = paymentRequestViewModel.Value, Id = userId }; await _userService.ModifyBalance(model); return(RedirectToAction("Index", "Home")); } catch (Exception e) { ModelState.AddModelError("error", e.Message); return(View()); } }
public async Task <ActionResult> MakePaymentRequest(PaymentRequestViewModel model) { try { var callbackUrl = "http://localhost:63531/Home/GetPaytmResponse"; /* initialize a TreeMap object */ Dictionary <string, string> paytmParams = new Dictionary <string, string> { // Merchant Id { PaytmParamKeys.MId, ConfigurationKeys.MerchantId }, // Website { PaytmParamKeys.WEBSITE, ConfigurationKeys.Website }, // Industry Type Id { PaytmParamKeys.INDUSTRY_TYPE_ID, ConfigurationKeys.IndustryType }, // Chanel Id { PaytmParamKeys.CHANNEL_ID, ConfigurationKeys.ChannelId }, // Order id generated from website { PaytmParamKeys.ORDER_ID, Guid.NewGuid().ToString() }, // Customer Id generated from Website { PaytmParamKeys.CUST_ID, Guid.NewGuid().ToString() }, // From model { PaytmParamKeys.MOBILE_NO, model.PhoneNumber.Trim() }, // From model { PaytmParamKeys.EMAIL, model.Email.Trim() }, // From model { PaytmParamKeys.TXN_AMOUNT, model.Amount.ToString() }, // Response will be sent to this url { PaytmParamKeys.CALLBACK_URL, callbackUrl } }; string checksum = CheckSum.generateCheckSum(ConfigurationKeys.MerchantKey, paytmParams);//merchant Key /* Prepare HTML Form and Submit to Paytm */ string outputHtml = ""; outputHtml += "<html>"; outputHtml += "<head>"; outputHtml += "<title>Merchant Checkout Page</title>"; outputHtml += "</head>"; outputHtml += "<body>"; outputHtml += "<center><h1>Please do not refresh this page...</h1></center>"; outputHtml += "<form method='post' action='" + PaytmUrl.StagingUrl + "' name='paytm_form'>"; foreach (string key in paytmParams.Keys) { outputHtml += "<input type='hidden' name='" + key + "' value='" + paytmParams[key] + "'>"; } outputHtml += "<input type='hidden' name='CHECKSUMHASH' value='" + checksum + "'>"; outputHtml += "</form>"; outputHtml += "<script type='text/javascript'>"; outputHtml += "document.paytm_form.submit();"; outputHtml += "</script>"; outputHtml += "</body>"; outputHtml += "</html>"; ViewBag.HtmlData = outputHtml; } catch (Exception ex) { } return(View()); }
public ActionResult Index() { PaymentRequestViewModel model = new PaymentRequestViewModel(); return(View(model)); }