Skip to main content
Um único formato de objeto flui por todo o SDK. É o que getCart() retorna, o que cart_loaded e cart_updated entregam ao seu handler e o que um bloco Custom code recebe.
Todo valor monetário está na unidade menor da moeda (centavos para USD), nunca uma string formatada. 5779 é $57.79. Use formatMoney para exibi-lo.

O carrinho

itemCount nem sempre é a soma de items. items espelha o carrinho real do Shopify, incluindo linhas de complemento que o drawer oculta, como shipping protection. itemCount é o número voltado ao comprador que corresponde ao badge do carrinho. Para “quantas coisas o comprador escolheu”, use itemCount; para iterar sobre as linhas que o carrinho está renderizando, use items.Duas coisas ficam totalmente fora de items: linhas ocultadas com setHidden, e os filhos de bundle, que se movem para a âncora. Ambos ainda contam para os totais do carrinho, que vêm diretamente do Shopify.

Linhas do carrinho

Cada entrada em items, e o item em item_added e item_removed:
properties pode conter entrada fornecida pelo comprador, como o campo de texto personalizado de um formulário de produto. Renderize-o como texto, nunca como HTML bruto.

Identificando uma linha

Use key para qualquer coisa que atue sobre uma linha, e variantId ou productId para qualquer coisa que identifique um produto:
A mesma variante pode aparecer em várias linhas quando as propriedades diferem. Duas canecas gravadas com textos de gravação diferentes são duas linhas compartilhando um mesmo variantId. É por isso que as ações recebem key.

Preços em uma linha

Três preços fáceis de confundir:

Bundles

Quando linhas são agrupadas em um bundle, a linha âncora carrega um objeto bundle. Os filhos são incorporados a ela e não aparecem mais em items por conta própria. Veja Agrupar linhas de bundle de outro app para saber como o agrupamento é configurado. Cada filho carrega key (null para um componente nativo), title, variantTitle, quantity, perAnchorQty, imageUrl, finalLinePrice, originalLinePrice e compareAtPrice.

Planos de assinatura

O plano ativo de uma linha é sellingPlan, ou null para uma compra única. Para uma resposta sobre o carrinho inteiro, leia hasSubscriptionItems em vez de varrer as linhas você mesmo, já que ele também conta linhas de complemento que items apresenta mas itemCount ignora:
Os planos disponíveis em uma linha, os que aparecem no seletor, não estão no objeto de carrinho. Modele-os com registerSubscriptionOptionsTransform e registerDefaultSubscriptionOptionSelector.

Para onde ir agora

  • Ações: leia e altere o carrinho.
  • Eventos: de onde este objeto vem.
  • Hooks: adicione seus próprios dados a uma linha com um enricher.
  • Casos de uso: soluções completas que leem esses campos.