• Instalei e ativei o plugin do PagBank em meu site, já está ativo em produção
    Estou tentando utiliza-lo mas ao concluir o checkout dá vários erros
    Tanto na opção de cartão de crédito como pagar no pagbank

    Segue a instalação que tenho:
    Informações do servidor:
    Microsoft-IIS/10.0
    Versão do WooCommerce:
    10.2.2

    Ambiente do servidor
    Informações do servidor:
    Microsoft-IIS/10.0
    Server architecture:
    Windows NT 10.0 AMD64
    Versão do PHP:
    8.4.4
    Tamanho máximo para post no PHP:
    8 MB
    Limite de tempo do PHP:
    30
    Máximo de entrada de variáveis (max input vars) do PHP:
    1000
    Versão do cURL:
    8.10.1, OpenSSL/3.0.15
    SUHOSIN instalado:

    Versão do MySQL:
    5.7.43-log
    Tamanho máximo de upload:
    2 MB

    Tenho instalados os plugins
    Mercado Pago, Opex Pix e Paypal
    Todos funcionam corretamente, sem erros

    Em relação às opções do plugins do PagBank:
    Na opção da cartão de crédito tem que tentar umas 3 vezes até que para que seja aceito
    Sempre dá o erro:
    40002 - Valor inválido. (charges[0].payment_method.card.number)
    às vezes outra mensagem aparece ( uma de falha em encriptar o cartão, outra sobre a validade, etc )
    Após algumas tentativas, ocorre o erro informando que a compra pode ter sido concluida…
    O email é enviado e a compra concluída, mas não vai para a página de conclusão , que é padrão dos demais plugins
    Portanto o cliente não sabe que foi concluída, causando problema

    Outra questão é que quando a compra é estornada, após criar o reembolsado, a compra tambem é cancelada
    Haveria alguma maneira de após reembolsada ficasse com status apenas de reembolsada, pois cancelada é para
    compra que nunca foi paga e não cancelada

    Na opção de pagar no pagbank , são outros erros, e não redireciona para o pagbank
    O erro: Campo com valor inválido. Por favor, verifique a documentação. (items[0].name)
    depois de algumas tentativas vi que na lista de pedidos um pedido foi gerado com pagamento pendente

    Se possível após o pedido houvesse a opção de ir para a página padrão de conclusão do pedido que é:
    $order->get_checkout_order_received_url()
    Poderia ser adicionada esta opção para a conclusão

    The page I need help with: [log in to see the link]

