Requisição inválida ao tentar simular frete via API

Bom dia, tudo bem com voces?

Estou com a seguinte situação. Estou tentando fazer uma simulação simples de frete, nesta simulação, será consultado uma tabela de frente ou regras de frete, e ela ira simplesmente retornar se existe entrega disponível para região ou se não existe.

Ao consultar a documentação, encontrei uma API que simula isto, porém ao enviar as informações, ele me retorna um erro 400 e uma mensagem dizendo "A requisição é inválida".

Eu tentei procurar soluções mas não estou encontrando nada. Alguém pode me ajudar?

Segue abaixo o código que fiz, utilizando os exemplos que estão na API.

function simularFrete(d){ var data = d; var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); xhr.open("POST", "/api/checkout/pub/orderforms/simulation"); xhr.setRequestHeader("content-type", "application/json"); xhr.setRequestHeader("accept", "application/json"); xhr.send(data); } var id = $('#___rc-p-id').val(); var requestExample = { "items":[ { "id": id, "quantity": 1, "seller": "1" } ], "country": "BRA" }; simularFrete(requestExample);

Isso acontece pois esse element é gravado o id do produto, não o do sku:

$('#___rc-p-id').val()

você tem uma variável global chamada skuJson, aconselho a se basear nela.

Bom dia, tudo bem?

Como faço para usar ela? Não conheço esta variável. Seria através de algum controle?

basta digitar skuJson no console na página de produto que você vai conseguir ter as infos que retorna

Bom dia, beleza?

Encontrei a função aqui na qual me basear e fiz um novo teste. Ele ainda retorna o erro 400. No caso agora o código foi ajustado para esta forma:

function simularFrete(d){ var data = d; var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); //xhr.open("POST", "https://apiexamples.vtexcommercestable.com.br/api/checkout/pub/orderforms/simulation"); xhr.open("POST", "/api/checkout/pub/orderforms/simulation"); xhr.setRequestHeader("content-type", "application/json"); xhr.setRequestHeader("accept", "application/json"); xhr.send(data); } var requestExample = { "items":[ { "id": skuJson.skus[0].sku, "quantity": 1, "seller": skuJson.skus[0].seller } ], "country": "BRA" }; simularFrete(requestExample);

Existe alguma outra melhoria que eu possa estar fazendo para rodar adequadamente?