public ActionResult Notification() { var response = new BoolResponse { IsValid = false, Message = "" }; PaymentModel payment = null; var settingResponse = _checkoutApi.PaymentSetting(PaymentMethodTypes.Worldpay.ToString()); var setting = settingResponse.Result; if (Request.QueryString["paymentStatus"] == "AUTHORISED") { //var orderNo = Request.QueryString["orderNo"]; var refOrderId = Request.Params["transId"]; string orderId = Request.Params["orderId"]; var paymentAmount = (Convert.ToDecimal(Request.Params["paymentAmount"]) / 100); var orderResponse = _orderApi.GetOrdDetail(Sanitizer.GetSafeHtmlFragment(refOrderId)); var order = orderResponse.Result; string paymentId = orderId.Split('-')[1]; payment = order.Payments.FirstOrDefault(x => x.Id == paymentId); payment.IsValid = true; payment.Status = PaymentStatus.Paid.GetHashCode(); payment.PaidAmount = paymentAmount; _checkoutApi.UpdatePayment(order.Id, payment); response = new BoolResponse { IsValid = true, RecordId = order.Id }; SetDataLayerVariables(order, WebhookEventTypes.CheckoutPayment); return(View(CustomViews.PAYMENT_RESPONSE, response)); } return(View(CustomViews.PAYMENT_RESPONSE, response)); }
public ActionResult Notification() { var response = new BoolResponse { IsValid = false, Message = "" }; response.RecordId = Request.Params["bid"]; PaymentModel payment = null; var settingRespose = _checkoutApi.PaymentSetting(PaymentMethodTypes.Paypal.ToString()); var setting = settingRespose.Result; if (Request["oid"] != null) { var refOrderId = Request["oid"]; string orderId = Request.Params["oid"]; var orderResponse = _orderApi.GetOrdDetail(Sanitizer.GetSafeHtmlFragment(refOrderId)); var order = orderResponse.Result; string paymentId = Request.Params["payId"]; string token = Request.Params["token"]; string payerId = Request.Params["payerId"]; payment = order.Payments.FirstOrDefault(x => x.Id == paymentId); var paymentRequest = new PostProcessPaymentRequest { CurrencyCode = order.CurrencyCode, Order = order, OrderTotal = payment.OrderAmount, Payment = payment, Token = token, PayerId = payerId }; var paymentResponse = setting.PostProcessPayment(paymentRequest); if (paymentResponse.Success == true) { payment = paymentResponse.Payment; payment.IsValid = true; payment.Status = PaymentStatus.Authorized.GetHashCode(); if (setting.EnableImmediateCapture) { payment.PaidAmount = payment.OrderAmount; payment.Status = PaymentStatus.Paid.GetHashCode(); } _checkoutApi.UpdatePayment(order.Id, payment); SiteUtils.ResetBasketCookieAndSession(); response = new BoolResponse { IsValid = true, RecordId = order.Id }; return(View(CustomViews.PAYMENT_RESPONSE, response)); } // payment.IsValid = false; //payment.Status = PaymentStatus.Authorized.GetHashCode(); // _checkoutApi.UpdatePayment(order.Id, payment); //SiteUtils.ResetBasketCookieAndSession(); // response = new BoolResponse { IsValid = false, RecordId = order.Id }; // return View(CustomViews.PAYMENT_RESPONSE, response); } return(View(CustomViews.PAYMENT_RESPONSE, response)); }
public ActionResult Notification() { var response = new BoolResponse { IsValid = false, Message = "" }; response.RecordId = Request.Params["bid"]; // this can hppen in situation when bid is suffixed to eth query string twice breaking the whole code /// so a simple handling fro the same has been put in /// if (response.RecordId.Contains(",")) { var tmpId = response.RecordId.Split(','); response.RecordId = tmpId[0]; } PaymentModel payment = null; var settingResponse = _checkoutApi.PaymentSetting(PaymentMethodTypes.MasterCard.ToString()); var setting = settingResponse.Result; var mcard = new MasterCardApi(setting); if (Request["orderId"] != null) { var refOrderId = Request["transId"]; string orderId = Request.Params["orderId"]; var orderResponse = _orderApi.GetOrdDetail(Sanitizer.GetSafeHtmlFragment(refOrderId)); var order = orderResponse.Result; string paymentId = orderId.Split('-')[1]; payment = order.Payments.FirstOrDefault(x => x.Id == paymentId); var paymentRequest = new PostProcessPaymentRequest { CurrencyCode = order.CurrencyCode, Order = order, OrderTotal = payment.OrderAmount, Payment = payment, }; var paymentResponse = setting.PostProcessPayment(paymentRequest); _checkoutApi.UpdatePayment(refOrderId, paymentResponse.Payment); response.RecordId = order.Id; response.IsValid = paymentResponse.Success; if (!response.IsValid) { response.RecordId = Request.Params["bid"]; if (paymentResponse.Errors.Any()) { response.Message = paymentResponse.Errors[0]; } } else { SiteUtils.ResetBasketCookieAndSession(); } } return(View(CustomViews.PAYMENT_RESPONSE, response)); }
public ActionResult Notification() { var response = new BoolResponse { IsValid = false, Message = "" }; response.RecordId = Request.Params["bid"]; PaymentModel payment = null; var settingRespose = _checkoutApi.PaymentSetting(PaymentMethodTypes.Paypal.ToString()); var setting = settingRespose.Result; if (Request["oid"] != null) { var refOrderId = Request["oid"]; string orderId = Request.Params["oid"]; var orderResponse = _orderApi.GetOrdDetail(Sanitizer.GetSafeHtmlFragment(refOrderId)); var order = orderResponse.Result; string paymentId = Request.Params["payId"]; string token = Request.Params["token"]; string payerId = Request.Params["payerId"]; payment = order.Payments.FirstOrDefault(x => x.Id == paymentId); var paymentRequest = new PostProcessPaymentRequest { CurrencyCode = order.CurrencyCode, Order = order, OrderTotal = payment.OrderAmount, Payment = payment, Token = token, PayerId = payerId }; var paymentResponse = setting.PostProcessPayment(paymentRequest); if (paymentResponse.Success == true) { paymentResponse.Payment.IsValid = true; } _checkoutApi.UpdatePayment(refOrderId, paymentResponse.Payment); response.RecordId = order.Id; response.IsValid = paymentResponse.Success; if (!response.IsValid) { response.RecordId = Request.Params["bid"]; if (paymentResponse.Errors.Any()) { response.Message = paymentResponse.Errors[0]; } } else { SiteUtils.ResetBasketCookie(); } } return(View(CustomViews.PAYMENT_RESPONSE, response)); }
/// <summary> /// Klarna create order /// </summary> /// <param name="id">authorizationToken</param> /// <param name="processPaymentRequest"></param> /// <param name="orderId"></param> /// <param name="paymentId"></param> public ActionResult CreateOrder(string id, CheckoutModel processPaymentRequest, string orderId, string paymentId) { var settingResponse = _checkoutApi.PaymentSetting(PaymentMethodTypes.Klarna.ToString()); var setting = settingResponse.Result; var klarna = new KlarnaApi(setting); //var token = klarna.GenerateConsumerToken(processPaymentRequest, id); var orderResp = klarna.CreateOrder(processPaymentRequest, id, orderId, paymentId); var response = new BoolResponse { IsValid = false, Message = "" }; PaymentModel payment = null; if (orderResp.FraudStatus == "ACCEPTED") { var refOrderId = orderResp.RefOrderId; var orderResponse = _orderApi.GetOrdDetail(Sanitizer.GetSafeHtmlFragment(refOrderId)); var order = orderResponse.Result; payment = order.Payments.FirstOrDefault(x => x.Id == orderResp.PaymentId); payment.IsValid = true; payment.Status = PaymentStatus.Paid.GetHashCode(); payment.PaidAmount = (Convert.ToDecimal(orderResp.OrderAmount) / 100); payment.PspResponseCode = orderResp.OrderId; payment.PspResponseMessage = orderResp.FraudStatus; //payment.FraudScore = orderResp.FraudStatus; _checkoutApi.UpdatePayment(order.Id, payment); response = new BoolResponse { IsValid = true, RecordId = order.Id }; SetDataLayerVariables(order, WebhookEventTypes.CheckoutPayment); return(JsonSuccess(new { response = response, notificationUrl = setting.NotificationUrl }, JsonRequestBehavior.AllowGet)); } return(JsonSuccess(new { response = response, notificationUrl = setting.NotificationUrl }, JsonRequestBehavior.AllowGet)); }
public ActionResult ConvertToOrder(CheckoutModel checkout) { if (!string.IsNullOrEmpty(checkout.CompanyId) && _sessionContext.CurrentUser == null && checkout.CompanyId != Guid.Empty.ToString()) { //execute when company user tries to place order via guest checkout. return(JsonSuccess("", JsonRequestBehavior.DenyGet)); } if (checkout.CustomerId == Guid.Empty.ToString() || checkout.CustomerId == null) { var user = new CustomerModel { Email = Sanitizer.GetSafeHtmlFragment(checkout.Email), Password = Sanitizer.GetSafeHtmlFragment(checkout.Password), SourceProcess = SourceProcessType.SITE_CHECKOUTGUEST.ToString() }; var responseTemp = _customerRepository.GetExistingUser(user.Email); if (responseTemp.Result.Count > 0) { checkout.CustomerId = responseTemp.Result[0].UserId.ToString(); } else { var result = _customerRepository.Register(user); if (result.Result.IsValid) { checkout.CustomerId = result.Result.RecordId; } } } checkout.Payment = new PaymentModel { PaymentGatewayId = checkout.SelectedPayment.Id, PaymentGateway = checkout.SelectedPayment.SystemName, OrderAmount = checkout.SelectedPayment.CardInfo.Amount, Status = PaymentStatus.Pending.GetHashCode() }; var response = _checkoutApi.ConvertToOrder(Sanitizer.GetSafeHtmlFragment(checkout.BasketId), checkout); if (response.Result == null) { return(JsonSuccess(response, JsonRequestBehavior.AllowGet)); } //_b2bRepository.RemoveQuoteBasket(); var order = response.Result; var paymentRequest = new ProcessPaymentRequest { BasketId = checkout.BasketId, CurrencyCode = order.CurrencyCode, CustomerId = checkout.CustomerId, LanuguageCode = _sessionContext.CurrentSiteConfig.RegionalSettings.DefaultLanguageCulture, OrderId = order.Id, OrderNo = order.OrderNo, PaymentId = order.Payment.Id, UserEmail = checkout.Email, OrderTotal = order.Payment.OrderAmount, Order = order }; if (!string.IsNullOrEmpty(checkout.SelectedPayment.CardInfo?.CardNo) && !string.IsNullOrEmpty(checkout.SelectedPayment.CardInfo.SecurityCode) && checkout.SelectedPayment.CardInfo.Amount > 0) { paymentRequest.CardNo = checkout.SelectedPayment.CardInfo.CardNo; paymentRequest.Cvv = checkout.SelectedPayment.CardInfo.SecurityCode; paymentRequest.OrderTotal = checkout.SelectedPayment.CardInfo.Amount; } if (checkout.SelectedPayment.SystemName != Convert.ToString(PaymentMethodTypes.AccountCredit)) { var payResponse = _checkoutApi.PaymentSetting(checkout.SelectedPayment.SystemName); checkout.SelectedPayment = payResponse.Result; } var paymentResponse = checkout.SelectedPayment.ProcessPayment(paymentRequest); if (paymentResponse.Success && paymentResponse.AuthorizedAmount > 0) { order.Payment.IsValid = true; order.Payment.Status = PaymentStatus.Authorized.GetHashCode(); order.Payment.OrderAmount = paymentResponse.AuthorizedAmount; order.Payment.AuthCode = paymentResponse.AuthorizationTransactionCode; order.Payment.CardNo = paymentRequest.CardNo; order.Payment.PspResponseCode = paymentRequest.PspSessionCookie; var paymentResult = _checkoutApi.UpdatePayment(order.Id, order.Payment); paymentResponse.BalanceAmount = paymentResult.Result?.BalanceAmount; if (paymentResponse.BalanceAmount.Raw.WithTax == 0) { SiteUtils.ResetBasketCookie(); } } else { order.Payment.IsValid = false; order.Payment.Status = PaymentStatus.Pending.GetHashCode(); order.Payment.AuthCode = paymentResponse.AuthorizationTransactionCode; order.Payment.PspSessionCookie = paymentResponse.PspSessionCookie; var paymentResult = _checkoutApi.UpdatePayment(order.Id, order.Payment); //paymentResponse.RefOrderId = order.Payment.Id; } return(JsonSuccess(paymentResponse, JsonRequestBehavior.AllowGet)); }