예제 #1
0
        public PaymentDetailModel VerifyPayment(PaymentDetailModel model)
        {
            var paymentDetailModel = new PaymentDetailModel();

            using (var dataModel = new MibarimEntities())
            {
                var amount = dataModel.PayReqs.FirstOrDefault(x => x.PayReqAuthority == model.Authority);
                if (amount != null)
                {
                    long refId;
                    int  status = _zarinPalService.VerifyTransaction(model.Authority, (int)amount.PayReqValue, out refId);
                    amount.PayReqStatus = status.ToString();
                    if (status == 100)
                    {
                        amount.PayReqRefID = refId.ToString();
                        var payRoute =
                            dataModel.vwPayRoutes.FirstOrDefault(
                                x => x.PayReqId == amount.PayReqId && x.DrIsDeleted == false);
                        var route =
                            dataModel.vwStationRoutes.FirstOrDefault(x => x.StationRouteId == payRoute.StationRouteId);
                        _transactionManager.ChargeAccount(amount.PayReqUserId, (int)route.PassPrice);
                        if (route.DriverPrice > route.PassPrice)
                        {
                            _transactionManager.GiftChargeAccount(amount.PayReqUserId,
                                                                  (int)(route.DriverPrice - route.PassPrice));
                        }
                        _transactionManager.PayMoney(amount.PayReqUserId, (int)payRoute.UserId, (int)route.DriverPrice);
                        NotifModel notifModel = new NotifModel();
                        notifModel.Title = getResource.getMessage("SeatReserved");
                        notifModel.Body  = string.Format(getResource.getMessage("SeatReservedFor"), route.SrcMainStName,
                                                         route.DstMainStName, payRoute.TStartTime.ToString("HH:mm"));
                        notifModel.RequestCode    = (int)payRoute.PayReqId;
                        notifModel.NotificationId = (int)payRoute.PayReqId;
                        //send passenger notif
                        _notifManager.SendNotifToUser(notifModel, payRoute.PayReqUserId);
                        //send driver notif
                        _notifManager.SendNotifToUser(notifModel, (int)payRoute.UserId);
                        _notifManager.SendNotifToAdmins(notifModel);
                        //send passenger sms
                        var    user        = dataModel.vwUserInfoes.FirstOrDefault(x => x.UserId == payRoute.PayReqUserId);
                        var    mobileBrief = user.UserName.Substring(1);
                        string smsBody     = string.Format(getResource.getMessage("SeatReservedFor"), route.SrcMainStName,
                                                           route.DstMainStName, payRoute.TStartTime.ToString("HH:mm"));
                        var smsService = new SmsService();
                        smsService.SendSmsMessages(mobileBrief, smsBody);
                        //send driver sms
                        var    driver            = dataModel.vwUserInfoes.FirstOrDefault(x => x.UserId == payRoute.UserId);
                        var    drivermobileBrief = driver.UserName.Substring(1);
                        string smsBodydriver     = string.Format(getResource.getMessage("SeatReservedFor"),
                                                                 route.SrcMainStName, route.DstMainStName, payRoute.TStartTime.ToString("HH:mm"));
                        smsService.SendSmsMessages(drivermobileBrief, smsBodydriver);
                        smsService.SendSmsMessages("9358695785", smsBody);
                        smsService.SendSmsMessages("9354205407", smsBody);
                    }
                    dataModel.SaveChanges();
                    paymentDetailModel.RefId = refId;
                }
            }
            return(paymentDetailModel);
        }
예제 #2
0
        public PaymentDetailModel ChargeAccount(int userId, int chargeValue, string userNameFamilyString)
        {
            var    paymentDetailModel = new PaymentDetailModel();
            var    desc = string.Format(getResource.getMessage("PaymentDesc"), userNameFamilyString, chargeValue);
            string authority;
            int    status = _zarinPalService.RequestAuthoruty(chargeValue, desc, out authority);

            using (var dataModel = new MibarimEntities())
            {
                var pr = new PayReq();
                pr.PayReqCreateTime = DateTime.Now;
                pr.PayReqUserId     = userId;
                pr.PayReqValue      = chargeValue;
                pr.PayReqStatus     = status.ToString();
                if (status == 100)
                {
                    pr.PayReqAuthority = authority;
                }
                dataModel.PayReqs.Add(pr);
                dataModel.SaveChanges();
                paymentDetailModel.ReqId = pr.PayReqId;
            }
            paymentDetailModel.BankLink  = "https://www.zarinpal.com/pg/StartPay/" + authority;
            paymentDetailModel.Authority = authority;
            paymentDetailModel.State     = status;
            return(paymentDetailModel);
        }
