Pular para o conteúdo principal
Técnico

Validação de checkout no Shopify: como barrar pedidos inválidos com Shopify Functions

Jahangir AlamMay 3, 20269 min read

A validação de checkout do Shopify usa Shopify Functions para aplicar regras de negócio no servidor, dentro do próprio motor de checkout do Shopify. Diferente de soluções em JavaScript no navegador ou de gambiarras no tema, a validação de checkout não pode ser contornada — ela roda em toda tentativa de compra, incluindo Shop Pay, Apple Pay, Google Pay e vitrines headless. O OrderRules usa essa API para aplicar limites de pedido, tetos por cliente e limites de gasto no momento da compra.

O que é validação de checkout?

Shopify Functions é uma tecnologia mais recente do Shopify que permite a apps escreverem lógica no servidor, executada dentro da infraestrutura do Shopify. Quando você adiciona uma function de validação de checkout à sua loja, ela passa a fazer parte do próprio motor de checkout — não é um serviço separado, nem um script de tema, nem uma chamada a uma API de terceiros.

O que a torna diferente:

  • No servidor: a function roda nos servidores do Shopify, não no navegador do cliente. O lojista a controla por completo.
  • Roda em todos os caminhos: seja no checkout web, no Shop Pay, no Apple Pay, no Google Pay ou em uma vitrine headless, valem as mesmas regras de validação.
  • Não pode ser contornada: o cliente não consegue desativar o JavaScript, alterar o DOM ou montar uma requisição que fuja da validação. Ela é parte do próprio fluxo de checkout.
  • Rápida: as functions rodam no runtime WebAssembly do Shopify em menos de 5 milissegundos. Sem impacto perceptível na velocidade do checkout.

A validação de checkout intercepta especificamente a etapa de pagamento. Antes de o Shopify processar um pagamento, sua function é executada. Se o pedido viola alguma regra, o Shopify barra o checkout e exibe uma mensagem de erro personalizada. Se todas as regras passam, o checkout segue normalmente.

Por que a validação no navegador falha

Muitos lojistas do Shopify tentam limitar pedidos usando código do tema ou apps de terceiros que injetam JavaScript na página do carrinho. Essas abordagens parecem boas na teoria e falham na prática — e o lojista descobre tarde demais.

JavaScript pode ser desativado. Um cliente pode desligar o JavaScript no navegador e pular sua validação por completo. A maioria dos navegadores modernos facilita isso.

Gambiarras no tema quebram nas atualizações do Shopify. Quando o Shopify lança uma nova versão do seu tema, o código personalizado pode parar de funcionar ou se comportar de forma inesperada. Você fica preso mantendo remendos.

Pedidos rascunho passam por cima do código do tema. Se o lojista (ou um administrador) cria um pedido direto pela ferramenta de rascunho do Shopify, a página do carrinho nunca é carregada. A validação do tema não roda.

Vitrines headless não usam o tema. Se você construiu uma vitrine personalizada com Hydrogen ou um app React próprio, o código de tema do Shopify não existe. Você precisaria reconstruir a lógica de validação no front-end — e ela continuaria no navegador.

Pedidos de POS não são afetados. Se você vende em uma loja física usando o Shopify POS, a página do carrinho não existe. O código do tema é irrelevante.

Veja uma comparação do que realmente funciona:

MétodoCheckout webShop PayApple PayGoogle PayPOSHeadlessÀ prova de atalhos
JavaScript no tema
Scripts na página do carrinho
Shopify Functions

A validação de checkout é o único método que cobre todos os caminhos e não pode ser contornado.

Como o OrderRules usa as Shopify Functions

O OrderRules se conecta à API de validação de checkout. Quando o cliente chega à etapa de pagamento, nossa function roda e confere todas as regras de pedido configuradas:

  • Limites diários/semanais/mensais: limitam o número total de pedidos que a loja pode receber em uma janela de tempo.
  • Limites por produto: restringem quantas unidades de um produto específico podem ser pedidas por cliente ou por pedido.
  • Limites de pedido por cliente: limitam quantos pedidos um único cliente pode fazer (vitalício ou dentro de um período).
  • Limites de gasto: barram pedidos que passem de um valor máximo (total ou por cliente).
  • Horário de funcionamento: impede que pedidos sejam feitos fora do seu horário.
  • Quantidade mínima de pedido: garante que os pedidos atinjam uma contagem mínima de unidades.

Se qualquer regra falha, o checkout é barrado. Nenhum pagamento é tentado. O cliente vê uma mensagem de erro clara e simpática, explicando o motivo e o que fazer em seguida.

Se todas as regras passam, a function retorna em silêncio e o Shopify segue com o processamento normal do pagamento.

Veja como isso fica nos bastidores:

// Simplified pseudocode — actual implementation is more complex
function validateCheckout(input) {
  const cart = input.cart;
  
  // Check daily order limit
  const ordersToday = countOrdersToday();
  if (ordersToday >= dailyLimit) {
    return {
      errors: [{
        message: "We've reached our daily order limit. Please try again tomorrow!"
      }]
    };
  }
  
  // Check per-customer limit
  const customerOrders = countCustomerOrders(cart.buyerIdentity.email);
  if (customerOrders >= perCustomerLimit) {
    return {
      errors: [{
        message: "You've reached your order limit. Contact support for exceptions."
      }]
    };
  }
  
  // All rules passed
  return { errors: [] };
}

