예제 #1
0
        private bool ProcessThePayment(Order order, Secure3DHandler model)
        {
            var result = false;
            var iyzicoPaymentSettings = _settingService.LoadSetting <IyzicoPaymentSettings>(_storeContext.CurrentStore.Id);

            Armut.Iyzipay.Options options = new Armut.Iyzipay.Options();

            options.ApiKey    = iyzicoPaymentSettings.APIKey;
            options.SecretKey = iyzicoPaymentSettings.SecretKey;
            options.BaseUrl   = iyzicoPaymentSettings.APIUrl;

            if (model.status.Equals("success"))
            {
                CreateThreedsPaymentRequest request = new CreateThreedsPaymentRequest();
                // request.Locale = Locale.TR.ToString();
                request.ConversationId   = model.conversationId;
                request.PaymentId        = model.paymentId;
                request.ConversationData = model.conversationData;
                // complete the 3DS
                ThreedsPayment threedsPayment = ThreedsPayment.Create(request, options);

                if (threedsPayment.Status.Equals("success"))
                {
                    result              = true;
                    order.OrderStatus   = OrderStatus.Processing;
                    order.PaymentStatus = PaymentStatus.Paid;
                }
                else
                {
                    order.OrderStatus   = OrderStatus.Cancelled;
                    order.PaymentStatus = PaymentStatus.Voided;
                    OrderError(threedsPayment.ErrorMessage, order);
                }
            }
            else
            {
                order.OrderStatus   = OrderStatus.Cancelled;
                order.PaymentStatus = PaymentStatus.Voided;
                OrderError($"Error mdStatus:{model.mdStatus}", order);
            }

            // clear card informations
            // if you want to keep that informations ignore the below part
            order.CardCvv2                     = string.Empty;
            order.CardName                     = string.Empty;
            order.CardNumber                   = string.Empty;
            order.CardExpirationYear           = string.Empty;
            order.CardExpirationMonth          = string.Empty;
            order.CardType                     = string.Empty;
            order.MaskedCreditCardNumber       = string.Empty;
            order.AllowStoringCreditCardNumber = false;

            _orderService.UpdateOrder(order);

            return(result);
        }
예제 #2
0
        public IActionResult Handler([FromForm] Secure3DHandler model)
        {
            if (ModelState.IsValid)
            {
                var order = _orderService.GetOrderByGuid(new Guid(model.conversationId));
                if (order != null)
                {
                    var result = ProcessThePayment(order, model);

                    if (result)
                    {
                        return(RedirectToRoute("CheckoutCompleted", new { orderId = order.Id }));
                    }
                }
            }

            return(RedirectToAction("Index", "Home", new { area = "" }));
        }