public string Imprimir(Entidade.Pedido pedido) { var hash = pedido.ListaHistorico.FirstOrDefault(h => h.StatusPedido == Entidade.Uteis.StatusPedido.AguardandoPagamento)?.CodigoRetornoTransacao; var url = $"{ApiEbanxBase.API_EBANX_URL.TrimEnd('/')}/print?hash={hash}&format=html"; var response = new System.Net.WebClient().DownloadString(url); return(response); }
public Models.DirectResponseModel CompraDireta(Entidade.Pedido pedido, bool auto_capture = true) { var usuario = pedido.Usuario.Pessoa; var cartao = new Models.CreditCardModel { card_number = pedido.Cartao.NumeroSemMascara, card_name = pedido.Cartao.NomeImpresso ?? usuario.Nome.ToUpper(), card_due_date = pedido.Cartao.DataValidade?.ToString("MM/yyyy"), card_cvv = pedido.Cartao.CvvSemMascara }; if (!string.IsNullOrEmpty(pedido.Cartao.Token)) { cartao = new Models.CreditCardModel { token = pedido.Cartao.Token } } ; cartao.auto_capture = auto_capture; var endereco = usuario.EnderecoResidencial; var request = new Models.DirectRequestModel { integration_key = API_EBANX_INTEGRATION_KEY, operation = "request", mode = "full", payment = new Models.PaymentModel { name = usuario.Nome, email = usuario.Email, document = usuario.Cpf ?? pedido.Usuario.Pessoa.Cnpj, address = endereco?.Logradouro, street_number = endereco?.Numero, city = endereco?.Cidade?.Descricao, state = endereco?.Cidade?.Estado?.Sigla, zipcode = endereco?.Cep.ExtractNumbers().PadLeft(8, '0'), country = "br", phone_number = usuario.Celular, payment_type_code = "discover", merchant_payment_code = pedido.Loja.Cnpj.ExtractNumbers().PadLeft(14, '0') + "_" + pedido.Id, currency_code = "BRL", instalments = 1, amount_total = pedido.Valor, creditcard = cartao } }; var url = $"/ws/direct"; var json = Newtonsoft.Json.JsonConvert.SerializeObject(request); var response = ApiEbanxBase.RequestApi(HttpVerbs.Post, url, json); return(Newtonsoft.Json.JsonConvert.DeserializeObject <Models.DirectResponseModel>(response)); }
public Models.CancelResponseModel Cancelar(Entidade.Pedido pedido) { var hash = pedido.ListaHistorico.FirstOrDefault(h => h.StatusPedido == Entidade.Uteis.StatusPedido.AguardandoPagamento)?.CodigoRetornoTransacao; var request = new Models.CancelRequestModel { integration_key = API_EBANX_INTEGRATION_KEY, hash = hash }; var url = $"/ws/cancel"; var json = Newtonsoft.Json.JsonConvert.SerializeObject(request); var response = ApiEbanxBase.RequestApi(HttpVerbs.Post, url, json); return(Newtonsoft.Json.JsonConvert.DeserializeObject <Models.CancelResponseModel>(response)); }
public Models.RefundOrCancelResponseModel CancelarOuEstornar(Entidade.Pedido pedido, string motivo) { var hash = pedido.ListaHistorico.FirstOrDefault(h => h.StatusPedido == Entidade.Uteis.StatusPedido.AguardandoPagamento)?.CodigoRetornoTransacao; var cnpj = pedido.Loja.Cnpj.ExtractNumbers().PadLeft(14, '0'); var request = new Models.RefundOrCancelRequestModel { integration_key = API_EBANX_INTEGRATION_KEY, hash = hash, description = motivo, merchant_refund_code = $"{cnpj}_{pedido.Id}_refund" }; var url = $"/ws/refundOrCancel"; var json = Newtonsoft.Json.JsonConvert.SerializeObject(request); var response = ApiEbanxBase.RequestApi(HttpVerbs.Post, url, json); return(Newtonsoft.Json.JsonConvert.DeserializeObject <Models.RefundOrCancelResponseModel>(response)); }
public IHttpActionResult Comprar(string cnpjLoja, string cpfUsuario, int cartaoId, decimal valor, bool auto_capture = true) { cpfUsuario = cpfUsuario.Trim().Replace(".", "").Replace("-", "").PadLeft(11, '0'); cnpjLoja = cnpjLoja.Trim().Replace(".", "").Replace("-", "").Replace("/", ""); var cartao = cartaoServico.BuscarPorId(cartaoId); var usuario = usuarioServico.PrimeiroPor(u => u.Pessoa.Documentos.Any(d => d.Numero.Trim().Replace(".", "").Replace("-", "").Equals(cpfUsuario))); var loja = lojaServico.PrimeiroPor(l => l.Cnpj.Trim().Replace(".", "").Replace("-", "").Replace("/", "").Equals(cnpjLoja)); if (cartao == null) { throw new BusinessRuleException("Cartão não encontrado."); } if (usuario == null) { throw new BusinessRuleException("Usuário não encontrado."); } if (loja == null) { throw new BusinessRuleException("Loja não encontrada."); } var pedido = new Entidade.Pedido { Cartao = cartao, Usuario = usuario, Valor = valor, Loja = loja, Endereco = usuario?.Pessoa?.EnderecoResidencial }; pedidoServico.ValidarESalvar(pedido); var response = _apiTransacaoEbanx.CompraDireta(pedido, auto_capture); pedidoServico.ModificaStatus(pedido.Id, StatusPedido.AguardandoPagamento, pedido.Usuario, codigoRetornoTransacao: response.payment?.hash); return(Ok(response)); }