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); }
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)); } }