Referências Multibanco dinâmicas no Drupal Commerce: o Commerce ifthenpay 3.0 chegou
Em 2018 lançámos o Commerce ifthenpay, o módulo que trouxe as referências Multibanco ao Drupal Commerce. Sete anos depois, publicamos a versão 3.0.0: a maior evolução do módulo desde então, com referências Multibanco dinâmicas geradas pela API da ifthenpay, reenvio de pagamentos MB WAY e suporte completo a Drupal 10 e 11.
O problema silencioso das referências geradas localmente
Uma referência Multibanco tem 9 dígitos, e o algoritmo clássico de geração local reserva apenas 4 deles para o número da encomenda. Funciona na perfeição até à encomenda 9999. A partir daí, o número tem de ser comprimido para caber, e é aqui que a matemática se torna inimiga da loja.
A versão 2.x mitigava o problema distribuindo os números de encomenda por 9000 combinações possíveis. Parece muito, mas o paradoxo dos aniversários é implacável: bastam cerca de 112 referências em aberto ao mesmo tempo para haver 50% de probabilidade de duas encomendas diferentes partilharem exatamente a mesma referência. Numa loja com movimento, isso significa pagamentos que podem ser atribuídos à encomenda errada, ou nunca reconciliados. E o pior é que o problema é invisível: tudo parece funcionar, até ao dia em que um cliente paga e a encomenda dele continua "por pagar".
A solução: referências geradas pela ifthenpay
A versão 3.0.0 introduz um novo modo no gateway Multibanco: em vez de calcular a referência localmente, o módulo pede-a à API REST da ifthenpay, usando a MB Key da conta. As diferenças são estruturais:
- O número da encomenda vai por inteiro (até 25 caracteres): sem truncagem, sem compressão, sem colisões;
- Cada transação recebe um identificador único, e a confirmação do pagamento é validada contra ele;
- As referências podem ter prazo de validade (de 1 dia a 2 anos), algo impossível no modo local;
- Existe um ambiente de testes (sandbox) para validar a integração sem movimentos reais.
O modo local continua disponível para retrocompatibilidade, e as referências antigas em aberto continuam a ser reconciliadas depois da mudança: as lojas migram sem janela de indisponibilidade.
MB WAY: promessa cumprida, e mais
Quando escrevemos sobre a versão 2.x, o MB WAY era "desenvolvimento futuro". A 3.0.0 fecha o ciclo: além do pagamento por push no checkout, os clientes podem reenviar o pedido de pagamento a partir do histórico de encomendas, sem repetir o checkout, e a equipa da loja pode disparar um push diretamente do backoffice. Menos encomendas abandonadas por um push que expirou no telemóvel.
Pronto para o futuro do Drupal
A 3.0.0 suporta Drupal 10 e Drupal 11, e Commerce 2.x e 3.x. O módulo passou a correr integração contínua no drupal.org, com mais de 50 testes automáticos a validar cada alteração nas duas versões do Drupal, e as releases estáveis estão cobertas pela política de avisos de segurança da comunidade.
Se a sua loja usa a versão 2.x, recomendamos a atualização: a linha 2.x deixou de ser suportada e não inclui as proteções contra colisões de referências.
composer require 'drupal/commerce_ifthenpay:^3.0'
Precisa de ajuda com pagamentos no Drupal Commerce?
A Bloomidea desenvolve e mantém o Commerce ifthenpay e constrói lojas Drupal Commerce para o mercado português há mais de uma década: Multibanco, MB WAY, cartões, Stripe e PayPal, com integração de ERP e logística. Fale connosco sobre o seu projeto.