Duplicidade Em Core_config_data Após Reinstalação Pagar.me No Magento 2

by Dimemap Team 72 views

Olá, pessoal! 👋 Recentemente, me deparei com um problema chato ao reinstalar o módulo da Pagar.me no Magento 2. Após todo o processo de autenticação e integração, percebi que as configurações não estavam sendo atualizadas como deveriam, mas sim duplicadas no banco de dados, especificamente na tabela core_config_data. Isso, como vocês podem imaginar, causou uma série de dores de cabeça. Vamos mergulhar nos detalhes para entender o que aconteceu e como solucionar essa questão.

O Cenário: Reinstalação e Integração Pagar.me

Primeiramente, vamos detalhar o que exatamente estava acontecendo. A situação era a seguinte:

  1. Instalação do Módulo e Integração: Tudo começa com a instalação do módulo Pagar.me no seu Magento 2 e a integração com uma loja de teste. Geralmente, isso envolve inserir as chaves de API e outras configurações necessárias para o módulo funcionar corretamente.
  2. Remoção da Integração (App) no Painel Pagar.me: Em seguida, o cenário envolvia a remoção da integração da loja de teste no painel da Pagar.me. Isso pode acontecer por diversos motivos, como testes, mudanças de ambiente ou problemas na configuração original.
  3. Nova Integração: O próximo passo era integrar novamente a loja de teste (ou a loja de produção) com as novas chaves ou configurações. A expectativa era que as configurações anteriores fossem atualizadas com as novas informações.

O Problema Crucial: Em vez de as configurações serem atualizadas, novas entradas com o mesmo path (caminho) eram adicionadas na tabela core_config_data. Imagine a bagunça! Isso significa que você tinha várias linhas com as mesmas configurações, o que levava a conflitos e outros problemas.

Passo a Passo da Reinstalação

Para facilitar a reprodução do problema e garantir que todos entendam o contexto, aqui está um passo a passo detalhado:

  1. Instale o módulo Pagar.me no seu Magento 2.
  2. Configure a integração com as chaves da sua loja de teste.
  3. Verifique se a integração está funcionando corretamente (faça um teste de compra, por exemplo).
  4. Remova a integração da sua loja de teste no painel da Pagar.me.
  5. Reconfigure a integração no Magento 2, usando as mesmas ou novas chaves.
  6. Verifique a tabela core_config_data. Você provavelmente verá as configurações duplicadas.

O Que Esperamos vs. O Que Acontece

A expectativa, ao reinstalar ou reconfigurar um módulo, é que as informações antigas sejam substituídas pelas novas. Isso é crucial para garantir que a loja continue funcionando corretamente e que as informações de pagamento estejam sempre atualizadas. No caso da Pagar.me, as configurações incluem chaves de API, que são essenciais para a comunicação com a plataforma.

O que deveria acontecer: Ao integrar novamente a loja, as configurações existentes no core_config_data deveriam ser atualizadas com as novas chaves e informações. Por exemplo, se você alterar a chave de API, a entrada correspondente no core_config_data deveria ser modificada.

O que realmente acontece: Em vez de atualizar as informações, o módulo cria novas entradas com o mesmo path. Isso significa que, se você, por exemplo, mudar a chave de API e integrar novamente, você terá duas ou mais entradas com o mesmo path referente à chave de API no core_config_data. Isso causa problemas, pois o Magento pode usar as informações antigas, a nova, ou ambas, levando a erros.

Consequências das Configurações Duplicadas

As configurações duplicadas no core_config_data podem levar a uma série de problemas.

  • Erros de Pagamento: O Magento pode usar as configurações antigas, resultando em falhas nas transações.
  • Comportamento Inesperado: O módulo pode se comportar de maneira estranha, mostrando informações incorretas ou não funcionando como esperado.
  • Dificuldade de Debug: Identificar qual configuração está sendo usada pode ser complicado, dificultando a resolução de problemas.
  • Conflitos: Em situações mais complexas, as configurações duplicadas podem gerar conflitos, especialmente se houver outras extensões ou customizações no Magento.

Possíveis Causas e Soluções

Agora, vamos tentar entender por que isso acontece e o que pode ser feito para resolver o problema.

