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.ResetBasketCookie();
                }
            }

            return(View(CustomViews.PAYMENT_RESPONSE, response));
        }
        public ActionResult Check3DSecure(string sessionId, decimal amount, string currency, string secure3DauthUrl,
                                          string secure3DId)
        {
            var settingResponse = _checkoutApi.PaymentSetting(PaymentMethodTypes.MasterCard.ToString());
            var setting         = settingResponse.Result;
            var mcard           = new MasterCardApi(setting);
            var secure3D        = mcard.Check3DSecureEnrollment(sessionId, amount, currency, secure3DauthUrl, secure3DId);

            return(JsonSuccess(secure3D, JsonRequestBehavior.AllowGet));
        }
예제 #3
0
        public ProcessPaymentResult ProcessPayment(ProcessPaymentRequest processPaymentRequest)
        {
            var resp = new ProcessPaymentResult
            {
                TimeStamp = MasterCardApi.GetTimestamp(Settings.Signature,
                                                       processPaymentRequest.OrderNo + "-" + processPaymentRequest.PaymentId,
                                                       processPaymentRequest.OrderTotal, processPaymentRequest.CurrencyCode)
            };

            ;
            resp.OrderId      = processPaymentRequest.OrderId;
            resp.OrderTotal   = processPaymentRequest.OrderTotal.ToString();
            resp.CurrencyCode = processPaymentRequest.CurrencyCode;
            resp.RefOrderId   = processPaymentRequest.OrderNo + "-" + processPaymentRequest.PaymentId;
            resp.ReturnUrl    = Settings.NotificationUrl;
            return(resp);
        }