Integrar com o seu site
Receber pedidos de um site externo
O que o endereço /tpl/[id]/order aceita quando o formulário está em outro domínio.
Dá para receber um pedido a partir de um site seu, fora da loja. O endereço é o mesmo do template ativo:
POST /tpl/ID-DO-TEMPLATE/order
Não é uma API com chave. É o formulário de pedido, com as mesmas regras da vitrine.
O que funciona hoje
Foi conferido no código da rota:
- O navegador pode enviar o formulário de outro domínio. A resposta JSON e a resposta de pré-vôo (
OPTIONS) trazemAccess-Control-Allow-Origin: *. Um<form method="post">clássico também navega, sem precisar de CORS. - Métodos aceitos no pré-vôo:
POSTeOPTIONS. Cabeçalhos:Content-TypeeAccept. - O corpo é formulário, até 60 KB.
storeSlugtem de ser o slug da loja dona daquele template.- O template do id na URL tem de ser o template ativo da loja. Senão a resposta é: “Esta loja não está recebendo pedidos por aqui.”
- Token de prévia não autoriza pedido. Se
returnTofor o endereço de prévia, a resposta é: “Pedidos não são enviados na prévia.”
O que não volta para o seu site
returnTo só aceita a página do produto desta loja (/produto/slug ou /loja/slug/produto/slug). Qualquer outro endereço, inclusive o do seu site, é trocado pela home da loja.
Depois do POST o comprador segue na Center House: página de pagamento da loja, Checkout Pro do Mercado Pago, ou a volta com ?pedido=ok. Não há como mandar o navegador de volta ao domínio externo pelo returnTo.
No JSON, use url (pagamento) ou voltar (pedido sem cobrança online) e faça location.assign. Veja o exemplo em Formulário de pedido.
O que você precisa ter em mãos
- O id do template ativo (está na URL do editor,
/painel/templates/ID). - O slug da loja e o id do produto.
- Mercado Pago ou Asaas conectados, se a venda for paga na hora. Sem isso, o pedido cai no painel para você combinar por fora — desde que o produto não seja entrega automática. Produto com key, arquivo, comando de servidor ou modelo Roblox não é aceito sem pagamento online.
O HTML servido pelo próprio template não pode postar para outro domínio: a loja publicada isola o formulário (form-action só para ela mesma). Essa trava é da página da loja. Um site seu, hospedado fora, não está dentro dessa trava e pode postar neste endereço.
Não existe chave de API pública para criar pedido. Webhook de saída também não. Os dois estão em Em breve.