Viewing 6 replies - 16 through 21 (of 21 total)
  • Thread Starter Roberto Valente

    (@rvof)

    Mesmo desativando totalmente o plugin o erro na conclusão acontece.

    Plugin Author Elias Júnior

    (@eliasjnior)

    @rvof certo, nesse caso vamos precisar marcar um alinhamento durante uma chamada para conseguir identificar melhor o problema. Há alguma outra questão influenciando o carregamento correto do plugin.

    Entraremos em contato através do email.

    Att.

    Thread Starter Roberto Valente

    (@rvof)

    Solucionado a questão do load dos scripts e do CSS, foram colocados nas exceções. Porem continua com erros na conclusão do pedido. Colocando em modo debug, segue abaixo os erros do LOG e recomendação de solução:

    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data(): Implicitly marking parameter $payment_token as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 359
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data(): Implicitly marking parameter $encrypted_card as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 359
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data(): Implicitly marking parameter $card_holder as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 359
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data(): Implicitly marking parameter $cvv as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 359
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data(): Implicitly marking parameter $transfer_of_interest_fee as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 359
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data_for_empty_value_subscription(): Implicitly marking parameter $payment_token as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 464
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data_for_empty_value_subscription(): Implicitly marking parameter $encrypted_card as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 464
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data_for_empty_value_subscription(): Implicitly marking parameter $card_holder as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 464
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data_for_empty_value_subscription(): Implicitly marking parameter $cvv as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 464
    [14-Oct-2025 12:08:49 UTC] PHP Deprecated: PagBank_WooCommerce\Presentation\ApiHelpers::get_credit_card_payment_data_for_empty_value_subscription(): Implicitly marking parameter $transfer_of_interest_fee as nullable is deprecated, the explicit nullable type must be used instead in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Presentation\ApiHelpers.php on line 464
    [14-Oct-2025 12:08:49 UTC] PHP Warning: Undefined variable $transfer_of_interest_fee in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Gateways\CreditCardPaymentGateway.php on line 842

    Correção:
    if (isset($transfer_of_interest_fee)) {
    // usa a variável
    } else {
    $transfer_of_interest_fee = 0; // valor padrão
    }

    [14-Oct-2025 12:08:52 UTC] PHP Warning: Undefined variable $card_payment_token in F:\inetpub\ingressoplusnetbr\Web\wp-content\plugins\pagbank-for-woocommerce\src\core\Gateways\CreditCardPaymentGateway.php on line 886
    Correção:
    if (isset($card_payment_token)) {
    // usa a variável
    } else {
    $card_payment_token = ”; // valor padrão
    }

    [14-Oct-2025 12:08:52 UTC] status was called incorrectly. Order properties should not be accessed directly. Backtrace: require(‘wp-blog-header.php’), require_once(‘wp-includes/template-loader.php’), do_action(‘template_redirect’), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::do_wc_ajax, do_action(‘wc_ajax_checkout’), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::checkout, WC_Checkout->process_checkout, WC_Checkout->process_order_payment, PagBank_WooCommerce\Gateways\CreditCardPaymentGateway->process_payment, WC_Order->payment_complete, WC_Order->save, WC_Order->status_transition, do_action(‘woocommerce_order_status_processing’), WP_Hook->do_action, WP_Hook->apply_filters, ht_processando, WC_Order->update_status, WC_Order->save, WC_Order->status_transition, do_action(‘woocommerce_order_status_completed’), WP_Hook->do_action, WP_Hook->apply_filters, ht_pagamento_completo, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong. This message was added in version 3.0.

    Esse aviso que você está recebendo no log do WordPress/WooCommerce não é exatamente um erro fatal, mas sim um aviso de compatibilidade. Ele aparece porque algum código (provavelmente no seu tema ou em um plugin, como o gateway do PagBank) está acessando propriedades do objeto WC_Order de forma direta, algo que foi descontinuado desde o WooCommerce 3.0.
    🔎 O que significa a mensagem

    • “Order properties should not be accessed directly” → significa que em vez de usar $order->status ou $order->id, o código deveria usar os métodos getters oficiais:
    • $order->get_status() em vez de $order->status
    • $order->get_id() em vez de $order->id
    • $order->get_total() em vez de $order->order_total
    • O WooCommerce mantém a classe WC_Abstract_Legacy_Order apenas para compatibilidade, mas sempre dispara o aviso wc_doing_it_wrong quando detecta acesso incorreto.
      Onde está acontecendo
      Pelo backtrace que você trouxe, o problema surge dentro de funções ligadas ao gateway de pagamento PagBank:
      PagBank_WooCommerce\Gateways\CreditCardPaymentGateway->process_payment
      ht_processando
      ht_pagamento_completo

    Ou seja, provavelmente o plugin do PagBank ou algum hook personalizado (ht_processando, ht_pagamento_completo) está acessando propriedades do pedido de forma incorreta. Como corrigir

    • Verifique os hooks personalizados
      Se você ou seu desenvolvedor adicionaram funções como ht_processando ou ht_pagamento_completo, revise o código e substitua acessos diretos:
      // Errado
      $status = $order->status;
      $id = $order->id;

    // Correto
    $status = $order->get_status();
    $id = $order->get_id();

    Thread Starter Roberto Valente

    (@rvof)

    Quando colocado em modo debug, como os erros não são apresentados, consigo concluir.
    Mas aí vem outro problema. O usuário na maioria das vezes n]ao está logado e a página do pedido concluido não pode ser apresentada
    Se possível após o pedido houvesse a opção de ir para a página padrão de conclusão do pedido que é:
    $order->get_checkout_order_received_url()
    Poderia ser adicionada esta opção para a conclusão

    Plugin Author Elias Júnior

    (@eliasjnior)

    Olá, @rvof.

    Em produção não é indicado deixar errors e warnings ativados. Porém, nenhum desses erros é fatal, portanto não deverá estar bloqueando o seu checkout.

    Além disso, após o pagamento com sucesso, o usuário é redirecionado para get_return_url, que é o padrão do WooCommerce e direciona para a página order-received, que internamente é obtida por essa função get_checkout_order_received_url.

    O que pode estar acontecendo é que essa URL não é recebida pelo frontend por exibir os warnings em produção, quebrando o redirecionamento do WooCommerce após o checkout.

    De qualquer forma, realizei um teste em sua loja e notei que há uma resposta com erro 500. Peço que compartilhe conosco através do email o arquivo de log pagbank-credit-card e um fatal-error para que possamos verificar o erro obtido.

    Att.

    Thread Starter Roberto Valente

    (@rvof)

    Log enviado por email. Como informei, o erro não permite ir para a página de conclusão. Demais questões como cancelamento e load de scripts estão solucionados. Apenas esta. Por via das duvidas testeis mais 2 gateways de pagamento ( que não uso ) apenas para verificação. E ambos tambem funcionaram.

Viewing 6 replies - 16 through 21 (of 21 total)

You must be logged in to reply to this topic.