Iniciar e ler o checkout
Abre uma sessão de checkout a partir de um carrinho e lê a sessão com os fretes e pagamentos que a loja oferece.
POST /checkout cria a sessão de checkout a partir de um carrinho que já tem itens. A sessão congela o ponto de partida (subtotal e descontos de catálogo) e passa a ser a fonte dos valores até o pedido ser criado. GET /checkout/{sessionId} devolve a sessão junto com os itens, os fretes disponíveis e os pagamentos disponíveis para esse carrinho e esse endereço.
Abrir a sessão não reserva estoque nem cobra nada. Se o carrinho tinha um cupom gravado (Cupons no carrinho), a API tenta aplicá-lo à sessão; se ele não vale mais, a sessão abre sem o cupom e sem erro.
Iniciar o checkout
/api/v1/storefront/checkoutAutenticadaInicia uma sessão de checkout a partir de um carrinho
Cliente logado pode omitir cart_id: a API usa o carrinho ativo dele. Visitante precisa mandar cart_id e guest_email. Antes de criar a sessão, a API confere se o carrinho é de quem chama (mesmo usuário ou mesmo X-Session-ID).
Cabeçalhos
AuthorizationstringBearer <token> do cliente logado.X-Session-IDstringContent-Typestringobrigatórioapplication/json.Corpo da requisição
cart_iduuidid de GET /cart). Obrigatório para visitante. Cliente logado pode omitir.guest_emailstringguest_namestringguest_phonestringExemplo de requisição
Resposta
Campos da resposta
iduuid{sessionId} de todas as outras rotas.tenant_iduuidcart_iduuiduser_idstringis_guestbooleantrue quando não há login.guest_emailstringshipping_addressobject|nullnull até gravar o endereço.billing_addressobject|nullshipping_method_iduuid|nullshipping_costinteger0 até escolher o frete ou quando ele é grátis.payment_methodstring|nullpix, credit_card...).subtotalintegerdiscountintegercatalog_discountintegerb2b_discountintegerstate_discountintegerpix_discountinteger0 até o PIX ser escolhido.taxintegertax_includedbooleantrue quando os preços da loja já incluem imposto: o valor é registrado, mas não somado ao total.totalintegercoupon_codestring|nullfree_shippingbooleantrue quando o cupom concede frete grátis.gift_cert_amountintegercpfstringdocument_typestringcpfcnpjcreated_atstringA resposta traz outros campos opcionais que só aparecem quando se aplicam (line_ids, tax_breakdown, promised_delivery_date, installments, e afins). Eles são omitidos quando vazios.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Visitante sem guest_email | {"error":"guest_email is required for guest checkout"} |
| 400 | Sem cart_id e sem login | {"error":"cart_id is required"} |
| 400 | Cliente logado sem carrinho ativo | {"error":"no active cart found for user"} |
| 400 | Carrinho sem itens | {"error":"cart is empty"} |
| 400 | Corpo que não é JSON | {"error":"invalid request body"} |
| 403 | Loja com checkout de visitante desligado | {"error":"guest checkout is not enabled"} |
| 404 | cart_id inexistente ou que não é do chamador (outro usuário ou outro X-Session-ID) | {"error":"cart not found"} |
Ler a sessão e as opções
/api/v1/storefront/checkout/{sessionId}AutenticadaConsulta a sessão de checkout com as opções de envio e pagamento disponíveis
Chame depois de gravar o endereço para obter os fretes que atendem aquele CEP. A lista de pagamentos já considera o seller dos itens, o grupo do cliente e o valor do pedido. A resposta não é guardada em cache.
Parâmetros de caminho
sessionIduuidobrigatórioPOST /checkout.Cabeçalhos
AuthorizationstringBearer <token> do dono da sessão.X-Session-IDstringExemplo de requisição
Resposta
Campos da resposta
sessionobjectPOST /checkout (aqui encurtada).itemsarrayavailable_shippingarrayavailable_shipping[].iduuidshipping_method_id em Escolher o frete.available_shipping[].namestringavailable_shipping[].codestringavailable_shipping[].costintegeravailable_shipping[].estimated_daysinteger0 quando a loja não informa.available_shipping[].free_shippingbooleantrue quando o frete é grátis para este pedido.available_shipping[].service_codestringservice_code.available_paymentarrayavailable_payment[].iduuidavailable_payment[].namestringavailable_payment[].codestringpayment_method em Escolher o pagamento.change_linesarrayErros
| Status | Quando | Corpo |
|---|---|---|
| 404 | Sessão inexistente, expirada, de outra loja ou de outro dono | {"error":"checkout session not found"} |