public async Task ReturnPaymentDetails() { //Arrange var controller = new PaymentDetailsController(_paymentService); var paymentId = Guid.NewGuid(); var bankResponseId = Guid.NewGuid(); var paymentResult = new PaymentDetails() { Id = paymentId, BankResponseId = bankResponseId, PaymentMethod = new PaymentMethod() { CardExpiry = "12/22", CardNumber = "1000200030004000", Cvv = "000" } }; await _dbRepository.AddNewItem(paymentResult); //Act var response = await controller.Get(bankResponseId); var result = response as OkObjectResult; var paymentResponse = (PaymentResponse)result.Value; //Assert result.Should().NotBeNull(); paymentResponse.BankResponseId.Should().Be(bankResponseId); }
public static void CreateExistingPayment(Guid idemKey, PaymentDetails paymentDetails) { _idempotentencyRespository.AddNewItem(new IdempotencyKey() { Id = idemKey, PaymentId = paymentDetails.Id }); _paymentRespository.AddNewItem(paymentDetails); }
public async Task <PaymentResponse> SubmitPaymentRequest(Guid idempotencyKey, PaymentRequest paymentRequest) { var idemKey = await _idempotencyRepository.GetItem(x => x.Id == idempotencyKey); if (idemKey != null) { return(await GetExistingPaymentResponse(idemKey.PaymentId)); } var paymentId = Guid.NewGuid(); await _idempotencyRepository.AddNewItem(new IdempotencyKey() { Id = idempotencyKey, PaymentId = paymentId }); //Better done with a Mapper var payment = new PaymentDetails() { Amount = paymentRequest.Amount, Currency = paymentRequest.Currency, Id = paymentId, PaymentMethod = paymentRequest.PaymentMethod }; //Want to add encryption await _paymentsRepository.AddNewItem(payment); var response = await _bankService.InitiatePayment(paymentRequest); payment.Status = response.Status; payment.BankResponseId = response.BankResponseId; await _paymentsRepository.UpdateItem(payment); return(await GetExistingPaymentResponse(payment.Id)); }