Esempio n. 1
0
        private ThreedsInitialize sendIyzico(AppUser appUser, List <Cart> carts, CheckoutModel_req checkoutModel_Req, UserAddress userAddress, string orderId, string ip)
        {
            Options options = new Options();

            options.ApiKey    = "sandbox-OPMmAWhaJiQntmjPPVrolCuJ8XLWITGd";
            options.SecretKey = "sandbox-wPykKvg4r9BZUGAlvFP08eOf90iYY9oS";
            options.BaseUrl   = "https://sandbox-api.iyzipay.com";

            List <BasketItem> basketItems = new List <BasketItem>();
            double            totalPrice  = 0;


            CreatePaymentRequest request = new CreatePaymentRequest();

            for (int i = 0; i < carts.Count; i++)
            {
                BasketItem basket = new BasketItem();
                basket.Id        = carts[i].ProductAmountType.Id.ToString();
                basket.Name      = carts[i].ProductAmountType.Product.ProductName;
                basket.ItemType  = BasketItemType.PHYSICAL.ToString();
                basket.Price     = carts[i].ProductAmountType.Price.ToString();
                basket.Category1 = carts[i].ProductAmountType.Product.ProductCategories[0].Category.CategoryName;
                basketItems.Add(basket);

                totalPrice = totalPrice + carts[i].ProductAmountType.Price;
            }
            request.BasketItems = basketItems;

            request.Locale         = Locale.TR.ToString();
            request.ConversationId = orderId;
            request.Price          = totalPrice.ToString();
            request.PaidPrice      = totalPrice.ToString();
            request.Currency       = Currency.TRY.ToString();
            request.Installment    = checkoutModel_Req.Installment;
            request.BasketId       = orderId;
            request.PaymentChannel = PaymentChannel.WEB.ToString();
            request.PaymentGroup   = PaymentGroup.PRODUCT.ToString();
            request.CallbackUrl    = "http://192.168.1.100:2176/api/checkout/callback";

            PaymentCard paymentCard = new PaymentCard();

            paymentCard.CardHolderName = checkoutModel_Req.FullName;
            paymentCard.CardNumber     = checkoutModel_Req.CardNumber;
            paymentCard.ExpireMonth    = checkoutModel_Req.Mounth;
            paymentCard.ExpireYear     = "20" + checkoutModel_Req.Year;
            paymentCard.Cvc            = checkoutModel_Req.Cvc;
            paymentCard.RegisterCard   = 0;
            request.PaymentCard        = paymentCard;

            Buyer buyer = new Buyer();

            buyer.Id                  = appUser.Id;
            buyer.Name                = appUser.FirstName;
            buyer.Surname             = appUser.LastName;
            buyer.GsmNumber           = appUser.UserName;
            buyer.Email               = appUser.Email;
            buyer.IdentityNumber      = appUser.Tckn;
            buyer.RegistrationAddress = checkoutModel_Req.Address;
            buyer.City                = checkoutModel_Req.City;
            buyer.Country             = checkoutModel_Req.District;
            buyer.Ip                  = ip;
            request.Buyer             = buyer;

            Address shippingAddress = new Address();

            shippingAddress.ContactName = appUser.FirstName + " " + appUser.LastName;
            shippingAddress.City        = userAddress.City;
            shippingAddress.Country     = "Turkey";
            shippingAddress.Description = userAddress.Adress;
            request.ShippingAddress     = shippingAddress;

            Address billingAddress = new Address();

            billingAddress.ContactName = appUser.FirstName + " " + appUser.LastName;
            billingAddress.City        = userAddress.City;
            billingAddress.Country     = "Turkey";
            billingAddress.Description = userAddress.Adress;
            request.BillingAddress     = billingAddress;

            ThreedsInitialize threedsInitialize = ThreedsInitialize.Create(request, options);

            return(threedsInitialize);
        }
