Resolver problemas

Encomendas não confirmadas após um pagamento com Redsys

Revisto a 4 min de leitura gateways de pagamento SSL

Não marque a encomenda como paga pelo regresso do comprador à loja. A confirmação deve vir da notificação servidor a servidor da Redsys, validada pela aplicação.

Localizar primeiro a notificação

  1. Procure a operação no Portal de Administração da Redsys pelo número da encomenda, comerciante e terminal.
  2. Verifique o URL de notificação configurado e o seu resultado exato. Anote a hora e qualquer erro.
  3. Correlacione essa hora com o registo de acesso do site e o log do módulo de pagamento. Um teste a partir do próprio alojamento não demonstra que a Redsys conseguisse alcançar o URL.

Configuração segura da notificação

Use uma versão mantida da integração da Redsys para PrestaShop, WooCommerce ou a aplicação correspondente. Configure o URL de notificação com HTTPS e um certificado válido como medida de segurança da Hostsuar; não baixe o retorno para HTTP para esconder uma falha. Se a notificação não chegar, reveja a partir de uma rede externa o URL, o certificado, a cadeia, o DNS, a firewall e os registos do mesmo instante.

A aplicação não deve marcar uma encomenda como paga pela simples visita do cliente ao URL de retorno. Antes de confirmar o pagamento, o callback do servidor deve:

  • Verificar a assinatura criptográfica da Redsys com a chave configurada e rejeitar qualquer assinatura inválida.
  • Verificar que o número da encomenda, o comerciante, o terminal, a moeda, o tipo de operação e o montante exato coincidem com a operação pendente armazenada localmente.
  • Interpretar o código Ds_Response segundo a tabela e o tipo de operação da Redsys antes de alterar o estado da encomenda.
  • Impedir repetições: registe o identificador da operação e processe cada notificação de forma idempotente, sem cobrar nem confirmar duas vezes a mesma encomenda.

Faça uma compra de teste depois de atualizar ou mudar o módulo e confirme nos registos que tanto a notificação HTTPS como todas estas validações são concluídas corretamente.

Se a Redsys mostra a cobrança mas a loja não a confirma

Não peça ao comprador que pague outra vez sem confrontar a operação. Verifique primeiro o seu resultado na Redsys e o estado local para evitar uma segunda cobrança. Um HTTP 200 do callback apenas comprova a sua resposta web; o registo do módulo deve confirmar também a validação e a mudança de estado.

Se o portal permitir reenviar a notificação, utilize essa função apenas depois de corrigir a causa e confirmar que a integração processa repetições sem duplicar efeitos. Não construa uma notificação manual nem marque a encomenda com base em parâmetros do URL do navegador.

Este URL conserva a referência histórica a certificados SNI, mas uma falha atual não deve ser atribuída ao SNI sem um erro TLS que o demonstre. Consulte a documentação de integração da Redsys e conserve em separado as chaves e o ambiente de testes e de produção; nunca inclua a chave de assinatura num ticket ou numa captura de ecrã.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.