O plugin já reconhece 26 gateways nativos. Pra qualquer outro, use o filtro wc_boleto_reminder_get_payment_data pra ensinar o plugin onde encontrar o link do boleto.
Estrutura do filtro
apply_filters( 'wc_boleto_reminder_get_payment_data', $args, $order );
O retorno deve ser um array com:
| Chave | Tipo | Obrigatório | Descrição |
|---|---|---|---|
payment_url |
string | sim | URL do boleto |
method_name |
string | sim | Nome amigável (placeholder {method_name}) |
expiry_time |
int (timestamp) | não | Quando o boleto vence — depois disso o plugin para de mandar lembrete |
Se o filtro retornar falsy (false, null, array vazio), o plugin não cria o lembrete pra esse pedido.
Exemplo simples
Imagine um gateway custom com slug my-gateway que guarda o link do boleto em _my_gateway_boleto_url:
add_filter( 'wc_boleto_reminder_get_payment_data', function( $data, $order ) {
if ( 'my-gateway' !== $order->get_payment_method() ) {
return $data;
}
$url = $order->get_meta( '_my_gateway_boleto_url' );
if ( empty( $url ) ) {
return $data;
}
return array(
'payment_url' => $url,
'method_name' => 'Meu Gateway',
);
}, 10, 2 );
Exemplo com expiração
Quando o gateway expõe data de vencimento, inclua expiry_time pra que o plugin pare de mandar lembrete depois do vencimento:
add_filter( 'wc_boleto_reminder_get_payment_data', function( $data, $order ) {
if ( 'my-gateway' !== $order->get_payment_method() ) {
return $data;
}
$url = $order->get_meta( '_my_gateway_boleto_url' );
$expiry = $order->get_meta( '_my_gateway_expiry' ); // 'YYYY-MM-DD'
if ( empty( $url ) ) {
return $data;
}
return array(
'payment_url' => $url,
'method_name' => 'Meu Gateway',
'expiry_time' => strtotime( $expiry . ' 23:59:59' ),
);
}, 10, 2 );
Exemplo com payload JSON
Muitos gateways guardam um payload completo (response da API) em uma única meta. Decode e extraia:
add_filter( 'wc_boleto_reminder_get_payment_data', function( $data, $order ) {
if ( 'fancy-payments-billet' !== $order->get_payment_method() ) {
return $data;
}
$payload = json_decode( $order->get_meta( '_fancy_response' ), true );
if ( empty( $payload['boleto']['link'] ) ) {
return $data;
}
return array(
'payment_url' => $payload['boleto']['link'],
'method_name' => 'Fancy Payments — Boleto',
'expiry_time' => isset( $payload['boleto']['expires_at'] )
? strtotime( $payload['boleto']['expires_at'] )
: null,
);
}, 10, 2 );
Cuidados
Confira o payment_method antes de retornar. Sem essa guarda, seu filtro afeta TODOS os gateways suportados nativamente — e quebra a detecção dos outros 26.
Se o link de pagamento depende de uma classe ou método (estilo WC_Banco_Inter::get_boleto_url), invoque a classe diretamente no filtro. Veja como o plugin lida com interboleto em includes/wc-boleto-reminder-functions.php pra inspiração.
Testar a integração
Crie um pedido de teste com seu gateway, vá em WooCommerce → Boleto Reminder e veja se o lembrete foi criado. Se não:
- Ative o Debug Log (Configuração).
- Faça um pedido novo.
- Procure logs com "Método de pagamento do pedido não é compatível" ou "Definindo crons para o pedido #...".
- Cheque o conteúdo de
wc_boleto_reminder_get_payment_data($order)em um snippet PHP:
$order = wc_get_order( 123 );
$data = wc_boleto_reminder_get_payment_data( $order );
var_dump( $data ); // Deve mostrar payment_url e method_name