public void TicketController_Throws_BadRequestException_When_Payment_Is_Zero() { // Arrange TicketRepository ticketRepository = new TicketRepository(null); PaymentWorker paymentWorker = new PaymentWorker(ticketRepository); TicketController controller = new TicketController(paymentWorker); GSPRPaymentRequest paymentRequest = new GSPRPaymentRequest() { BillNo = 123, BillAmount = 0, PaymentTypeId = "100", TipAmount = 0, TransactionID = 123, LocationIdentifier = "ABC", PaymentTypeName = "3rd_party", GlancePayPOSPaymentID = 123 }; MockControllerRequest(controller); // Act controller.Validate(paymentRequest); HttpResponseMessage result = controller.Post(paymentRequest) as HttpResponseMessage; }
// POST: Admin/Order/UpdateStatus public ActionResult UpdateStatus(int id, short Statuses) { try { if (Statuses == 99) { var paymentWorker = new PaymentWorker(); var payments = paymentWorker.GetManagerPaymentEntitiesByOrder(id); if (payments.Status != 99) { return RedirectToAction("Detail", new { id = id }); } } var orderWorker = new OrderWorker(); orderWorker.UpdateOrderStatus(id, Statuses); return RedirectToAction("Detail", new { id = id }); } catch (Exception ex) { this.ShowError(ex); return null; } }
// GET: Admin/Order/Detail public ActionResult Detail(int id) { try { ViewBag.Id = id; var orderWorker = new OrderWorker(); var paymentWorker = new PaymentWorker(); var customerWorker = new CustomerWorker(); var model = orderWorker.GetManagerOrderEdit(id); var paymodel = paymentWorker.GetManagerPaymentEntitiesByOrder(id); ViewBag.User = customerWorker.GetCustomerUser(model.Customer.UserId); ViewBag.Statuses = SmartBazaar.Web.Models.Common.OrderHeadsListProvider.GetStatuses().Select(s => new SelectListItem { Text = s.Value, Value = s.Key.ToString(), Selected = s.Key == model.Status }).AsEnumerable(); if (paymodel != null) { ViewBag.Payment = paymodel; ViewBag.PayId = paymodel.Id; ViewBag.PayStatuses = SmartBazaar.Web.Models.Common.PaymentEntitiesListsProvider.GetStatuses().Select(s => new SelectListItem { Text = s.Value, Value = s.Key.ToString(), Selected = s.Key == paymodel.Status }); } else { ViewBag.PayStatuses = SmartBazaar.Web.Models.Common.PaymentEntitiesListsProvider.GetStatuses().Select(s => new SelectListItem { Text = s.Value, Value = s.Key.ToString()}); } return View(model); } catch (Exception ex) { this.ShowError(ex); return null; } }
public ActionResult Detail(int id) { var paymentWorker = new PaymentWorker(); var model = m_catalogWorker.GetSiteProductDetail(id); model.PaymentTypes = paymentWorker.GetSitePaymentTypes(); return(View(model)); }
public ActionResult Transaction(FormCollection frm) { var paymentWorker = new PaymentWorker(); var orderWorker = new OrderWorker(); var orderLayer = new OrderLayer(); orderLayer.Order.PaymentTypeId = int.Parse(frm["paymentType"]); var paymentDetail = paymentWorker.GetSitePaymentType(orderLayer.Order.PaymentTypeId); //payment commission calculation decimal currentPaymentFee = paymentDetail.ProcessFee + (orderLayer.Order.GrandTotal * (decimal)(paymentDetail.CommissionRate / 100)); decimal currentPaymentTax = orderLayer.Order.PaymentFee * 0.18M; currentPaymentFee -= currentPaymentTax; //installment commision calculation decimal currentInstallmentFee = 0M; decimal currentInstallmentTax = 0M; if (paymentDetail.Method == 2) { orderLayer.Order.InstallmentId = int.Parse(frm["installment"]); currentInstallmentFee = orderLayer.Order.GrandTotal * (decimal)(paymentDetail.Installments.FirstOrDefault(f => f.Id == orderLayer.Order.InstallmentId).Rate / 100); currentInstallmentTax = currentInstallmentFee * 0.18M; currentInstallmentFee -= currentInstallmentTax; } //join payment and installment to order orderLayer.Order.PaymentFee = currentPaymentFee; orderLayer.Order.InstallmentFee = currentInstallmentFee; //add tax and grand total orderLayer.Order.TaxTotal += currentPaymentTax + currentInstallmentTax; orderLayer.Order.GrandTotal += orderLayer.Order.PaymentFee + orderLayer.Order.InstallmentFee; orderLayer.Sync(); orderLayer.Order.Id = orderWorker.InsertSiteOrder(orderLayer.Order); orderLayer.Sync(); if (paymentDetail.Method == 1) { var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = "Peşin ödeme"; paymentEntityModel.InstallmentId = null; paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = paymentDetail.Method })); } else { return(RedirectToAction("Payment")); } }
public ActionResult UpdateStatus(int id, int payid, short PayStatuses) { try { var paymentWorker = new PaymentWorker(); var payments = paymentWorker.GetManagerPaymentsByOrderId(id); string log = null; if (payments.Any(a => a.Payment_Types.Method == 2)) { var posWorker = new PosWorker(); var payment = payments.FirstOrDefault(f => f.Payment_Types.Method == 2); dynamic settings = null; switch (payment.Payment_Types.PosType.ToLower()) { case "paypal": settings = posWorker.GetSitePosSetting("paypal"); var paypal = new Components.Payment.Paypal.Controller(settings.Parameters); var result = paypal.Refund(payment.Log); if (result.Status) { log = result.Data; } break; case "isbank": settings = posWorker.GetSitePosSetting("isbank"); log = CancelPayflex(settings, payment); break; case "vakifbank": settings = posWorker.GetSitePosSetting("vakifbank"); log = CancelPayflex(settings, payment); break; case "ziraatbank": settings = posWorker.GetSitePosSetting("ziraatbank"); log = CancelPayflex(settings, payment); break; default: break; } } paymentWorker.UpdatePaymentStatus(payid, PayStatuses, log); return(RedirectToAction("Detail", "OrderManager", new { id = id })); } catch (Exception ex) { this.ShowError(ex); return(null); } }
public ActionResult Checkout(FormCollection frm) { var shipmentWorker = new ShipmentWorker(); var paymentWorker = new PaymentWorker(); var customerWorker = new CustomerWorker(); var orderLayer = new OrderLayer(); if (frm["AddressId"] != null) { orderLayer.Order.ShipAddressId = int.Parse(frm["AddressId"]); if (frm["InvoiceSendPartial"] == "yes") { orderLayer.Order.InvoiceAddressId = int.Parse(frm["InvoiceAddressId"]); } else { orderLayer.Order.InvoiceAddressId = int.Parse(frm["AddressId"]); } } orderLayer.Order.ShipmentTypeId = int.Parse(frm["ShipmentType"]); orderLayer.Order.Note = frm["Note"]; if (orderLayer.Order.ShipCost == 0) { decimal shipCost = ShippingHelper.ShippingPrice(shipmentWorker.GetSiteShipmentType(orderLayer.Order.ShipmentTypeId)); orderLayer.Order.TaxTotal += shipCost * 18 / 118; orderLayer.Order.ShipCost = shipCost * 100 / 118; orderLayer.Order.GrandTotal += shipCost; } orderLayer.Sync(); orderLayer.Order.Payments = paymentWorker.GetSitePaymentTypes(); ViewBag.ShipmentType = shipmentWorker.GetSiteShipmentType(orderLayer.Order.ShipmentTypeId); if (orderLayer.Order.ShipAddressId.HasValue) { ViewBag.ShipmentAddress = customerWorker.GetSiteCustomerAddress(orderLayer.Order.ShipAddressId.Value); } if (frm["InvoiceSendPartial"] == "yes") { ViewBag.InvoiceAddress = customerWorker.GetSiteCustomerAddress(orderLayer.Order.InvoiceAddressId.Value); } return(View(orderLayer.Order)); }
public ActionResult PaymentCallback(string id) { var orderLayer = new OrderLayer(); var payment = orderLayer.Order.Payments.FirstOrDefault(f => f.Id == orderLayer.Order.PaymentTypeId); var posWorker = new PosWorker(); var posSetting = posWorker.GetSitePosSetting(payment.PosType); switch (id.ToLower()) { case "paypal": if (Request.Params["result"] == "fail") { return(View("PaymentError")); } var paypal = new Components.Payment.Paypal.Controller(posSetting.Parameters); var paypalresult = paypal.PaymentExcution(Request.Params["payerId"], Request.Params["paymentId"]); if (paypalresult.Status) { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = paypalresult.Data; paymentWorker.InsertSitePaymentEntity(paymentEntityModel); } return(RedirectToAction("Commit", new { id = orderLayer.Order.Id.ToString("000000") })); case "payflex": if (Request.Params["result"] == "fail") { return(RedirectToAction("Payment", "Bir hata oluştu lütfen tekrar deneyin!")); } Components.Payment.PayFlex.Controller payFlex = Session["PayFlexInstance"] as Components.Payment.PayFlex.Controller; Dictionary <string, string> formdata = new Dictionary <string, string>(); foreach (string prm in Request.Params.AllKeys) { formdata.Add(prm, Request.Params[prm]); } payFlex.MPITransaction = new Components.Payment.PayFlex.Models.MPITransactionResponse(formdata); payFlex.MPIChekout(posSetting.Parameters["mpicheckouturl"]); if (int.Parse(payFlex.PaymentModel.Installment) > 0) { var result = payFlex.CheckoutResult as Components.Payment.PayFlex.Models.VInstallmentResponse; if (result.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VInstallmentResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", "Bir hata oluştu lütfen tekrar deneyin!")); } } else { var result = payFlex.CheckoutResult as Components.Payment.PayFlex.Models.VPrepaidResponse; if (result.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VPrepaidResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", "Bir hata oluştu lütfen tekrar deneyin!")); } } default: return(null); } }
public ActionResult Payment(Models.Internal.PaymentModel model) { if (ModelState.IsValid) { var posWorker = new PosWorker(); var posSetting = posWorker.GetSitePosSetting(model.Pos); var orderLayer = new OrderLayer(); var payment = orderLayer.Order.Payments.FirstOrDefault(f => f.Id == orderLayer.Order.PaymentTypeId); switch (model.Pos) { case "payflex": var akposRequest = new Components.Payment.PayFlex.Models.MPIStatusRequest { BankId = posSetting.Referance, BrandName = model.CardType == "visa" ? "100" : model.CardType == "mastercard" ? "200" : "", ExpiryDate = model.ExpiryMonth + model.ExpiryYear, FailureUrl = Request.Url.Host + "/Order/PaymentCallback/payflex?result=fail", MerchantId = posSetting.Parameters["merchantid"], MerchantPassword = posSetting.Parameters["password"], InstallmentCount = int.Parse(model.Installment) > 0 ? model.Installment : null, Pan = model.CCNumber, PurchaseAmount = string.Format("{0:F0}", orderLayer.Order.GrandTotal * 100), SuccessUrl = Request.Url.Host + "/Order/PaymentCallback/payflex?result=ok", VerifyEnrollmentRequestId = orderLayer.Order.Id.ToString() }; var payFlex = new Components.Payment.PayFlex.Controller(akposRequest); if (payFlex.Is3D(posSetting.Parameters["mpiurl"])) { payFlex.PaymentModel = model; Session["PayFlexInstance"] = payFlex; return(View("PayFlexMpiPost", payFlex.MPIStatus)); } else { if (string.IsNullOrEmpty(akposRequest.InstallmentCount)) { //TODO: payflex TRY kodu girilecek var vprepaidRequest = new Components.Payment.PayFlex.Models.VPrepaidRequest { BankId = akposRequest.BankId, CurrencyAmount = akposRequest.Currency, CurrencyCode = "888", Cvv = model.Ccv, Expiry = akposRequest.ExpiryDate, MerchantId = akposRequest.MerchantId, Pan = akposRequest.Pan, Password = akposRequest.MerchantPassword, TransactionId = Guid.NewGuid().ToString(), TransactionType = "sale" }; payFlex.VPrepaidCheckout(posSetting.Parameters["checkouturl"], vprepaidRequest); if (payFlex.CheckoutResult.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VPrepaidResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", new { message = (new Components.Payment.PayFlex.ErrorCodes())[payFlex.CheckoutResult.ResultCode] })); } } else { //TODO: payflex TRY kodu girilecek var vinstallmentRequest = new Components.Payment.PayFlex.Models.VInstallmentRequest { BankId = akposRequest.BankId, CurrencyAmount = akposRequest.Currency, CurrencyCode = "888", Cvv = model.Ccv, Expiry = akposRequest.ExpiryDate, MerchantId = akposRequest.MerchantId, Pan = akposRequest.Pan, Password = akposRequest.MerchantPassword, TransactionId = Guid.NewGuid().ToString(), TransactionType = "sale", InstallmentCount = akposRequest.InstallmentCount }; payFlex.VInstallmentCheckout(posSetting.Parameters["checkouturl"], vinstallmentRequest); if (payFlex.CheckoutResult.ResultCode == "0000") { var paymentWorker = new PaymentWorker(); var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = Components.Converters.StringSerializer.Serialize <Components.Payment.PayFlex.Models.VInstallmentResponse>(payFlex.CheckoutResult); paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = orderLayer.Order.Id })); } else { return(RedirectToAction("Payment", new { message = (new Components.Payment.PayFlex.ErrorCodes())[payFlex.CheckoutResult.ResultCode] })); } } } default: return(RedirectToAction("Begin")); } } return(View(model)); }
public PaymentManagerController() { m_paymentWorker = new PaymentWorker(); m_posWorker = new PosWorker(); }
public PaymentController(DataFactory dataFactory) { _paymentWorker = (PaymentWorker)dataFactory.GetDataFactory <Payment>(); }