Pedido de visitante
Cria um pedido para quem compra sem conta, a partir do carrinho da sessão.
É o passo final do checkout de quem não tem conta: o visitante já montou o carrinho com o mesmo X-Session-ID, informou contato e endereços, e esta rota transforma o carrinho em pedido. Se o cliente estiver logado (token no cabeçalho), a mesma rota cria o pedido em nome dele e ignora os campos guest_*.
O servidor não confia nos valores do cliente: refaz os itens a partir do carrinho da sessão, recalcula frete, descontos (cupom, PIX) e impostos, e só então grava. Valores monetários são inteiros em centavos (2190 = R$ 21,90).
/api/v1/storefront/guest/ordersPúblicaCriar pedido de visitante
Cabeçalhos
X-Session-IDstringobrigatórioCorpo da requisição
guest_emailstringobrigatório@ e ..guest_namestringobrigatórioguest_phonestringpayment_methodstringobrigatóriopix, credit_card, boleto...).shipping_addressobjectobrigatórioEndereço de entrega.
first_namestringobrigatóriolast_namestringaddress_line1stringobrigatórioaddress_line2stringdistrictstringcitystringobrigatóriostatestringobrigatóriopostal_codestringobrigatóriocountrystringobrigatórioBR).phonestringcpfstringbilling_addressobjectobrigatórioshipping_address.itemsarrayproduct_id uuid, variation_id, quantity). Opcional: o padrão é o carrinho da sessão.shipping_method_iduuidcoupon_codestringcustomer_notesstringidempotency_keystringExemplo de requisição
Resposta
A resposta é o objeto do pedido, o mesmo de Consultar pedido (o exemplo acima está resumido). Todos os valores estão em centavos. customer_id vem vazio em pedido de visitante. Uma repetição com a mesma idempotency_key responde 200 com o pedido já criado.
Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | Falta guest_email ou guest_name, e-mail mal formado, carrinho vazio, ou resgate de pontos/carteira por visitante. | {"error":"guest_email is required for guest checkout"} |
| 403 | Compra de visitante desligada na loja. | {"error":"guest checkout is not enabled"} |
| 409 | items enviados diferem do carrinho do servidor. | {"error":"cart_mismatch","detail":"client items differ from server cart"} |
| 422 | E-mail ainda não verificado por código. | {"error":"email_not_verified","message":"Please verify your email before placing an order"} |
| 422 | Falha de validação do pedido (estoque, endereço, regras da loja). | {"error":"order validation failed","validation_errors":[...]} |
| 429 | Limite de requisições da família /storefront/. | {"error":"rate limit exceeded","detail":"too many requests, please try again later"} |