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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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"];
            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));
        }
Пример #5
0
        /// <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));
        }