Checkout & Pagamentos

Como desativar o Check / Money order no checkout do Magento 2

É o método de pagamento mais inútil que existe numa loja brasileira, e vem ativo em toda instalação nova. Custa dois minutos tirar antes que alguém use.

Por Roger Takemiya · Publicado em · 4 min de leitura

Auditoria de loja nova que eu faço sempre: abrir o checkout com um produto barato no carrinho e ver a lista de pagamentos. Em umas quatro de cada dez, lá está "Check / Money order" — cheque ou ordem de pagamento, coisa de loja americana dos anos 90.

Não é bug, é o padrão do Magento. Quem instalou nunca desligou, e o pedido que entra por ali nasce em pending, sem pagamento nenhum, ocupando estoque.

O que vem ligado de fábrica

Abrindo o etc/config.xml do Magento_OfflinePayments e do Magento_Payment, o retrato é esse:

CaminhoPadrãoNome no checkout
payment/checkmo/active1Check / Money order
payment/free/active1No Payment Information Required
payment/banktransfer/active0Bank Transfer Payment
payment/cashondelivery/active0Cash On Delivery
payment/purchaseorder/active0Purchase Order

Confira o que está valendo na sua loja de uma vez só:

php bin/magento config:show payment | grep "/active"

A saída vem no formato caminho - valor. Esse comando lê tanto o que está no banco quanto o padrão do core, então serve mesmo para loja onde ninguém nunca salvou essa tela.

Desligue e trave o campo

Pelo admin é Stores > Configuration > Sales > Payment Methods, mas eu prefiro pela CLI porque dá para travar:

php bin/magento config:set --lock-env payment/checkmo/active 0
php bin/magento cache:clean config

O --lock-env faz duas coisas: grava o valor no app/etc/env.php e deixa o campo cinza no admin, para ninguém religar sem querer. É o que a própria descrição do comando diz.

Tem um porém que morde em pipeline de deploy: o env.php quase nunca está no git, e ambiente que regenera esse arquivo perde o travamento. Nesse caso use o irmão dele:

php bin/magento config:set --lock-config payment/checkmo/active 0

Esse grava no app/etc/config.php, que é versionado e vale para todas as instalações do projeto. Só lembre que valor em config.php entra na loja pelo app:config:import durante o deploy.

Não desligue o "free" junto

O payment/free também vem ativo. No admin ele não se chama pelo nome que aparece no checkout: procure por Zero Subtotal Checkout. É comum a pessoa desligar os dois de uma vez achando que está limpando a lista. Não faça isso sem entender o que ele é.

Olhando o isAvailable() do Magento\Payment\Model\Method\Free, o método só fica disponível quando o total do pedido, arredondado, é zero. Ou seja: cliente nenhum vê esse método num pedido normal.

Ele existe para os casos em que não há o que cobrar — cupom de 100%, brinde, produto virtual liberado numa promoção. Desligue o free e o cliente que aplicou o cupom de 100% chega no checkout e não encontra forma de pagamento nenhuma. O carrinho fica travado e você só descobre pelo suporte, semanas depois.

Então a regra é simples: checkmo sai, free fica. E se a sua loja realmente nunca vai ter pedido de valor zero, aí sim dá para desligar — mas teste um cupom de 100% no ambiente de homologação antes de subir.

Já os outros três (banktransfer, cashondelivery, purchaseorder) vêm desligados. Se algum estiver ligado na sua loja, alguém ligou de propósito ou um módulo mexeu — vale entender o porquê antes de simplesmente desligar.

Perguntas rápidas

Já tenho pedidos antigos feitos por Check / Money order. Desligar o método some com eles?

Não. Desativar só tira o método do checkout para pedidos novos. O histórico continua igual e o pedido antigo segue faturável e cancelável normalmente.

Desliguei e o método continua aparecendo. O que falta?

Na maior parte das vezes é cache de configuração. Rode cache:clean config e teste numa aba anônima. Se persistir, confira se o valor não foi salvo em outro escopo, com config:show usando --scope=websites e o código do site.

Serve para desligar métodos de gateways também?

Serve, o caminho segue o mesmo padrão: payment, barra, código do método, barra, active. Só descubra o código certo do módulo antes, porque cada gateway usa o seu, e alguns têm um código separado para cartão, Pix e boleto.

Pra conferir na fonte

  1. Check / Money order — Adobe Experience League
  2. Use the command line to set configuration values — Adobe Experience League
  3. Magento_OfflinePayments etc/config.xml — GitHub
  4. Magento_Payment etc/config.xml — GitHub

pagamento checkout config

Precisa de um orçamento? Ficarei feliz em ajudar. Clique Aqui