Closed quasemineira closed 5 years ago
Implementei isso dessa forma:
add_filter( 'woocommerce_my_account_my_orders_actions', array( &$this, 'imprimir_boleto_vindi'), 50, 2 );
public function imprimir_boleto_vindi( $actions, $order ) {
if ( in_array($order->status, ['on-hold', 'pending']) && $order->get_payment_method() == 'vindi-bank-slip' ) {
$link_boleto = get_post_meta($order->ID, 'vindi_wc_invoice_download_url', true);
$actions['imprimir-boleto'] = array(
'url' => $link_boleto,
'name' => 'Imprimir Boleto'
);
}
return $actions;
}
Caso deseje adicionar um botão imprimir boleto na lista de assinaturas também (com base no último pedido da assinatura), utilize esse código:
add_action( 'woocommerce_my_subscriptions_actions', array( &$this, 'action_imprimir_boleto'), 10 );
function imprimir_boleto_vindi_assinatura($subscription){
if ( in_array($subscription->status, ['on-hold', 'pending']) && $subscription->get_payment_method() == 'vindi-bank-slip' ) {
$related_orders = $subscription->get_related_orders();
$order_id = reset( $related_orders );
$order = wc_get_order( $order_id );
if ( in_array($order->status, ['on-hold', 'pending']) && $order->get_payment_method() == 'vindi-bank-slip' ){
$link_boleto = get_post_meta($order->ID, 'vindi_wc_invoice_download_url', true);
echo "<a href='$link_boleto' class='button print'>Imprimir Boleto</a>";
}
}
}
Implementei isso dessa forma:
add_filter( 'woocommerce_my_account_my_orders_actions', array( &$this, 'imprimir_boleto_vindi'), 50, 2 ); public function imprimir_boleto_vindi( $actions, $order ) { if ( in_array($order->status, ['on-hold', 'pending']) && $order->get_payment_method() == 'vindi-bank-slip' ) { $link_boleto = get_post_meta($order->ID, 'vindi_wc_invoice_download_url', true); $actions['imprimir-boleto'] = array( 'url' => $link_boleto, 'name' => 'Imprimir Boleto' ); } return $actions; }
Aqui não funcionou e deu erro :(
Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file in ..../functions.php on line 279
Fatal error: Exception thrown without a stack frame in Unknown on line 0
É que eu tirei o código de um plugin que fiz, pra funcionar no functions.php vc precisa mudar um pouco, ficando assim:
add_filter( 'woocommerce_my_account_my_orders_actions', 'imprimir_boleto_vindi', 50, 2 );
function imprimir_boleto_vindi( $actions, $order ) {
if ( in_array($order->status, ['on-hold', 'pending']) && $order->get_payment_method() == 'vindi-bank-slip' ) {
$link_boleto = get_post_meta($order->ID, 'vindi_wc_invoice_download_url', true);
$actions['imprimir-boleto'] = array(
'url' => $link_boleto,
'name' => 'Imprimir Boleto'
);
}
return $actions;
}
Deu super certo, obrigada!
A integração da Vindi não exibe o boleto para o cliente fazer download ou visualizar no painel "Minha conta" do Woocommerce, após a finalização da compra.
Muitas vezes ele não faz o download do boleto imediatamente após a compra e não tem como pegar o boleto pelo painel, apenas nos e-mails da Vindi.
Acontece que o e-mail das notificações vai com o domínio da Vindi e para muitos clientes acaba caindo na caixa de spam e segundo que agora como o boleto bancário tem que ser registrado a cliente não consegue pagar na hora e acaba não salvando no computador ou no celular.
Eu queria que a integração disponibilizasse o boleto ou pelo menos o link da fatura na conta do cliente dentro do painel "Minha conta" do Woocommerce, assim como ocorre em vários outros meios de pagamento como o pagseguro, o mercado pago e etc.