public void TesteCriarPaymentHandlerValidar() { var payCommand = new CriarPaymentCommand(new Guid(), DateTime.Now, "Afonso", "Visa", "1234567891011115", DateTime.Now.AddMonths(9), 32, 8523, 1); payCommand.Validar(); var result = _criarPaymentHandler.Handle(payCommand).Result; Assert.False(result.HasFails); }
async Task CallMockApi(CriarPaymentCommand request) { await _payAtOperatorService.ValidadePayAtOperator(new PayOperatorFilterDto() { Id = request.PayId, CreatedAt = DateTime.Now, Name = request.Name, Bandeira = request.Bandeira, NumeroCartao = request.NumeroCartao, Vencimento = request.Vencimento, CodigoSeguranca = request.CodigoSeguranca, Valor = (decimal)request.Valor, Status = "Envio" }); }
async Task <bool> AddDataBase(CriarPaymentCommand request) { request.Validar(); if (request.Notifications.Any()) { _response.AddNotifications(request.Notifications); return(false); } // Armazena informação da transação de pagamento var payment = _mapper.Map <Payment>(request); await _unitOfWork.PaymentRepository.InsertAsync(payment); await _unitOfWork.CommitAsync(); return(true); }
public async Task <ResponseResult> Handle(CriarPaymentCommand request) { // Registra a operação de pagamento var result = await AddDataBase(request); if (!result) { return(_response); } // Chama MockAPI para tratar pagamento await CallMockApi(request); // Envia o pagamento para uma fila no Kafka request.Status = 2; await SendPayToKafka(request); // retorna a operação para Controller return(_response); }
public async Task <ResponseResult> Handle(CriarPaymentCommand request) { // Registra a operação de pagamento var result = await AddDataBase(request); if (!result) { return(_response); } // Chama MockAPI para tratar pagamento await CallMockApi(request); // Chama WebHook retornando o status do pagamento request.Status = 2; await CallWebHook(request); // retorna a operação para Controller return(_response); }
async Task <bool> AddDataBase(CriarPaymentCommand request) { request.Validar(); if (request.Notifications.Any()) { _response.AddNotifications(request.Notifications); return(false); } // Armazena informação da transação de pagamento var payment = _mapper.Map <Payment>(request); //Payment payment = new Payment(request.PayId, DateTime.Now, request.Name, request.Bandeira, request.NumeroCartao, request.Vencimento, // request.CodigoSeguranca, request.Valor, request.Status); await _unitOfWork.PaymentRepository.InsertAsync(payment); await _unitOfWork.CommitAsync(); return(true); }
public async Task GivenNaoExistaPaymentsCadastrados() { CriarPaymentCommand criarPayment = new CriarPaymentCommand { PayId = new Guid("3fa85f64-5717-4562-b3fc-2c963f66afa6"), CreatedAt = DateTime.Parse("2020-09-07T21:19:50.304Z"), Name = "Eric", Bandeira = "Mastercard", NumeroCartao = "1111111111111111", Vencimento = DateTime.Parse("2020-09-07T21:19:50.304Z"), CodigoSeguranca = 145, Valor = 40, Status = 1 }; await _criarPaymentHandler.Handle(criarPayment); var payment = await _listarPaymentsHandler.Handle(new PaymentsQuery()); Assert.NotNull(payment); }
async Task CallWebHook(CriarPaymentCommand request) { var result = await _webHook.CallPostMethod(new WebHookMethodRequestDto { PayId = request.PayId, CreatedAt = request.CreatedAt, Name = request.Name, Bandeira = request.Bandeira, NumeroCartao = request.NumeroCartao, Vencimento = request.Vencimento, CodigoSeguranca = request.CodigoSeguranca, Valor = (decimal)request.Valor, Status = request.Status }); if (result.StatusCode != HttpStatusCode.OK) { request.AddNotification("", result.ContentResult); _response.AddNotifications(request.Notifications); } }
//async Task CallWebHook(CriarPaymentCommand request) //{ // var result = await _webHook.CallPostMethod(new WebHookMethodRequestDto // { // PayId = request.PayId, // CreatedAt = request.CreatedAt, // Name = request.Name, // Bandeira = request.Bandeira, // NumeroCartao = request.NumeroCartao, // Vencimento = request.Vencimento, // CodigoSeguranca = request.CodigoSeguranca, // Valor = (decimal)request.Valor, // Status = request.Status // }); // if (result.StatusCode != HttpStatusCode.OK) // { // request.AddNotification("", result.ContentResult); // _response.AddNotifications(request.Notifications); // } //} async Task CallKafkaProducer(CriarPaymentCommand request) { var result = await _kafkaProducer.RealizarPagamento(new MethodRequestDto { PayId = request.PayId, CreatedAt = request.CreatedAt, Name = request.Name, Bandeira = request.Bandeira, NumeroCartao = request.NumeroCartao, Vencimento = request.Vencimento, CodigoSeguranca = request.CodigoSeguranca, Valor = (decimal)request.Valor, Status = request.Status }); if (result.Status == Confluent.Kafka.PersistenceStatus.NotPersisted) { request.AddNotification("", result.Message.Value); _response.AddNotifications(request.Notifications); } }
async Task SendPayToKafka(CriarPaymentCommand request) { var requestPaymentDto = new RequestPaymentDto { PayId = request.PayId, CreatedAt = request.CreatedAt, Name = request.Name, Bandeira = request.Bandeira, NumeroCartao = request.NumeroCartao, Vencimento = request.Vencimento, CodigoSeguranca = request.CodigoSeguranca, Valor = (decimal)request.Valor, Status = request.Status }; var result = await _sendPayToKafka.SendPay(requestPaymentDto); if (result.Status == Confluent.Kafka.PersistenceStatus.NotPersisted) { request.AddNotification("", result.Message.Value); _response.AddNotifications(request.Notifications); } }
public void AddDataBaseTest() { var request = new CriarPaymentCommand { PayId = Guid.NewGuid(), CreatedAt = DateTime.Now, Name = "VISA", Bandeira = "VISA", NumeroCartao = "1234567890123456", Vencimento = DateTime.Now, CodigoSeguranca = 123, Valor = 125.52, Status = 1 }; request.Validar(); var payment = _mapper.Map <Payment>(request); _unitOfWork.PaymentRepository.InsertAsync(payment).Wait(); _unitOfWork.CommitAsync().Wait(); Assert.False(request.Notifications.Any()); }
public async Task <IActionResult> Payment([FromBody] CriarPaymentCommand criarPaymentCommand) { var result = await _criarPaymentHandler.Handle(criarPaymentCommand); return(Ok(result)); }