public async Task Should_Return_Error_When_NonCorrect_Pan_Request_For_PaymentByCreditCard() { var parameter = new ProductSelection(); parameter.Slot = 3; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var responseProductSelection = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiProductSelectionResult = await responseProductSelection.Content.ReadAsAsync <ProductSelectionResult>(); PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.TransactionId = apiProductSelectionResult.TransactionId; paymentByCreditCardEntity.Pan = ""; paymentByCreditCardEntity.Month = 12; paymentByCreditCardEntity.Year = 21; paymentByCreditCardEntity.Cvc = "000"; var response = await _client.PostAsJsonAsync("Automat/PaymentByCreditCard", paymentByCreditCardEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal($"CardInfo: {apiResult.TransactionId} Message: Kredi kartı bilgileri bulunamadı!", apiResult.Message); }
public async Task Should_Return_Success_When_Send_Correct_Request_For_PaymentByCreditCard() { var parameter = new ProductSelection(); parameter.Slot = 3; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var responseProductSelection = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiProductSelectionResult = await responseProductSelection.Content.ReadAsAsync <ProductSelectionResult>(); PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.TransactionId = apiProductSelectionResult.TransactionId; paymentByCreditCardEntity.Pan = "4355084355084358"; paymentByCreditCardEntity.Month = 12; paymentByCreditCardEntity.Year = 21; paymentByCreditCardEntity.Cvc = "000"; var response = await _client.PostAsJsonAsync("Automat/PaymentByCreditCard", paymentByCreditCardEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(0 == apiResult.Code); }
public async Task Should_Return_Error_When_Sending_Wrong_Card_Info_For_PaymentByCreditCard() { //Arrange var automatFacade = new AutomatFacade(new FakeProductRepository(), new FakeCampaingRepository(), new FakeTransactionRepository()); //Act PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.Pan = ""; paymentByCreditCardEntity.Year = 2020; paymentByCreditCardEntity.Month = 12; var result = await automatFacade.PaymentByCreditCard(paymentByCreditCardEntity); //Assert Assert.Equal(1, result.Code); }
public async Task Should_Return_Error_When_Send_Non_Transaction_Id_Request_For_PaymentByCreditCard() { PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.TransactionId = -1; paymentByCreditCardEntity.Pan = "4355084355084358"; paymentByCreditCardEntity.Month = 12; paymentByCreditCardEntity.Year = 21; paymentByCreditCardEntity.Cvc = "000"; var response = await _client.PostAsJsonAsync("Automat/PaymentByCreditCard", paymentByCreditCardEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal($"TransactionId: {paymentByCreditCardEntity.TransactionId} Message: TransactionId değeri bulunamadı!", apiResult.Message); }
public async Task Should_Return_Error_When_Sending_Paid_Transaction_Id_Request_For_PaymentByCreditCard() { PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.TransactionId = 1; paymentByCreditCardEntity.Pan = "4355084355084358"; paymentByCreditCardEntity.Month = 12; paymentByCreditCardEntity.Year = 21; paymentByCreditCardEntity.Cvc = "000"; var response = await _client.PostAsJsonAsync("Automat/PaymentByCreditCard", paymentByCreditCardEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal($"Bu işlem Gerçekleşmiştir! Transaction id {paymentByCreditCardEntity.TransactionId}", apiResult.Message); }
public async Task <TransactionResult> PaymentByCreditCard(PaymentByCreditCardEntity paymentEntity) { TransactionResult transactionResult = new TransactionResult(); try { if (paymentEntity == null) { transactionResult.Code = 1; transactionResult.Message = "null parameter"; return(transactionResult); } //In this line can be used luhn check algorithm for the credit card info!!!! if (string.IsNullOrEmpty(paymentEntity.Pan) || paymentEntity.Year == 0 || paymentEntity.Month == 0 || string.IsNullOrEmpty(paymentEntity.Cvc)) { transactionResult.TransactionId = paymentEntity.TransactionId; transactionResult.Code = 1; transactionResult.Message = $"CardInfo: {paymentEntity.TransactionId} Message: Kredi kartı bilgileri bulunamadı!"; return(transactionResult); } var transaction = await _transactionRepository.GetByIdAsync(paymentEntity.TransactionId); if (transaction == null) { transactionResult.TransactionId = paymentEntity.TransactionId; transactionResult.Code = 1; transactionResult.Message = $"TransactionId: {paymentEntity.TransactionId} Message: TransactionId değeri bulunamadı!"; return(transactionResult); } var product = await _productRepository.GetByIdAsync(transaction.Slot); if (product == null) { transactionResult.TransactionId = paymentEntity.TransactionId; transactionResult.Slot = transaction.Slot; transactionResult.Code = 1; transactionResult.Message = $"Slot: {transaction.Slot} Message: Slot bulunamadı!"; return(transactionResult); } if (transaction.IsPaid) { transactionResult.TransactionId = paymentEntity.TransactionId; transactionResult.Code = 1; transactionResult.Message = $"Bu işlem Gerçekleşmiştir! Transaction id {paymentEntity.TransactionId}"; return(transactionResult); } //charge from the credit card in this line //if this process success transactionResult.TransactionId = paymentEntity.TransactionId; transactionResult.Code = 0; transactionResult.Message = "Başarılı işlem"; transactionResult.PaymentMethod = "KREDI KART"; transactionResult.ReversedAmount = 0; transactionResult.ProdcutName = product.ProductName; transactionResult.Slot = transaction.Slot; product.NumberOfProducts -= transaction.SelectedPieces; product.IsAvailable = product.NumberOfProducts <= 0 ? false : true; await _productRepository.UpdateAsync(product); transaction.IsPaid = true; await _transactionRepository.UpdateAsync(transaction); return(transactionResult); } catch (Exception) { //logging transactionResult.TransactionId = paymentEntity.TransactionId; transactionResult.Code = 1; transactionResult.Message = "Hata oluştu!"; } return(transactionResult); }
public async Task <ActionResult <IEnumerable <TransactionResult> > > PaymentByCreditCard([FromBody] PaymentByCreditCardEntity paymentByCreditCardEntity) { var result = await _automatFacade.PaymentByCreditCard(paymentByCreditCardEntity); return(Ok(result)); }