Esempio n. 2
0
        public async Task <IActionResult> Checkout([FromBody] CheckoutModel_req checkoutModel)
        {
            try
            {
                var currentUser = User.Identity.Name;
                if (currentUser == null)
                {
                    ErrorModel errorModel3 = new ErrorModel()
                    {
                        ErrorCode    = MessageNumber.KullaniciBulunamadi.GetHashCode().ToString(),
                        ErrorMessage = _localizer["KullaniciBulunamadi"]
                    };

                    errorModels.Add(errorModel3);

                    apiResponsive = new ApiResponsive()
                    {
                        IsSucces     = false,
                        ReturnObject = null,
                        ErrorContent = errorModels
                    };

                    return(BadRequest(apiResponsive));
                }

                AppUser appUser = await _userManager.FindByNameAsync(currentUser);

                if (appUser != null)
                {
                    if (!ModelState.IsValid)
                    {
                        ErrorModel errorModel3 = new ErrorModel()
                        {
                            ErrorCode    = MessageNumber.ParametrelerHatali.GetHashCode().ToString(),
                            ErrorMessage = _localizer["ParametrelerHatali"]
                        };

                        errorModels.Add(errorModel3);

                        apiResponsive = new ApiResponsive()
                        {
                            IsSucces     = false,
                            ReturnObject = null,
                            ErrorContent = errorModels
                        };

                        return(BadRequest(apiResponsive));
                    }

                    if (checkoutModel.PaymentMethod == PaymentMethod.CreditCard)
                    {
                        if (checkoutModel.OldAddressId != 0)
                        {
                            OperationResult operationResult_address = _uow.UserAddress.GetUserAddress(checkoutModel.OldAddressId);
                            if (operationResult_address.IsSuccess && operationResult_address.ReturnObject != null)
                            {
                                Order order = new Order()
                                {
                                    UserId        = appUser.Id,
                                    OrderDate     = DateTime.Now,
                                    OrderStatus   = OrderStatus.NotApproved,
                                    UserAddressId = checkoutModel.OldAddressId,
                                    TotalPrice    = 0
                                };

                                OperationResult operationResult_addOrder = _uow.Orders.Add(order);
                                if (operationResult_addOrder.IsSuccess)
                                {
                                    OperationResult operationResult_carts = _uow.Carts.GetMyCarts(currentUser);
                                    if (operationResult_carts.IsSuccess)
                                    {
                                        List <Cart> myCart = (List <Cart>)operationResult_carts.ReturnObject;
                                        if (myCart.Count != 0)
                                        {
                                            Order order2 = (Order)operationResult_addOrder.ReturnObject;

                                            ThreedsInitialize payment = sendIyzico(appUser, myCart, checkoutModel, (UserAddress)operationResult_address.ReturnObject, order2.Id.ToString(), _accessor.HttpContext.Connection.RemoteIpAddress.ToString());
                                            if (payment.Status == "success")
                                            {
                                                apiResponsive = new ApiResponsive()
                                                {
                                                    ErrorContent = null,
                                                    IsSucces     = true,
                                                    ReturnObject = payment.HtmlContent
                                                };

                                                return(Ok(apiResponsive));
                                            }
                                            else
                                            {
                                                _uow.Orders.Delete(order2);

                                                ErrorModel errorModel3 = new ErrorModel()
                                                {
                                                    ErrorCode    = MessageNumber.OdemeBasarisiz.GetHashCode().ToString(),
                                                    ErrorMessage = _localizer["OdemeBasarisiz"]
                                                };

                                                errorModels.Add(errorModel3);

                                                ErrorModel errorModel = new ErrorModel()
                                                {
                                                    ErrorCode    = payment.ErrorCode,
                                                    ErrorMessage = payment.ErrorMessage
                                                };

                                                errorModels.Add(errorModel);

                                                apiResponsive = new ApiResponsive()
                                                {
                                                    IsSucces     = false,
                                                    ReturnObject = null,
                                                    ErrorContent = errorModels
                                                };

                                                return(Ok(apiResponsive));
                                            }
                                        }
                                        else
                                        {
                                            ErrorModel errorModel3 = new ErrorModel()
                                            {
                                                ErrorCode    = MessageNumber.SepetBulunamadi.ToString(),
                                                ErrorMessage = _localizer["SepetBulunamadi"]
                                            };

                                            errorModels.Add(errorModel3);

                                            apiResponsive = new ApiResponsive()
                                            {
                                                IsSucces     = false,
                                                ReturnObject = null,
                                                ErrorContent = errorModels
                                            };

                                            return(Ok(apiResponsive));
                                        }
                                    }
                                    else
                                    {
                                        ErrorModel errorModel3 = new ErrorModel()
                                        {
                                            ErrorCode    = MessageNumber.SepetGetirilemedi.ToString(),
                                            ErrorMessage = _localizer["SepetGetirilemedi"]
                                        };

                                        errorModels.Add(errorModel3);

                                        apiResponsive = new ApiResponsive()
                                        {
                                            IsSucces     = false,
                                            ReturnObject = null,
                                            ErrorContent = errorModels
                                        };

                                        return(Ok(apiResponsive));
                                    }
                                }
                                else
                                {
                                    ErrorModel errorModel3 = new ErrorModel()
                                    {
                                        ErrorCode    = MessageNumber.SiparisEklenemedi.ToString(),
                                        ErrorMessage = _localizer["SiparisEklenemedi"]
                                    };

                                    errorModels.Add(errorModel3);

                                    apiResponsive = new ApiResponsive()
                                    {
                                        IsSucces     = false,
                                        ReturnObject = null,
                                        ErrorContent = errorModels
                                    };

                                    return(Ok(apiResponsive));
                                }
                            }
                            else
                            {
                                ErrorModel errorModel3 = new ErrorModel()
                                {
                                    ErrorCode    = MessageNumber.AdresBulunamadi.GetHashCode().ToString(),
                                    ErrorMessage = _localizer["AdresBulunamadi"]
                                };

                                errorModels.Add(errorModel3);

                                apiResponsive = new ApiResponsive()
                                {
                                    IsSucces     = false,
                                    ReturnObject = null,
                                    ErrorContent = errorModels
                                };

                                return(Ok(apiResponsive));
                            }
                        }
                        else
                        {
                            UserAddress userAddress = new UserAddress()
                            {
                                UserId       = appUser.Id,
                                Adress       = checkoutModel.Address,
                                AdressTitle  = checkoutModel.AddressTitle,
                                City         = checkoutModel.City,
                                District     = checkoutModel.District,
                                Neighborhood = checkoutModel.Neighborhood,
                                Zip          = checkoutModel.Zip
                            };
                            OperationResult operationResult_addAddress = _uow.UserAddress.Add(userAddress);
                            if (operationResult_addAddress.IsSuccess)
                            {
                                UserAddress     userAddress2          = (UserAddress)operationResult_addAddress.ReturnObject;
                                OperationResult operationResult_carts = _uow.Carts.GetMyCarts(currentUser);
                                if (operationResult_carts.IsSuccess)
                                {
                                    List <Cart> myCart = (List <Cart>)operationResult_carts.ReturnObject;
                                    if (myCart.Count != 0)
                                    {
                                        Order order = new Order()
                                        {
                                            UserId        = appUser.Id,
                                            OrderDate     = DateTime.Now,
                                            OrderStatus   = OrderStatus.NotApproved,
                                            UserAddressId = userAddress2.Id,
                                            TotalPrice    = 0
                                        };
                                        OperationResult operationResult_addOrder = _uow.Orders.Add(order);
                                        if (operationResult_addOrder.IsSuccess)
                                        {
                                            Order             order2  = (Order)operationResult_addOrder.ReturnObject;
                                            ThreedsInitialize payment = sendIyzico(appUser, myCart, checkoutModel, userAddress, order2.Id.ToString(), _accessor.HttpContext.Connection.RemoteIpAddress.ToString());
                                            if (payment.Status == "success")
                                            {
                                                apiResponsive = new ApiResponsive()
                                                {
                                                    ErrorContent = null,
                                                    IsSucces     = true,
                                                    ReturnObject = payment.HtmlContent
                                                };

                                                return(Ok(apiResponsive));
                                            }
                                            else
                                            {
                                                _uow.Orders.Delete(order2);
                                                _uow.UserAddress.Delete(userAddress2);


                                                ErrorModel errorModel3 = new ErrorModel()
                                                {
                                                    ErrorCode    = MessageNumber.OdemeBasarisiz.GetHashCode().ToString(),
                                                    ErrorMessage = _localizer["OdemeBasarisiz"]
                                                };

                                                errorModels.Add(errorModel3);

                                                ErrorModel errorModel = new ErrorModel()
                                                {
                                                    ErrorCode    = payment.ErrorCode,
                                                    ErrorMessage = payment.ErrorMessage
                                                };

                                                errorModels.Add(errorModel);

                                                apiResponsive = new ApiResponsive()
                                                {
                                                    IsSucces     = false,
                                                    ReturnObject = null,
                                                    ErrorContent = errorModels
                                                };

                                                return(Ok(apiResponsive));
                                            }
                                        }
                                        else
                                        {
                                            _uow.UserAddress.Delete(userAddress2);

                                            ErrorModel errorModel3 = new ErrorModel()
                                            {
                                                ErrorCode    = MessageNumber.SiparisEklenemedi.GetHashCode().ToString(),
                                                ErrorMessage = _localizer["SiparisEklenemedi"]
                                            };

                                            errorModels.Add(errorModel3);

                                            apiResponsive = new ApiResponsive()
                                            {
                                                IsSucces     = false,
                                                ReturnObject = null,
                                                ErrorContent = errorModels
                                            };

                                            return(Ok(apiResponsive));
                                        }
                                    }
                                    else
                                    {
                                        _uow.UserAddress.Delete(userAddress2);

                                        ErrorModel errorModel3 = new ErrorModel()
                                        {
                                            ErrorCode    = MessageNumber.SepetinizBos.GetHashCode().ToString(),
                                            ErrorMessage = _localizer["SepetinizBos"]
                                        };

                                        errorModels.Add(errorModel3);

                                        apiResponsive = new ApiResponsive()
                                        {
                                            IsSucces     = false,
                                            ReturnObject = null,
                                            ErrorContent = errorModels
                                        };

                                        return(Ok(apiResponsive));
                                    }
                                }
                                else
                                {
                                    _uow.UserAddress.Delete(userAddress2);

                                    ErrorModel errorModel3 = new ErrorModel()
                                    {
                                        ErrorCode    = MessageNumber.SepetGetirilemedi.GetHashCode().ToString(),
                                        ErrorMessage = _localizer["SepetGetirilemedi"]
                                    };

                                    errorModels.Add(errorModel3);

                                    apiResponsive = new ApiResponsive()
                                    {
                                        IsSucces     = false,
                                        ReturnObject = null,
                                        ErrorContent = errorModels
                                    };



                                    return(Ok(apiResponsive));
                                }
                            }
                            else
                            {
                                ErrorModel errorModel3 = new ErrorModel()
                                {
                                    ErrorCode    = MessageNumber.AdresEklenemedi.GetHashCode().ToString(),
                                    ErrorMessage = _localizer["AdresEklenemedi"]
                                };

                                errorModels.Add(errorModel3);

                                apiResponsive = new ApiResponsive()
                                {
                                    IsSucces     = false,
                                    ReturnObject = null,
                                    ErrorContent = errorModels
                                };

                                return(Ok(apiResponsive));
                            }
                        }
                    }
                    else if (checkoutModel.PaymentMethod == PaymentMethod.PaymentAtTheDoor)
                    {
                        apiResponsive = new ApiResponsive()
                        {
                            IsSucces     = true,
                            ErrorContent = null,
                            ReturnObject = null
                        };

                        return(Ok(apiResponsive));
                    }
                    else
                    {
                        apiResponsive = new ApiResponsive()
                        {
                            IsSucces     = true,
                            ErrorContent = null,
                            ReturnObject = null
                        };

                        return(Ok(apiResponsive));
                    }
                }
                else
                {
                    ErrorModel errorModel3 = new ErrorModel()
                    {
                        ErrorCode    = MessageNumber.KullaniciBulunamadi.GetHashCode().ToString(),
                        ErrorMessage = _localizer["KullaniciBulunamadi"]
                    };

                    errorModels.Add(errorModel3);

                    apiResponsive = new ApiResponsive()
                    {
                        IsSucces     = false,
                        ReturnObject = null,
                        ErrorContent = errorModels
                    };

                    return(BadRequest(apiResponsive));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error in {nameof(CheckoutController)} : {ex}");
                ErrorModel errorModel3 = new ErrorModel()
                {
                    ErrorCode    = MessageNumber.BeklenmedikHata.ToString(),
                    ErrorMessage = _localizer["BeklenmedikHata"]
                };

                errorModels.Add(errorModel3);

                apiResponsive = new ApiResponsive()
                {
                    IsSucces     = false,
                    ReturnObject = null,
                    ErrorContent = errorModels
                };

                return(BadRequest(apiResponsive));
            }
        }