Como Integrar o Checkout dLocal Go no WordPress sem WooCommerce

Muitos projetos no WordPress precisam apenas processar pagamentos diretos por serviços, assinaturas simples ou infoprodutos, sem a necessidade de carregar toda a estrutura pesada do WooCommerce. Quando o público-alvo está distribuído pela América Latina e outros mercados emergentes, a dLocal Go se destaca como uma das soluções mais eficientes. No entanto, conectar essa plataforma diretamente ao núcleo do WordPress exige uma abordagem estruturada via API REST.

Por que dispensar o WooCommerce nesse cenário?

O WooCommerce é uma ferramenta robusta, mas traz consigo dezenas de tabelas no banco de dados, múltiplos scripts e um fluxo de carrinho que pode ser excessivo para quem vende apenas um serviço ou produto pontual. Ao criar uma integração direta com a API do dLocal Go, mantemos o site leve, rápido e com controle total sobre a interface de pagamento.

Arquitetura da Integração no WordPress

Para construir um checkout transparente ou redirecionado de forma segura, a arquitetura deve ser dividida em três camadas principais:

  • Frontend de Coleta: Um formulário leve (via Shortcode ou bloco customizado) que captura os dados básicos do pagador (nome, e-mail, documento).
  • Endpoint REST Intermediário: Uma rota personalizada no WordPress para processar a requisição sem expor as credenciais secretas no código do cliente.
  • Handler de Webhook: Um receptor para processar as notificações assíncronas enviadas pelo dLocal Go assim que o pagamento for aprovado ou recusado.

Passo a Passo da Implementação Técnica

1. Armazenamento Seguro de Credenciais

Nunca exponha a API Key ou o Secret Token no JavaScript. Recomenda-se armazená-los como constantes no wp-config.php ou em uma página de opções restrita a administradores:

define( 'DLOCAL_GO_API_KEY', 'sua_api_key_aqui' );
define( 'DLOCAL_GO_SECRET', 'seu_secret_aqui' );
define( 'DLOCAL_GO_URL', 'https://api.dlocalgo.com/v1/payments' );

2. Criando o Endpoint no WordPress

Utilizamos o hook rest_api_init para registrar uma rota segura no WordPress que receberá os dados do formulário e fará a comunicação com o dLocal Go:

add_action( 'rest_api_init', function () {
    register_rest_route( 'meu-checkout/v1', '/criar-pagamento', array(
        'methods'             => 'POST',
        'callback'            => 'processar_pagamento_dlocal',
        'permission_callback' => '__return_true',
    ) );
} );

3. Disparando a Requisição com wp_remote_post

Dentro da função de callback, estruturamos os dados do pedido e enviamos a requisição para a API da dLocal Go usando as funções nativas de HTTP do WordPress:

function processar_pagamento_dlocal( WP_REST_Request $request ) {
    $params = $request->get_json_params();

    $body = array(
        'amount'       => floatval( $params['valor'] ),
        'currency'     => 'BRL',
        'country'      => 'BR',
        'payment_method_flow' => 'REDIRECT',
        'payer'        => array(
            'name'  => sanitize_text_field( $params['nome'] ),
            'email' => sanitize_email( $params['email'] ),
        ),
        'notification_url' => rest_url( 'meu-checkout/v1/webhook' ),
        'success_url'      => home_url( '/obrigado' ),
        'back_url'         => home_url( '/cancelado' ),
    );

    $response = wp_remote_post( DLOCAL_GO_URL, array(
        'headers' => array(
            'Authorization' => 'Bearer ' . DLOCAL_GO_API_KEY,
            'Content-Type'  => 'application/json',
        ),
        'body'    => wp_json_encode( $body ),
        'timeout' => 30,
    ) );

    if ( is_wp_error( $response ) ) {
        return new WP_REST_Response( array( 'erro' => 'Falha na conexão com o gateway.' ), 500 );
    }

    $dados = json_decode( wp_remote_retrieve_body( $response ), true );
    return new WP_REST_Response( array( 'redirect_url' => $dados['redirect_url'] ?? '' ), 200 );
}

4. Tratamento do Webhook para Confirmação

Em implementações que realizo para projetos focados em alta conversão e estabilidade, a dependência apenas da página de retorno (redirecionamento) costuma gerar falhas caso o usuário feche a aba antes do retorno. Por isso, a validação via Webhook é indispensável para atualizar o status do pedido no banco de dados customizado ou disparar e-mails transacionais via wp_mail().

Boas Práticas de Segurança

  • Proteção contra spam e fraudes: Valide nonces do WordPress no formulário e adicione proteção de rate limit nos endpoints REST.
  • Sanitização rigorosa: Sempre passe todos os inputs por funções nativas como sanitize_text_field() e sanitize_email().
  • Logs de Erro: Registre falhas de comunicação em logs isolados para facilitar o diagnóstico de integrações sem expor dados sensíveis do cliente.

Conclusão e Próximos Passos

Integrar a API REST do dLocal Go diretamente no WordPress é a alternativa perfeita para manter uma aplicação enxuta, performática e capaz de aceitar métodos de pagamento locais em toda a América Latina.

Se você precisa implementar um checkout customizado do dLocal Go no seu WordPress com regras de negócio avançadas, segurança de dados e alta performance, entre em contato para estruturarmos uma consultoria técnica para o seu projeto.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.