コード例 #1
0
        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);
        }
コード例 #2
0
 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"
     });
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        //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);
            }
        }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
        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());
        }
コード例 #12
0
        public async Task <IActionResult> Payment([FromBody] CriarPaymentCommand criarPaymentCommand)
        {
            var result = await _criarPaymentHandler.Handle(criarPaymentCommand);

            return(Ok(result));
        }