VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa

Checkout

Como funciona a sessão de checkout da vitrine, em que ordem chamar cada etapa, o que cada erro significa e o mapa de todas as rotas.

O checkout transforma um carrinho em um pedido. Em vez de enviar tudo de uma vez, o comprador percorre uma sessão de checkout: você abre a sessão a partir do carrinho, grava o endereço, escolhe o frete e o pagamento, aplica descontos e, por fim, fecha o pedido. A cada passo a API recalcula os valores no servidor e devolve a sessão atualizada, então a tela sempre mostra o total que será cobrado.

Esta seção serve a qualquer front-end que monte o próprio checkout (site, app, quiosque). O checkout padrão da vitrine da Venddor usa exatamente estas rotas.

Pontos principais
  • A sessão tem um id próprio (UUID) devolvido por POST /checkout. Todas as outras rotas levam esse id no caminho ({sessionId}). A sessão dura 2 horas desde a criação.
  • Quem abre a sessão é o dono dela. Cliente logado: Authorization: Bearer. Visitante: o mesmo X-Session-ID usado no carrinho. Outro chamador recebe 404 checkout session not found, nunca 403.
  • Dinheiro é inteiro em centavos. O total vem sempre do servidor: o que você manda como valor (por exemplo shipping_cost) é ignorado.
  • Fechar o pedido (/place) é idempotente se você mandar o cabeçalho Idempotency-Key. Sem ele, um clique duplo pode virar duas tentativas.
  • O pedido final é validado de novo: estoque, preço, frete, pagamento, cupom e pedido mínimo. Uma mudança de preço entre o carrinho e o fechamento devolve 409.

Como funciona

address→shipping→payment→review→pedido

O campo step da sessão acompanha o andamento. Ele é informativo: avança sozinho quando você grava o endereço, o frete e o pagamento, e você pode chamar as etapas em outra ordem ou repeti-las.

stepSignificadoQuem avança
addressSessão recém-criada, sem endereço.POST /checkout
shippingEndereço e CPF/CNPJ gravados, falta o frete.PUT .../address
paymentFrete escolhido, falta o pagamento. Carrinho só com itens digitais pula direto para cá depois do endereço.PUT .../shipping
reviewPagamento escolhido. Pronta para validar e fechar.PUT .../payment
  1. Abra a sessão

    Iniciar o checkout com o cart_id. Visitantes informam também guest_email.

  2. Grave endereço, frete e pagamento

    As três etapas em ordem. Chame GET /checkout/{sessionId} para saber quais fretes e pagamentos a loja oferece para este carrinho e endereço.

  3. Aplique descontos, se houver

    Cupom e vale-presente.

  4. Valide e feche

    Validar mostra os problemas sem criar nada. Fechar o pedido cria o pedido e esvazia o carrinho.

Conceitos-chave

Visitante e cliente logado

O checkout de visitante (guest checkout) pode ser desligado pela loja. A opção aparece como allow_guest_checkout nas configurações do checkout. Com ela desligada, abrir a sessão sem login devolve 403 guest checkout is not enabled. O visitante precisa informar guest_email; guest_name e guest_phone são opcionais.

O total é calculado pelo servidor

total = subtotal + frete + impostos acrescidos - descontos - desconto PIX - vale-presente + ajuste do meio de pagamento + juros do parcelamento. Cada etapa recalcula tudo. Os campos discount, catalog_discount, b2b_discount, state_discount e pix_discount detalham de onde vem o abatimento. state_discount pode ser negativo (o preço da região é maior que o do catálogo).

Pedido de vários sellers

Se o carrinho tem produtos de mais de um seller (lojista), o fechamento cria um pedido pai e um sub-pedido por seller. O frete pode ser escolhido por seller com vendor_selections (As três etapas).

Erros em português

Os erros desta seção saem em dois formatos. Rotas de etapa respondem {"error": "texto em inglês"}. O fechamento do pedido responde códigos estáveis em inglês (price_changed, otp_required) e, quando há uma frase para o comprador, a message vem em português e assim permanece nas duas línguas desta documentação.

Rotas

MétodoCaminhoPara que serveAutenticação
POST/api/v1/storefront/checkoutAbrir a sessão a partir do carrinhoCliente ou visitante
GET/api/v1/storefront/checkout/{sessionId}Ler a sessão com fretes e pagamentos disponíveisCliente ou visitante
PUT/api/v1/storefront/checkout/{sessionId}/addressGravar endereço e CPF/CNPJCliente ou visitante
PUT/api/v1/storefront/checkout/{sessionId}/shippingEscolher o freteCliente ou visitante
PUT/api/v1/storefront/checkout/{sessionId}/paymentEscolher o pagamentoCliente ou visitante
POST/api/v1/storefront/checkout/{sessionId}/couponAplicar cupomCliente ou visitante
DELETE/api/v1/storefront/checkout/{sessionId}/couponRemover cupomCliente ou visitante
POST/api/v1/storefront/checkout/{sessionId}/gift-certificateAplicar vale-presenteCliente ou visitante
DELETE/api/v1/storefront/checkout/{sessionId}/gift-certificateRemover vale-presenteCliente ou visitante
POST/api/v1/storefront/checkout/{sessionId}/validateValidar sem criar o pedidoCliente ou visitante
POST/api/v1/storefront/checkout/{sessionId}/placeFechar o pedidoCliente ou visitante

Erros comuns

  • Mandar o X-Session-ID errado. O visitante que abriu a sessão com um identificador e consulta com outro recebe 404 checkout session not found. Reuse o mesmo valor do carrinho.
  • Esquecer o CPF. O endereço exige cpf (CPF ou CNPJ válido), mesmo para visitante. Sem ele: 400 cpf is required.
  • Tentar fechar sem as três etapas. Faltando endereço, frete ou pagamento o fechamento responde 400 com shipping address is required, shipping method is required ou payment method is required. Carrinho só digital dispensa o frete.
  • Enviar o valor do frete. shipping_cost no corpo é descartado: o servidor cota o frete de novo. Use o id devolvido em available_shipping.
  • Fechar sem Idempotency-Key. Um segundo clique durante o processamento pode devolver 409 order_in_progress ou cart_already_ordered. Gere uma chave por tentativa de compra e reaproveite em reenvios.
  • Deixar a sessão envelhecer. Depois de 2 horas a sessão some e as rotas devolvem 404. Abra outra a partir do mesmo carrinho.

Próximos passos

Iniciar o checkout
Abra a sessão e leia as opções disponíveis.
Endereço, frete e pagamento
As três etapas obrigatórias.
Validar e fechar
Crie o pedido com segurança contra reenvio.
Anterior
Recuperar carrinho abandonado
Próxima
Iniciar e ler o checkout
Nesta página
  • Como funciona
  • Conceitos-chave
  • Visitante e cliente logado
  • O total é calculado pelo servidor
  • Pedido de vários sellers
  • Erros em português
  • Rotas
  • Erros comuns
  • Próximos passos