예제 #3
0
        public PaymentDetailModel Payresult(long modelReqId)
        {
            var fanapService = new FanapService();
            var res          = new PaymentDetailModel();

            using (var dataModel = new MibarimEntities())
            {
                var payreq = dataModel.PayReqs.FirstOrDefault(x => x.PayReqId == modelReqId);
                var payres = fanapService.GetPaymentResult(payreq.PayReqRefID);
                if (payres != null)
                {
                    if (payres.payed)
                    {
                        payreq.PayReqStatus = ((int)PaymentStatus.Payed).ToString();
                        res.State           = (int)PaymentStatus.Payed;
                        fanapService.CloseInvoice(payreq.PayReqRefID);
                        var reserve = _routeManager.ReserveSeat(payreq.PayReqId);
                    }
                    else if (payres.canceled)
                    {
                        payreq.PayReqStatus = ((int)PaymentStatus.Canceled).ToString();
                        res.State           = (int)PaymentStatus.Canceled;
                    }
                    //fanapService.CloseInvoice(payreq.PayReqRefID);
                    dataModel.SaveChanges();
                }
            }
            return(res);
        }
예제 #4
0
        public bool AddPayment(TableDetailModel tableDetailModel, PaymentDetailModel paymentDetailModel)
        {
            // todo
            _connection.ChangeTracker.Clear();

            var entityPayment     = _connection.Payments.First(x => x.ID == paymentDetailModel.ID);
            var entityEntityTable = _connection.Tables.First(x => x.ID == tableDetailModel.ID);

            if (!entityEntityTable.Payments.Contains(entityPayment))
            {
                if (entityEntityTable.Payments.Count is 1)
                {
                    entityEntityTable.Payments.ToList()[0].IsPartial = true;
                    entityPayment.IsPartial = true;
                }

                entityEntityTable.Payments.Add(Mapper.MapDetailModelToEntity(paymentDetailModel));

                return(_connection.SaveChanges() is 2);
            }
            else
            {
                return(false);
            }
        }
예제 #5
0
        public object SavePaymentData(string filepath, PaymentDetailModel model)
        {
            string filename = "payment.txt";
            //string filepath= HttpRequest
            string data = string.Empty;

            data  = "Date : " + DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");
            data += ", UserId : " + model.UserId;
            data += ", BSB : " + model.BSB;
            data += ", AccountNo : " + model.AccountNo;
            data += ", AccountName : " + model.AccountName;
            data += ", Reference : " + model.Reference;
            data += ", Amount : " + model.Amount;
            try
            {
                if (!Directory.Exists(filepath))
                {
                    Directory.CreateDirectory(filepath);
                }
                FileSystem.WriteDataToFile(Path.Combine(filepath, filename), data);
                return(JsonResponse.SuccessResponse("Payment completed successfully."));
            }
            catch (Exception ex)
            {
                return(JsonResponse.ErrorResponse(ex));
            }
        }
예제 #6
0
        public PaymentDetailPresenter(IPaymentDetailView view, Order order, Customer customer)
        {
            _businessOrder     = new OrderBusiness(Singleton <PosEngine> .Instance.Resolve <IRepository <Order> >());
            _businessOrderItem = new OrderItemBusiness(Singleton <PosEngine> .Instance.Resolve <IRepository <OrderItem> >());
            _businessCustmer   = new CustomerBusiness(Singleton <PosEngine> .Instance.Resolve <IRepository <Customer> >());
            _view = view;

            _model = new PaymentDetailModel(order, customer);

            _view.InitView(_model);
        }
