O carrinho lateral mostra o brinde ou pacote pelo preço integral
Se o carrinho lateral mostrar um brinde ou item de pacote pelo preço integral enquanto o total do carrinho e o checkout estiverem corretos, verifique como o carrinho lateral lê e atualiza os preços. Campos de preço Liquid mais antigos podem omitir descontos automáticos, e o carrinho lateral também pode manter uma cópia desatualizada do carrinho. Este artigo explica como diferenciar esses casos.
Verificação rápida: o total está correto?
Antes de alterar qualquer coisa, confirme onde o preço incorreto realmente aparece:
- Se o preço por linha no carrinho lateral parecer errado, com preço integral em um brinde ou item com desconto, mas o subtotal do carrinho na parte inferior do carrinho lateral e o total do checkout estiverem corretos, trata-se apenas de um problema de exibição. Continue lendo.
- Se o próprio total do checkout estiver errado, esse é um problema diferente, por exemplo, outro app de descontos acumulando descontos ou o desconto não correspondendo. Este artigo não aborda esse caso.
O Bundlex não renderiza o carrinho lateral. O desconto é aplicado por uma função de desconto do carrinho da Shopify que é executada no checkout, e o Bundlex não pode reescrever a exibição do preço por linha do tema.
Por que o carrinho lateral mostra o preço integral
O Bundlex aplica seu desconto por meio de uma função de desconto do carrinho da Shopify. Essa função distribui o desconto nas linhas do carrinho, o que a Shopify trata como uma forma de desconto automático.
O problema está na forma como alguns temas renderizam cada linha do carrinho. Carrinhos laterais mais antigos ou personalizados exibem o preço da linha usando os campos Liquid line_item.price e line_item.line_price. A própria documentação da Shopify sinaliza esses campos como obsoletos porque eles não refletem descontos automáticos. Assim, o carrinho lateral imprime o preço original, sem desconto, mesmo que a Shopify tenha registrado corretamente o desconto nessa linha.
O resultado que os clientes veem: cada linha do pacote mostra o mesmo preço unitário integral, e uma linha gratuita, o brinde, pode parecer cobrada. Enquanto isso, o subtotal e o checkout estão corretos, pois são calculados com base nos valores com desconto.
Confirme com /cart.js
Você pode comprovar que o desconto está sendo aplicado corretamente, independentemente do que o carrinho lateral exibe:
- Na vitrine, adicione o pacote, ou a oferta com o brinde gratuito, ao carrinho.
- No navegador, abra
/cart.jsnessa mesma loja, por exemplo, acessehttps://yourstore.com/cart.js. - Encontre a linha afetada e observe
final_priceefinal_line_price.
Em uma linha de brinde gratuito funcionando corretamente, você verá algo como final_price: 0 e final_line_price: 0, com o desconto listado em discounts dessa linha, o título da oferta e o valor com desconto. Verifique quais campos o seu carrinho lateral realmente renderiza. A obsolescência descrita acima se aplica a line_item.price e line_item.line_price do Liquid; uma resposta /cart.js por si só não identifica a fonte de dados do carrinho lateral.
Interpretando o resultado:
final_price/final_line_pricerefletem o desconto, mas o carrinho lateral mostra o preço integral. Verifique tanto os campos renderizados pelo carrinho lateral quanto se ele é atualizado depois que o carrinho muda.final_pricenão reflete o desconto. Nesse caso, o problema não está na exibição do carrinho lateral. Verifique o lado da função do carrinho, por exemplo, se o pacote recebeu a tag corretamente, se o metafield do desconto está atualizado ou se regras de elegibilidade do cliente, como B2B ou tags de cliente, se aplicam.
A solução: use final_price e final_line_price
Se o snippet Liquid do carrinho lateral usar esses campos obsoletos para o preço atual, substitua-os pelos equivalentes final_:
line_item.pricetorna-seline_item.final_priceline_item.line_pricetorna-seline_item.final_line_price
Os campos final_ incluem descontos por linha. Se o seu drawer usar JavaScript, verifique também se ele renderiza uma resposta atualizada do carrinho ou seções atualizadas do tema após as alterações. Substituir um campo de preço não corrige um estado desatualizado.
Como o valor de
pricepor linha é um atributo Liquid estático, o Bundlex não pode reescrevê-lo por você. Os dados do desconto já estão presentes emfinal_price; o tema só precisa lê-los.
Se você usa um preço de comparação nativo
Se suas variantes também tiverem um compare_at_price do Shopify, como um texto riscado do tipo "50% de desconto", esse selo é renderizado pelo tema a partir dos dados da variante e não tem relação com o desconto do Bundlex. Depois de mudar para os campos final_, o preço da linha refletirá o desconto do Bundlex, enquanto o preço de comparação riscado continuará sendo exibido conforme a configuração do seu tema.
O outro caso: uma linha de brinde restante a US$ 0
Um sintoma relacionado, mas separado: o cliente escolhe uma oferta que inclui um brinde gratuito e depois reduz a quantidade do item principal abaixo do limite da oferta. A linha principal passa corretamente para um nível inferior, mas uma linha de brinde gratuito permanece no carrinho mostrando US$ 0.
Veja por quê. Quando a quantidade fica abaixo do limite, a função do carrinho para corretamente de aplicar o desconto e remove a alocação. Porém, uma função de carrinho do Shopify não pode remover uma linha do carrinho (não há uma operação de remoção disponível para ela). Para um brinde gratuito configurado como uma variante de catálogo de US$ 0, não há preço para o qual "voltar", então a linha do brinde que deixou de atender aos requisitos simplesmente permanece em US$ 0.
Para lidar com isso, o Bundlex inclui uma limpeza executada pelo widget após uma alteração no carrinho, que remove a linha de brinde órfã. Há condições para que ela possa ser executada:
- Somente brindes gratuitos. Extras pagos são tratados pela integridade do pacote, não por esta limpeza.
- Caminhos de alteração do carrinho compatíveis. Enquanto um widget completo do Bundlex estiver ativo, a limpeza trata alterações no carrinho feitas por fetch e XHR. Nas páginas que executam somente o script de limpeza de brindes, sem um widget, a interceptação cobre apenas alterações feitas por fetch. O comportamento de atualização do tema ainda pode afetar o que o drawer exibe.
- A limpeza é feita da melhor forma possível. Se uma etapa falhar, a linha do brinde poderá continuar visível até a próxima interação com o carrinho.
Depois de remover uma linha, o Bundlex dispara eventos de atualização do carrinho para solicitar que o tema seja renderizado novamente. No Dawn e nos temas gratuitos do Shopify baseados nele, o Bundlex também redesenha o drawer do carrinho, a página do carrinho e o próprio contador do ícone do carrinho. Não existe um único evento de atualização do carrinho implementado por todos os temas do Shopify, portanto, em outros temas que não escutam esses eventos, o drawer pode permanecer desatualizado até a próxima interação. O ponto mais importante: os cálculos do carrinho estão sempre corretos. O cliente não será cobrado pela linha de US$ 0 que permanece, e o total do checkout estará correto independentemente do que o drawer mostrar momentaneamente.
Resumo
- O drawer mostra o preço cheio, mas o total e o checkout estão corretos: verifique se há campos de preço Liquid obsoletos ou dados desatualizados do carrinho.
- Verifique com
/cart.js:final_price/final_line_pricerefletem o desconto. - Corrija no tema: altere esses campos para
final_priceefinal_line_price. - Uma linha de brinde de US$ 0 que permanece após a redução da quantidade é esperada, pois o Shopify não pode remover linhas. O Bundlex faz a limpeza em temas compatíveis, e o preço está sempre correto no checkout.
Este artigo foi útil?
Seu feedback nos ajuda a melhorar nossa documentação.