Comunidade
Erro ao adicionar um frete da LATAM no carrinho
Ao tentar adicionar um frete da LATAM no carrinho eu recebo o seguinte erro: "Envios sem solicitação de coleta requerem uma unidade LATAM Cargo válida selecionada".
Então eu acessei "<https://melhorenvio.com.br/api/v2/me/shipment/agencies"> para listar as agências, mas não encontrei nenhuma da LATAM, como eu resolvo isso?
Posted by Valdir 9 months ago
como obter access_token
Iniciei agora a integração para inicialmente somente obter o calculo de fretes, fiz o cadastro na sand box, porem estou tendo problemas em ter um exemplo de como ter o access_token, poderiam me ajudar? se tiver algo em C# me ajudaria bastante.
Posted by Marcio Santos 10 months ago
"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 10 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 12 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 about 1 year 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 about 1 year 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 over 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 almost 2 years ago