예제 #7
0
 public IHttpActionResult PayReturn(PaymentDetailModel model)
 {
     try
     {
         var res = _fanapManager.Payresult(model.ReqId);
         return(Json(_responseProvider.GenerateResponse(res, "PayReturn")));
     }
     catch (Exception e)
     {
         _logmanager.Log(Tag, "PayReturn", e.Message);
     }
     return(Json(_responseProvider.GenerateUnknownErrorResponse()));
 }
예제 #8
0
 public async Task <IActionResult> ReceivedPayment([FromBody] PaymentDetailModel model)
 {
     try
     {
         Response response = new Response();
         response.TransResponse = await new PaymentManager().ReceivedPayment(model);
         return(Ok(response));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
예제 #9
0
 public IHttpActionResult VerifyBankTransaction(PaymentDetailModel model)
 {
     try
     {
         var res = _paymentManager.VerifyPayment(model);
         return(Json(res));
     }
     catch (Exception e)
     {
         _logProvider.Log(Tag, "VerifyBankTransaction", e.Message);
     }
     return(Json(_responseProvider.GenerateUnknownErrorResponse()));
 }
예제 #10
0
        public bool EditPayment(PaymentDetailModel paymentDetailModel)
        {
            var entityPayment       = _connection.Payments.First(x => x.ID == paymentDetailModel.ID);
            var mappedEntityPayment = Mapper.MapEntityToDetailModel(entityPayment);

            if (mappedEntityPayment != paymentDetailModel)
            {
                entityPayment = Mapper.MapDetailModelToEntity(paymentDetailModel);
                return(_connection.SaveChanges() is 1);
            }
            else
            {
                return(false);
            }
        }
예제 #11
0
        public void InitView(PaymentDetailModel model)
        {
            _model = model;

            lblCusId.DataBindings.Add("Text", _model, "CusId", true, DataSourceUpdateMode.OnPropertyChanged);
            lblCusName.DataBindings.Add("Text", _model, "CusName", true, DataSourceUpdateMode.OnPropertyChanged);
            lblCusPhone.DataBindings.Add("Text", _model, "CusPhone", true, DataSourceUpdateMode.OnPropertyChanged);
            lblCusPoint.DataBindings.Add("Text", _model, "TotalPurchase", true, DataSourceUpdateMode.OnPropertyChanged);
            txtCusChange.DataBindings.Add("Text", _model, "CusChange", true, DataSourceUpdateMode.OnPropertyChanged);
            txtCusPay.DataBindings.Add("Text", _model, "CusCash", true, DataSourceUpdateMode.OnPropertyChanged);
            txtTotalPayment.DataBindings.Add("Text", _model, "TotalPayment", true, DataSourceUpdateMode.OnPropertyChanged);
            txtTotalQuantity.DataBindings.Add("Text", _model, "TotalQuantity", true, DataSourceUpdateMode.OnPropertyChanged);

            txtCusPay.Focus();
        }
예제 #12
0
        public ActionResult MakePayment(PaymentDetailModel model)
        {
            var path = Server.MapPath("~/App_Data/SavedData");

            if (ModelState.IsValid)
            {
                PaymentBusiness payClass = new PaymentBusiness();
                return(Json(payClass.SavePaymentData(path, model)));
            }
            else
            {
                string messages = string.Join("; ", ModelState.Values
                                              .SelectMany(x => x.Errors)
                                              .Select(x => x.ErrorMessage));
                return(Json(JsonResponse.ErrorResponse(messages)));
            }
        }
예제 #13
0
 public async Task <IActionResult> DeletePaymentMethodProfile([FromBody] PaymentDetailModel model)
 {
     try
     {
         if (string.IsNullOrEmpty(model.paymentMethod))
         {
             string msg = "paymentMethod should not be null or empty";
             return(BadRequest(msg));
         }
         var response = await new PaymentManager().DeletePaymentMethodProfile(model);
         return(Ok(response));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
예제 #14
0
 public async Task <IActionResult> UpdatePaymentMethodProfile([FromBody] PaymentDetailModel model)
 {
     try
     {
         Response response = new Response();
         if (model.paymentMethodProfile == null)
         {
             string msg = "paymentMethodProfile should not be null or empty";
             return(BadRequest(msg));
         }
         response.TransResponse = await new PaymentManager().UpdatePaymentMethodProfile(model);
         return(Ok(response));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
예제 #15
0
 public async Task <IActionResult> MarkPaymentAsApplied([FromBody] PaymentDetailModel model)
 {
     try
     {
         Response response = new Response();
         if (string.IsNullOrEmpty(model.paymentInternalId))
         {
             string msg = "paymentInternalId should not be null or empty";
             return(BadRequest(msg));
         }
         response.TransResponse = await new PaymentManager().MarkPaymentAsApplied(model);
         return(Ok(response));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
예제 #16
0
        public bool AddPayment(PaymentDetailModel paymentDetailModel)
        {
            _connection.ChangeTracker.Clear();

            var entity = Mapper.MapDetailModelToEntity(paymentDetailModel);

            entity.Table = _connection.Tables.First(x => x.ID == paymentDetailModel.Table.ID);
            entity.Sells.ToList().ForEach(x =>
            {
                x.Payment = entity;
                _connection.Entry(x).State = EntityState.Modified;
            });

            entity.Customer = _connection.Customers.FirstOrDefault(x => x.ID == paymentDetailModel.Customer.ID);

            _connection.Payments.Add(entity);
            return(_connection.SaveChanges() is 1);
        }
예제 #17
0
        public PaymentDetailModel FanapBookTrip(int userId, long tripId)
        {
            var res          = new PaymentDetailModel();
            var fanapService = new FanapService();
            var pr           = new PayReq();

            using (var dataModel = new MibarimEntities())
            {
                var trip = dataModel.vwDriverTrips.FirstOrDefault(x => x.TripId == tripId && !x.DrIsDeleted);
                if (trip != null)
                {
                    pr.PayReqCreateTime = DateTime.Now;
                    pr.PayReqUserId     = userId;
                    pr.PayReqValue      = (double)trip.PassPrice;
                    dataModel.PayReqs.Add(pr);
                    dataModel.SaveChanges();
                    var bookreq = new BookRequest();
                    bookreq.TripId       = tripId;
                    bookreq.BrCreateTime = DateTime.Now;
                    bookreq.BookingType  = (int)BookingTypes.Fanap;
                    bookreq.UserId       = userId;
                    bookreq.IsBooked     = false;
                    bookreq.PayReqId     = pr.PayReqId;
                    dataModel.BookRequests.Add(bookreq);
                    dataModel.SaveChanges();

                    var fanapUser = dataModel.Fanaps.Where(x => x.userId == userId).OrderByDescending(y => y.FanapId).FirstOrDefault();
                    var user      = dataModel.vwUserInfoes.FirstOrDefault(x => x.UserId == userId);
                    var ott       = fanapService.GetOneTimeToken();
                    var desc      = string.Format(getResource.getMessage("PaymentDesc"), user.Name + " " + user.Family, trip.PassPrice);
                    var factorId  = fanapService.IssueInvoice(trip.PassPrice, fanapUser.fuserId, ott, desc);

                    /*res.BankLink = "http://sandbox.fanapium.com:1031/v1/pbc/payinvoice/?invoiceId=" + factorId
                     + "&redirectUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId +
                     +         "&callUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId;*/
                    res.BankLink = "https://gw.fanapium.com/v1/pbc/payinvoice/?invoiceId=" + factorId
                                   + "&redirectUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId +
                                   "&callUri=" + "http://ifanap.mibarim.ir/fanap/PayReturn/?payreqId=" + pr.PayReqId;
                    pr.PayReqRefID = factorId;
                    dataModel.SaveChanges();
                }
                return(res);
            }
        }
예제 #18
0
        public HttpResponseMessage PasargadPay([FromUri] PaymentDetailModel model)
        {
            try
            {
                var           res = _paymentManager.Getpayment(model.ReqId);
                StringBuilder sb  = new StringBuilder();
                sb.Append("<html>");
                sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
                sb.AppendFormat("<form name='form' action='{0}' method='post'>", res.BankLink);
                sb.AppendFormat("<input type='hidden' name='MerchantCode' value='{0}'>", res.MerchantCode);
                sb.AppendFormat("<input type='hidden' name='TerminalCode' value='{0}'>", res.TerminalCode);
                sb.AppendFormat("<input type='hidden' name='InvoiceNumber' value='{0}'>", res.InvoiceNumber);
                sb.AppendFormat("<input type='hidden' name='InvoiceDate' value='{0}'>", res.InvoiceDate);
                sb.AppendFormat("<input type='hidden' name='Amount' value='{0}'>", res.Amount);
                sb.AppendFormat("<input type='hidden' name='RedirectAddress' value='{0}'>", res.RedirectAddress);
                sb.AppendFormat("<input type='hidden' name='TimeStamp' value='{0}'>", res.TimeStamp);
                sb.AppendFormat("<input type='hidden' name='Action' value='{0}'>", res.Action);
                sb.AppendFormat("<input type='hidden' name='Sign' value='{0}'>", res.Sign);
                sb.Append("</form>");
                sb.Append("</body>");
                sb.Append("</html>");

                return(new HttpResponseMessage()
                {
                    Content = new StringContent(
                        sb.ToString(),
                        Encoding.UTF8,
                        "text/html"
                        )
                });
            }
            catch (Exception e)
            {
                _logProvider.Log(Tag, "PasargadPay", e.Message);
            }
            return(new HttpResponseMessage(HttpStatusCode.BadRequest));
        }
예제 #19
0
 public bool RemovePayment(PaymentDetailModel paymentDetailModel)
 {
     _connection.Payments.Remove(Mapper.MapDetailModelToEntity(paymentDetailModel));
     return(_connection.SaveChanges() is 1);
 }
예제 #20
0
        public async Task <ProcessPaymentViewModel> ProcessPayment(ProcessPaymentViewModel paymentViewModel)
        {
            paymentViewModel.messageViewModel        = new MessageViewModel();
            paymentViewModel.messageViewModel.Status = true;

            if (paymentViewModel.Amount < 0) //The request is invalid: 400 bad request
            {
                paymentViewModel.messageViewModel.Status  = false;
                paymentViewModel.messageViewModel.Message = Extentions.GetDescription(EnumClass.PaymentResponse.InvalidRequest);
                return(paymentViewModel);
            }

            try
            {
                #region local variables

                string                     paymentGateway             = string.Empty;
                int                        retryPayment               = 0;
                string                     paymentGatewayResponse     = Extentions.GetDescription(EnumClass.PaymentResponse.Processed);
                PaymentDetailModel         paymentDetailModel         = new PaymentDetailModel();
                PaymentDetailModel         _paymentDetailModel        = new PaymentDetailModel();
                UsersCreditCardDetailModel usersCreditCardDetailModel = new UsersCreditCardDetailModel();
                bool                       isCardValid = true;


                #endregion local variables

                #region choose payment gateway

                if (paymentViewModel.Amount <= 20) //If the amount to be paid is less than £20, use ICheapPaymentGateway.
                {
                    paymentViewModel.PaymentGatewayName = Extentions.GetDescription(EnumClass.PaymentGateways.CheapPaymentGateway);
                    paymentViewModel.PaymentGatewayId   = (int)EnumClass.PaymentGateways.CheapPaymentGateway;
                }
                else if (paymentViewModel.Amount > 20 && paymentViewModel.Amount <= 500) //If the amount to be paid is £21 - 500, use IExpensivePaymentGateway
                {
                    paymentViewModel.PaymentGatewayName = Extentions.GetDescription(EnumClass.PaymentGateways.ExpensivePaymentGateway);
                    paymentViewModel.PaymentGatewayId   = (int)EnumClass.PaymentGateways.ExpensivePaymentGateway;

                    //use IExpensivePaymentGateway if available. Otherwise, retry only once with ICheapPaymentGateway.
                    if (!ValidatePaymentGateway(paymentViewModel.PaymentGatewayName))
                    {
                        paymentViewModel.PaymentGatewayName = Extentions.GetDescription(EnumClass.PaymentGateways.CheapPaymentGateway);

                        if (!ValidatePaymentGateway(paymentViewModel.PaymentGatewayName)) //Any error: 500 internal server error
                        {
                            paymentViewModel.messageViewModel.Status  = false;
                            paymentViewModel.messageViewModel.Message = Extentions.GetDescription(EnumClass.PaymentResponse.Failed);
                            return(paymentViewModel);
                        }
                    }
                }
                else //If the amount is > £500, try only PremiumPaymentService
                {
                    paymentViewModel.PaymentGatewayName = Extentions.GetDescription(EnumClass.PaymentGateways.PremiumPaymentGateway);
                    paymentViewModel.PaymentGatewayId   = (int)EnumClass.PaymentGateways.PremiumPaymentGateway;
                }

                #endregion choose payment gateway

                #region Validate & Save new CC detail

                //validate card
                isCardValid = ValidateCreditCard(paymentViewModel);

                //return here if CC detail is not valid
                if (!isCardValid) //400 bad request : Invaild Card Detail
                {
                    paymentViewModel.messageViewModel.Status  = isCardValid;
                    paymentViewModel.messageViewModel.Message = Extentions.GetDescription(EnumClass.PaymentResponse.InvaildCardDetail);
                    return(paymentViewModel);
                }

                //save card detail into database
                usersCreditCardDetailModel = await SaveUserCCDetail(paymentViewModel);

                if (usersCreditCardDetailModel == null)
                {
                    paymentViewModel.messageViewModel.Status  = false;
                    paymentViewModel.messageViewModel.Message = Extentions.GetDescription(EnumClass.PaymentResponse.Failed);
                    return(paymentViewModel);
                }

                #endregion Save/Update CC detail

                #region make payment

                //get payment gateway response
                paymentGatewayResponse = await MakePayment(paymentViewModel);

                #endregion make payment

                #region Save payment detail

                paymentDetailModel.Amount         = paymentViewModel.Amount;
                paymentDetailModel.CCUsed         = usersCreditCardDetailModel;
                paymentDetailModel.PaymentDate    = DateTime.UtcNow;
                paymentDetailModel.CartId         = paymentViewModel.CartId;
                paymentDetailModel.PaymentGateway = paymentViewModel.PaymentGatewayName;
                paymentDetailModel.PaymentStatus  = paymentGatewayResponse;

                await _unitOfWork.PaymentDetailModelRepository.InsertAsync(paymentDetailModel);

                _paymentDetailModel = _mapper.Map <PaymentDetailModel>(paymentDetailModel);

                #endregion Save payment detail

                #region check payment status and update entity as completed

                //If the amount is > £500, try only PremiumPaymentService and retry up to 3 times in case payment does not get processed
                while (paymentViewModel.Amount > 500 &&
                       paymentGatewayResponse != Extentions.GetDescription(EnumClass.PaymentResponse.Processed))
                {
                    if (ValidatePaymentGateway(paymentViewModel.PaymentGatewayName))
                    {
                        paymentGatewayResponse = await MakePayment(paymentViewModel);
                    }

                    if (retryPayment == 3 || paymentGatewayResponse == Extentions.GetDescription(EnumClass.PaymentResponse.Processed))
                    {
                        break;
                    }

                    retryPayment = retryPayment + 1;
                }

                //Store/update the payment and payment state entities created previously once the processing is completed
                if (paymentDetailModel.PaymentStatus == Extentions.GetDescription(EnumClass.PaymentResponse.Processed))
                {
                    //Use of eager loading
                    var paymentDetail = _unitOfWork.PaymentDetailModelRepository.FindAllByQuery(c => c.Id == paymentDetailModel.Id)
                                        .Include(c => c.CCUsed)
                                        .FirstOrDefault();

                    paymentDetail.PaymentStatus = Extentions.GetDescription(EnumClass.PaymentResponse.Completed);

                    await _unitOfWork.PaymentDetailModelRepository.UpdateAsync(paymentDetail);
                }

                #endregion check payment status

                paymentViewModel.messageViewModel.Id      = paymentDetailModel.Id;
                paymentViewModel.messageViewModel.Message = paymentGatewayResponse; //200 Ok
            }
            catch (Exception ex)                                                    //500 internal server error
            {
                paymentViewModel.messageViewModel.Status  = false;
                paymentViewModel.messageViewModel.Message = Extentions.GetDescription(EnumClass.PaymentResponse.Failed);
            }
            return(paymentViewModel);
        }