Resolver problemas
Encomendas não confirmadas após um pagamento com Redsys
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
- Procure a operação no Portal de Administração da Redsys pelo número da encomenda, comerciante e terminal.
- Verifique o URL de notificação configurado e o seu resultado exato. Anote a hora e qualquer erro.
- 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_Responsesegundo 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
- Como resolver o erro cURL 60 de certificado SSL no WordPress Como diagnosticar e resolver o erro cURL 60 do WordPress sem desativar a verificação de certificados...
- Aprender a depurar um erro do WordPress Explica como ler um erro fatal do WordPress, distinguir o que demonstra das suas possíveis causas e...
- Ativar o registo de erros do PHP a partir do ficheiro .htaccess Configure o .htaccess para registar temporariamente os erros PHP fora de public_html, sem os revelar...
- Ativar o registo e a apresentação de erros do PHP Guarde os erros do PHP num ficheiro error_log ou mostre-os no ecrã para encontrar a causa de uma pág...
Algo não bate certo ou mudou? Diga-nos e revemos.