A validação de estoque na página de pagamento resolve um caso específico: o cliente atrasa o pagamento de um pedido pendente, o produto vende pra outra pessoa nesse meio tempo, e quando o cliente original abre o link de pagamento, ele tenta pagar por algo que não existe mais.
Quando essa opção está ativa, o plugin checa o estoque imediatamente antes do pagamento ser processado. Se o produto saiu do estoque, o pagamento é bloqueado e uma mensagem é exibida ao cliente.
Quando vale ativar
Faz mais sentido quando você tem prazos de cancelamento longos. Se o boleto cancela só em 3 dias, há uma janela enorme em que o estoque pode ter mudado. A validação fecha essa brecha.
Faz menos sentido se todos os seus prazos de cancelamento são curtos (Pix em 5 minutos, cartão em 30) — nesse cenário o cancelamento automático já cobre o caso.
A própria descrição na UI deixa claro: "Por padrão, isso não acontece." Ative explicitamente quando precisar.
Como ativar
- Vá em WooCommerce → Configurações → Pagamento.
- Role até a seção Controle avançado de estoque.
- Marque Validar estoque na página de pagamento.
- Salve.
Como funciona por dentro
A validação roda no hook woocommerce_before_pay_action, que dispara quando o cliente confirma o pagamento de um pedido na URL /checkout/order-pay/.
O plugin pula a checagem em três casos:
- O pedido já teve estoque reduzido anteriormente (
_reduced_stockpresente). - O produto não tem gestão de estoque ativada.
- O produto não exige envio (produto virtual sem necessidade de estoque físico).
Pra cada item elegível, ele compara a quantidade pedida com o estoque atual. Se a quantidade pedida supera o disponível, o pagamento é cancelado e uma mensagem é exibida ao cliente.
Mensagem padrão
A mensagem padrão menciona o produto e a quantidade indisponível. Você pode customizá-la com o filtro wcsrm_not_enough_stock_message:
add_filter( 'wcsrm_not_enough_stock_message', function( $message, $product, $item, $order ) {
return sprintf(
'Desculpe! O produto "%s" não está mais disponível na quantidade pedida (%d). Entre em contato com a loja.',
$product->get_name(),
$item->get_quantity()
);
}, 10, 4 );
Esse snippet vai num plugin de funções customizadas ou no functions.php do tema filho. Mais exemplos em Personalizando o plugin.
E se o cliente fechou o navegador no meio?
A validação só dispara no momento do pagamento. Se o cliente abandona a página antes de clicar em "pagar", o pedido continua pendente até ser cancelado pelo prazo configurado em Cancelamento por método de pagamento ou Cancelamento por dias.