Comunidade

Ask a Question

"has_grouped_volumes"

Na API de listagem de transportadoras (<https://melhorenvio.com.br/api/v2/me/shipment/companies>), existe este campo, que possui valor 0 ou 1. Pelo nome do campo, dá a entender que ele indica se a transportadora aceita múltiplos volumes ("volumes agrupados") ao adicionar ao carrinho. Nas documentações das APIs de compra de fretes e no fluxograma de integração da compra de fretes, só é citado que os Correios não aceitam múltiplos volumes de uma vez ao adicionar ao carrinho, porém, nesta API, outras transportadoras possuem este campo com o valor 0. Como este campo (bem como outros campos desta mesma API) não está documentado, a minha dúvida é: este campo indica mesmo o que eu estou pensando que ele indica? É seguro confiar no valor deste campo para enviar diversos volumes de uma vez?

Obtenho sucesso na resposta porém o servidor me devolve null.

Sou desenvolvedor e estou consumindo a api usando Webclient - spring boot + java. Obtenho a resposta 200 ok. Porém no console eu obtenho: MelhorEnvioResponse(id=null, name=null, price=null, customPrice=null, discount=null, currency=null, deliveryTime=null, deliveryRange=null, customDeliveryTime=null, customDeliveryRange=null, packages=null, dimensions=null) Estou usando o token do sandbox; Não estou usando refresh_token; Segue os principais parâmetros... ``` @Service public class MelhorEnvioService { private final WebClient webClient; public MelhorEnvioService() { this.webClient = WebClient.builder() .baseUrl(ApiTokenIntegracao.URL_MELHOR_ENVIO_SAND_BOX + "api/v2/me/shipment") .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE) .defaultHeader(HttpHeaders.USER_AGENT, "[email protected]") .build(); } public Mono<MelhorEnvioResponse> calculateShipping() { MelhorEnvioRequest request = new MelhorEnvioRequest(); try { return webClient.post() .uri("/calculate") .header(HttpHeaders.AUTHORIZATION, "Bearer " + ApiTokenIntegracao.TOKEN_MELHOR_ENVIO) .body(BodyInserters.fromValue(request)) .exchange() .flatMap(response -> response.bodyToMono(MelhorEnvioResponse.class)) .doOnSuccess(response -> System.out.println(response.toString())); } catch (Exception e) { e.printStackTrace(); throw e; } } } ``` ``` @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class MelhorEnvioRequest implements Serializable { private From from; private To to; private List<ProductDto> products; private Options options; } ``` ``` @Getter @Setter @AllArgsConstructor @NoArgsConstructor @ToString public class MelhorEnvioResponse implements Serializable { private Integer id; private String name; private String price; @JsonProperty(value = "custom_price") private String customPrice; private String discount; private String currency; @JsonProperty(value = "delivery_time") private Integer deliveryTime; @JsonProperty(value = "delivery_range") private DeliveryRange deliveryRange; private Integer customDeliveryTime; private CustomDeliveryRange customDeliveryRange; private Packages packages; private Dimensions dimensions; } ``` ``` @RestController @RequestMapping(value = "/shipment") public class CalculateShipping { @Autowired private MelhorEnvioService service; @PostMapping("/consult") public Mono<ResponseEntity<MelhorEnvioResponse>> calculateShipping() { return service.calculateShipping() .map(response -> ResponseEntity.ok(response)) .onErrorResume(error -> Mono.just(ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build())); } } ``` Desde já agradeço a atenção; Estou à disposição.

CORS - Problema

Passei a ter problemas na requisição dos resources dando erro de CORS. Not allowed Origin url. Eu consigo gerar o token, tudo certinho, passo o redirect_uri, nas requisições. E tb adicionei o user Agent nas requisições, mas não consigo fazer funcionar as requisicoes. Poderiam me dar uma orientação o que pode estar ocorrendo?

Codigo de autorização

onde consigo esse primeiro codigo de autorização? estou tentando fazer uma requisição na api de Authorização e está faltando esse parametro code. {"grant_type": "authorization_code", "client_id": 1234, "client_secret": "a3s2d1as3d21", "redirect_uri": "<https://localhost.com/approve/">, "code": "?????" }

Reagindo a estados com Webhooks

Olá pessoal, boa tarde. Como vão? Eu fiquei na dúvida se existem webhooks para reagir a mudança de estado no pacote, como de released para posted, de posted para delivered ou undelireved e etc... Não me parece uma ideia muito boa montar um job agendado para verificar manualmente isso todo dia, eu poderia facilmente cair no ratelimit da api fazendo isso em dias com muitos pedidos...

Erro "unsupported_grant_type"

Estou tentando gerar um token e estou passando todos os parâmetros, mas recebo esse erro. Quais são os grant_types? Estou passando o valor "shipping-calculate", está correto? E também, mesmo depois de fazer o processo de autorização de aplicativo ele não aparece para mim na sessão de aplicativos autorizados

The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.

Estou preenchendo os campos conforme a documentação pede, mas quando eu faço a requisição me retorna esse erro "The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed." <code> import requests url = "https://sandbox.melhorenvio.com.br/oauth/token" payload = { "grant_type": "authorization_code", "client_id": 3..., "client_secret": "7OoBAUBj...3RZfy0YfyC", "redirect_uri": "https://project-respponse-marlon307.vercel.app/", "code": "code" } headers = { "Accept": "application/json", "Content-Type": "application/json", "User-Agent": "AppRepponse ([email protected])" } response = requests.post(url, json=payload, headers=headers) print(response.text) </code>

Redirect_URL para inserção de frete ao carrinho!

Olá, vi em algumas integrações que é possível redirecionar o lojista para uma URL do Melhor Envio onde é carregado os dados do remetente, destinatário, produtos, pacote e forma de envio (talvez através de parâmetros da URL). Também um botão para envio do pedido de frete. Não localizei essa URL nos documentos. Podem me ajudar, por favor?
ANSWERED

Tempo estimado

Ao consultar o calculo de frete na API, o valor dos campos "delivery_range" e "custom_delivery_range" é considerado apenas dias uteis? Ou os dias do fim de semana, por exemplo, estão inclusos no valor desses campos?
ANSWERED

Logísitca reversa

Olá pessoal, tudo bom? É possível com a API fazer a logística reversa? Caso de uso: Quero permitir que o usuário faça a devolução do pedido pelo front end, sem precisar o dono da loja entrar no painel do Melhor Envio dele para fazer essa logística reversa. É possível? Eu encontrei alguns problemas no meu raciocínio por que o cliente ainda precisaria pagar pela etiqueta, mas até ai não seria um problema 100%, o link com a etiqueta que é gerado pro cliente é possível mandar pro front por meio da API? Bom, se alguém tiver alguma ideia do que posso fazer com a API em relação a logística reversa, eu agradeceria!