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); }
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; } }
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); }
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)); } }
public async Task <HttpResponseMessage> PostRealizarPagamento(CmmPagRequest pagamento) { var result = new HttpResponseMessage(statusCode: System.Net.HttpStatusCode.OK); return(await Task.FromResult(result)); }