示例#1
0
        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)));
        }
示例#2
0
        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());
            }
        }
示例#3
0
        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());
        }
示例#4
0
        public ActionResult Index()
        {
            PaymentRequestViewModel model = new PaymentRequestViewModel();

            return(View(model));
        }