O plugin tem integração nativa com 20 gateways — para qualquer outro, {payment_url} cai na URL de checkout do WooCommerce. Para devolver o link direto do boleto/Pix de um gateway custom (ou de um gateway não listado), use os filtros de pagamento.
Os dois filtros
| Filtro | Quando dispara |
|---|---|
wc_whatsapp_pending_orders_get_payment_data |
Quando o gateway do pedido não está na lista de integrações nativas. Você é a última chance de retornar uma URL custom. |
wc_whatsapp_pending_orders_payment_data |
Sempre que um gateway nativo está integrado, depois do plugin extrair os dados. Útil para sobrescrever ou enriquecer o que ele já achou. |
Estrutura de dados
Os dois filtros recebem um array com no mínimo:
[
'method_name' => 'Boleto Bancário', // título do gateway no pedido
'payment_url' => 'https://...', // URL do pagamento
]
Você retorna o array modificado. Pode adicionar chaves extras (elas não vão pra mensagem por padrão, mas podem ser usadas em filtros como wc_whatsapp_pending_orders_placeholders).
Exemplo: gateway custom
Suponha que você desenvolveu um gateway interno chamado meu-gateway-pix que salva o link do QR Code do Pix no meta _meu_gateway_pix_qrcode_url:
add_filter(
'wc_whatsapp_pending_orders_get_payment_data',
function ( $defaults, $order ) {
if ( 'meu-gateway-pix' !== $order->get_payment_method() ) {
return $defaults;
}
$url = $order->get_meta( '_meu_gateway_pix_qrcode_url' );
if ( $url ) {
$defaults['payment_url'] = $url;
}
return $defaults;
},
10,
2
);
Agora {payment_url} para pedidos meu-gateway-pix retorna a URL do QR Code direto, em vez de cair no checkout do WooCommerce.
Exemplo: alterar URL de gateway nativo
Suponha que você usa o Mercado Pago Ticket (gateway nativo woo-mercado-pago-ticket) mas quer trocar a URL pelo link curto do dashboard do MP:
add_filter(
'wc_whatsapp_pending_orders_payment_data',
function ( $args, $order ) {
if ( 'woo-mercado-pago-ticket' !== $order->get_payment_method() ) {
return $args;
}
$args['payment_url'] = 'https://www.mercadopago.com.br/payments/' . $order->get_meta( '_mercadopago_payment_id' );
return $args;
},
10,
2
);
Exemplo: combinar dois gateways
Site usa PagSeguro para boleto e Mercado Pago para Pix. Você quer que {payment_url} para Pix retorne uma página própria que mostra o QR Code:
add_filter(
'wc_whatsapp_pending_orders_get_payment_data',
function ( $defaults, $order ) {
$method = $order->get_payment_method();
if ( 'pagseguro' === $method ) {
// o nativo já trata; deixa passar
return $defaults;
}
if ( 'mercado-pago-pix' === $method ) {
$defaults['payment_url'] = home_url( '/qr-code/?order=' . $order->get_id() );
}
return $defaults;
},
10,
2
);
Diferença entre _get_payment_data e _payment_data
┌──────────────────────────────────────────────────────────┐
│ Pedido com gateway 'pagseguro' (nativo, com Boleto) │
│ │
│ Plugin extrai URL do meta 'URL de pagamento.' │
│ ↓ │
│ Aplica filtro 'wc_whatsapp_pending_orders_payment_data' │
│ ↓ │
│ {payment_url} substituído na mensagem │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ Pedido com gateway 'qualquer-outro' (não nativo) │
│ │
│ Plugin tem só URL padrão de checkout │
│ ↓ │
│ Aplica filtro 'wc_whatsapp_pending_orders_get_payment_data' │
│ ↓ │
│ {payment_url} substituído na mensagem │
└──────────────────────────────────────────────────────────┘
Se você está adicionando um gateway novo, use wc_whatsapp_pending_orders_get_payment_data. Se está customizando um existente, use wc_whatsapp_pending_orders_payment_data.
Dica: filtre por método para evitar regressão
Sempre cheque o payment_method do pedido antes de modificar. Se você retornar a URL custom incondicionalmente, pode quebrar pedidos de gateway diferente.