コード例 #1
0
        public async Task <Pedido> RealizarPedido(RealizarPedidoRequest pedidoRequest, string userName)
        {
            // Encontra cliente pelo Usuário Logado (Token)
            var cliente = await _clienteRepository.GetByUserName(userName);

            if (cliente == null)
            {
                throw new Exception("Cliente não localizado");
            }
            // Cálcula a distância para o pedido
            var distancia = GEOCalculaDistancia.CalculaDistanciaEmKM(new GEOParams(LATITUDE, LONGITUDE, cliente.Latitude, cliente.Longitude));
            var pagamento = new PagamentoCartao(
                pedidoRequest.Bandeira,
                pedidoRequest.Numero,
                pedidoRequest.Vencimento,
                pedidoRequest.CodigoSeguranca,
                pedidoRequest.Valor,
                StatusCartao.aguardandoAprovacao
                );
            // Salva o pedido na base
            var pedido = new Pedido
            {
                Cliente             = cliente,
                DataHora            = DateTime.Now,
                Peso                = pedidoRequest.Peso,
                DistanciaParaOrigem = distancia,
                StatusPedido        = StatusPedido.aguardandoAprovacao,
                PagamentoCartao     = pagamento
            };
            //await _pedidoRepository.AddPedido(pedido);
            await _pedidoRepository.AddPedido(pedido);

            // Envia o pedido para Pagamento
            var pagamentoREquest = new CmmPagRequest()
            {
                Bandeira        = pagamento.Bandeira,
                CodigoSeguranca = pagamento.CodigoSeguranca,
                CreatedAt       = DateTime.Now,
                Name            = cliente.Nome,
                NumeroCartao    = pagamento.Numero,
                PayId           = pagamento.Id,
                Status          = StatusCartao.aguardandoAprovacao,
                Valor           = pagamento.Valor,
                Vencimento      = pagamento.Vencimento
            };
            var result = await _payAPIHandler.PostRealizarPagamento(pagamentoREquest);

            if (!result.IsSuccessStatusCode)
            {
                throw new Exception("Falha ao realizar o pagamento");
            }
            return(pedido);
        }
コード例 #2
0
        public async Task <HttpResponseMessage> PostRealizarPagamento(CmmPagRequest pagamento)
        {
            try
            {
                StringContent pedidoJson = new StringContent(JsonConvert.SerializeObject(pagamento), Encoding.UTF8, "application/json");
                var           result     = await httpClient.PostAsync(uri, pedidoJson);

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #3
0
        public void ReazliarPagamentoSucesso()
        {
            CmmPagRequest cmmPagRequest = new CmmPagRequest()
            {
                Bandeira        = "visa",
                CodigoSeguranca = 321,
                CreatedAt       = DateTime.Now,
                Name            = "Eric",
                NumeroCartao    = "321654",
                PayId           = new Guid(),
                Status          = StatusCartao.aguardandoAprovacao,
                Valor           = 321,
                Vencimento      = DateTime.Now
            };
            var result = payAPIHandler.PostRealizarPagamento(cmmPagRequest).Result;

            Assert.Equal(result.StatusCode, System.Net.HttpStatusCode.OK);
        }
コード例 #4
0
        public async Task <ActionResult> AtualizarStatusPagamento([FromBody] CmmPagRequest cmmPagRequest)
        {
            try
            {
                var pagamento = new PagamentoCartao(
                    cmmPagRequest.Bandeira,
                    cmmPagRequest.NumeroCartao,
                    cmmPagRequest.Vencimento,
                    cmmPagRequest.CodigoSeguranca,
                    cmmPagRequest.Valor,
                    cmmPagRequest.Status)
                {
                    Id = cmmPagRequest.PayId
                };
                await _pedidoHandler.AtualizaStatusPagamento(pagamento);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #5
0
        public async Task <HttpResponseMessage> PostRealizarPagamento(CmmPagRequest pagamento)
        {
            var result = new HttpResponseMessage(statusCode: System.Net.HttpStatusCode.OK);

            return(await Task.FromResult(result));
        }