Quando erros são retornados, o Shopify os exibe no checkout e impede o pagamento. Quando um array de erros vazio é retornado, o checkout segue normalmente.

O que o cliente vê

A validação de checkout é invisível quando as regras passam — o cliente simplesmente conclui a compra normalmente.

Quando uma regra é violada, o cliente vê isto na etapa de pagamento:

Painel do OrderRules comparando a aplicação por Shopify Functions com apps de script de carrinho — Shop Pay, Apple Pay, Google Pay e URLs diretas passam por cima de scripts de carrinho, mas são aplicados pelas Shopify Functions

Não é uma página quebrada. Não é um erro 500 críptico. É uma mensagem clara e simpática:

"Atingimos nosso limite diário de pedidos. Tente de novo amanhã!"

ou

"Você já fez 3 pedidos esta semana. Nosso limite é 2. Tente novamente na semana que vem."

Essas mensagens são personalizáveis — você as define no painel do OrderRules, e elas aparecem no idioma do cliente (se a sua loja for multilíngue).

O cliente não consegue seguir para o pagamento. Não consegue contornar a mensagem. Ele simplesmente espera até que a regra permita o pedido, ou fala com o suporte para uma exceção.

Mensagem de validação de checkout vista pelo cliente

Detalhes técnicos

Algumas observações técnicas que importam para desenvolvedores:

Limite de functions do Shopify: você pode implantar até 25 functions de validação por loja (é um limite da API do Shopify). O OrderRules usa uma única function consolidada, então isso não é uma restrição.

Desempenho: as functions rodam no runtime WebAssembly do Shopify e executam em menos de 5 milissegundos. É rápido o bastante para que o cliente não perceba nenhuma latência adicional no checkout.

Compatibilidade: a validação de checkout funciona com:

  • Online Store 2.0 (o sistema de temas mais recente do Shopify)
  • Shopify Plus (planos empresariais)
  • Vitrines headless construídas com Hydrogen ou frameworks próprios
  • POS (vendas na loja física)
  • Shop Pay e checkouts acelerados

Sem domínios personalizados ou lista de IPs: a function é implantada e gerenciada pelo Shopify. Você não precisa se preocupar com infraestrutura, escala ou confiabilidade.

Configuração sem código

Apesar do poder técnico das Shopify Functions, o OrderRules cuida de toda a implementação por você.

Você não precisa:

  • Escrever código de function
  • Fazer deploy pela CLI do Shopify
  • Gerenciar binários WebAssembly
  • Monitorar logs de function

Você só precisa:

  1. Instalar o OrderRules pela Shopify App Store
  2. Abrir o painel do OrderRules
  3. Definir suas regras de pedido (limites diários, tetos por cliente, limites de gasto)
  4. Salvar

É isso. A validação de checkout fica ativa na hora. Sem programar. Sem deploy. Sem esperar por uma build da CLI.

Saiba mais: como definir limites de pedido no Shopify

Quando usar validação de checkout e quando usar outros métodos

Use validação de checkout para:

  • Regras rígidas que nunca podem ser quebradas (mínimos legais, restrições de capacidade, limites de estoque)
  • Regras que valem em todos os canais (web, mobile, POS, headless)
  • Regras que não podem ser contornadas nem driblado

Exemplos: "só produzimos 100 unidades por semana e precisamos aplicar isso com rigor" ou "a regulamentação do setor limita a 5 pedidos por cliente por mês".

Use mensagens no nível do tema para:

  • Avisos leves e gatilhos de urgência
  • Contadores de estoque ao vivo ("Restam só 3!")
  • Mensagens promocionais ("Corra, o limite de pedidos aumenta na sexta!")
  • Design visual específico da sua marca

Exemplos: um aviso dizendo "estamos com estoque baixo" ou "o limite de pedidos sobe em 2 dias".

Boa prática: use os dois. O OrderRules entrega a validação de checkout (a regra rígida), e você pode acrescentar mensagens complementares no tema para criar urgência e informar o cliente antes que ele bata no limite. Se um cliente tentar passar do limite, ele recebe um erro simpático. Se você quiser reduzir a frustração, avise antes com mensagens na página.

Saiba mais: mensagens dinâmicas na loja

Sem gambiarras, sem dor de cabeça

A validação de checkout resolve um problema que as abordagens no navegador nunca conseguem resolver de verdade: o lojista precisa confiar que suas regras de pedido são realmente aplicadas, em todo pedido, não importa como o cliente chegue ao checkout.

Com as Shopify Functions, essa confiança vem embutida. As regras rodam nos servidores do Shopify. Elas não podem ser desativadas, alteradas nem contornadas. E a implementação é tão transparente que o lojista nem precisa pensar nos detalhes técnicos — ele só define as regras e segue em frente.

Para lojas que administram capacidade, controlam compras por cliente ou aplicam limites de gasto, a validação de checkout é a solução mais confiável disponível no Shopify.

Leitura relacionada

Tenha validação de checkout no servidor hoje

Instale o OrderRules pela Shopify App Store — a validação de checkout está incluída em todos os planos, gratuito e Pro.

Pronto para assumir o controle dos seus pedidos?

Experimente o OrderRules grátis