Comunidade
"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?
Posted by Hellyson R. Parteka 9 months ago
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.
Posted by Jean Fernandine Santos 10 months ago
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?
Posted by Rogerio Coelho 11 months ago
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": "?????"
}
Posted by Plinio 11 months ago
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...
Posted by Celso about 1 year ago
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
Posted by Maria Beatriz da Silva Souza about 1 year ago
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>
Posted by Marlon Ramos over 1 year ago
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?
Posted by Rogério Queiroz over 1 year ago
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?
Posted by Ulysses Ferreira over 2 years ago
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!
Posted by Antonio Machado de Lima over 2 years ago