Possíveis Causas

  1. Lógica de Atualização do Módulo: A forma como o módulo Pagar.me lida com a atualização das configurações pode ser a principal causa. Se o módulo não estiver implementando corretamente a lógica para atualizar as configurações existentes, ele pode simplesmente criar novas entradas.
  2. Problemas na Desinstalação/Reinstalação: A forma como o módulo é desinstalado e reinstalado pode não estar limpando corretamente as configurações antigas do banco de dados.
  3. Eventos e Observadores: Erros em eventos ou observadores que lidam com a configuração do módulo podem estar causando o problema. Por exemplo, um observador que é executado repetidamente pode estar criando novas entradas em vez de atualizar as existentes.

Soluções Possíveis

  1. Verifique a Lógica de Atualização do Módulo: A primeira coisa a fazer é analisar o código do módulo Pagar.me para ver como ele lida com a atualização das configurações. Procure por métodos que são responsáveis por salvar as configurações e verifique se eles estão usando a lógica correta para atualizar as entradas existentes no core_config_data.
  2. Implemente a Atualização Correta: Se o módulo não estiver atualizando as configurações corretamente, você pode precisar modificar o código para garantir que ele atualize as entradas existentes em vez de criar novas.
  3. Limpeza na Desinstalação: Certifique-se de que o módulo limpe corretamente as configurações antigas durante a desinstalação. Isso pode envolver a remoção das entradas relevantes no core_config_data.
  4. Revisão de Eventos e Observadores: Revise os eventos e observadores relacionados à configuração do módulo para identificar possíveis erros que possam estar causando a duplicação.
  5. Script de Limpeza (Solução Provisória): Uma solução temporária, mas que pode ajudar, é criar um script que limpe as configurações duplicadas no core_config_data. Este script pode ser executado manualmente sempre que o problema ocorrer. Importante: Use este script com cuidado e faça um backup do seu banco de dados antes de executá-lo.
<?php

use Magento\Framework\App\Bootstrap;
use Magento\Framework\App\Config\ScopeConfigInterface;

require __DIR__ . '/app/bootstrap.php';

$params = $_SERVER;
$bootstrap = Bootstrap::create(BP, $params);
$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get(\Magento\Framework\App\State::class);
$state->setAreaCode(\'adminhtml\');

$resource = $objectManager->get(\Magento\Framework\App\ResourceConnection::class);
$connection = $resource->getConnection();

// Defina o path das configurações duplicadas
$configPaths = [
    'pagarme/general/public_key',
    'pagarme/general/encryption_key',
    'pagarme/general/api_key',
    'pagarme/general/is_sandbox',
    // Adicione outros paths relevantes aqui
];

foreach ($configPaths as $configPath) {
    $select = $connection->select()
        ->from('core_config_data')
        ->where('path = ?', $configPath)
        ->order('config_id DESC');

    $result = $connection->fetchAll($select);

    if (count($result) > 1) {
        $firstConfigId = $result[0]['config_id'];

        for ($i = 1; $i < count($result); $i++) {
            $deleteConfigId = $result[$i]['config_id'];
            $delete = $connection->delete('core_config_data')
                ->where('config_id = ?', $deleteConfigId);
            $connection->query($delete);
            echo "Removido config_id: " . $deleteConfigId . " para path: " . $configPath . "\n";
        }
    }
}

echo "Script de limpeza concluído.\n";

Como usar o script:

  1. Salve o código: Salve o código PHP em um arquivo, por exemplo, cleanup_pagarme_config.php, dentro da sua pasta raiz do Magento.

  2. Edite o script: Dentro do script, na variável $configPaths, adicione todos os paths das configurações do módulo Pagar.me que estão duplicando. Você pode encontrar esses paths no admin do Magento ou no código do módulo.

  3. Execute o script: Execute o script via linha de comando no terminal dentro da pasta raiz do Magento. Use o comando php cleanup_pagarme_config.php.

  4. Entre em Contato com o Suporte da Pagar.me: Se você não conseguir resolver o problema por conta própria, entre em contato com o suporte da Pagar.me. Eles podem ter uma solução específica para o problema ou podem fornecer informações sobre atualizações do módulo que corrigem o problema.

Conclusão

Lidar com configurações duplicadas no core_config_data pode ser um desafio, mas com as informações certas e as ferramentas corretas, é possível resolver o problema. Espero que este guia ajude você a entender o que está acontecendo e a encontrar uma solução. Lembre-se de sempre fazer backup do seu banco de dados antes de fazer alterações e, se necessário, procure ajuda do suporte técnico. 😉

Se tiver alguma dúvida ou sugestão, deixe um comentário abaixo! 👇