Skip to main content

Cart actions

No tema, use useCorvexCart() ou storefront.cart.*. Não monte fetch manual. cartId coincide com o checkout da sessão — checkoutUrl vem pronto após o primeiro ensure / addItem.

Hook recomendado

Sessão persistida em localStorage: corvex_storefront_cart_{storeId}.

Contexto de página (page.cart)

No template Carrinho (/cart), a plataforma injeta:
useCorvexCart() e page.cart leem o mesmo carrinho (deduplicado via storefront.cart.ensure()).

Cliente storefront.cart

Helper para montar body de addItem:

Regras importantes

  • Não envie preço manual — backend resolve preço, título e imagem.
  • Envie productVariantId quando o produto tem variantes.
  • removeItem / updateQuantity usam items[n].id (UUID da linha), não productId.
  • Se GET retornar CART_NOT_FOUND, o SDK recria a sessão automaticamente.
  • Preços na API são números decimais na moeda do carrinho. Use unitPriceMoney / linePriceMoney ou formatMoney. Não prefixe R$ à mão.
  • Se addItem com productVariantId receber erro interno ou variante inválida, o cliente tenta de novo sem o id da variante (cart.js). A linha pode entrar sem a variante escolhida. Isso é comportamento do SDK, não uma garantia de estoque.

Erros comuns


Provider

CorvexProvider já inclui CorvexCartProvider. Não é necessário wrapper extra. Separação de responsabilidades:
  • Queries → catálogo (products, categories, search)
  • Actions → carrinho (storefront.cart, useCorvexCart)
Cupom não entra por storefront.cart. A validação pública é storefront.coupons.validate. O carrinho só reflete totalDiscount se a API já devolveu o desconto. Tarefas prontas, sem repetir o contrato aqui: