• Erro no Sentry:

    Issues

    PM-STORE-Y

    See What’s New

    ErrorExceptionWarning: Trying to access array offset on null

    Events

    Users

    Level: Warning

    Unhandled

    |

    New

    |

    /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer

    21ResolveArchive

    Priority

    Med

    AssigneeAll Envs14D

    Events

    2

    User

    1012Jan 25 5:00 AMFeb 1 5:00 AMReleases

    100%

    <bdi>https://store.pericialmed.com/</bdi&gt;100%2804:14d:4cd8:a33c:591c:8f50:e3d6:8dd0100%3.5.1100%production

    All TagsEvents

    in this issue

    • First
    • Last
    • Recommended

    All Events6ab02208

    2 hours ago

    |

    JSON

    Jump to:

    HighlightsStack TraceTraceTagsContextReplay

    ?

    2804:14d:4cd8:a33c:591c:8f50:e3d6:8dd0

    Chrome

    132

    Windows

    Linux

    6.8.0-49-generic

    php

    8.4.3

    3.5.1

    production

    HighlightsEdit

    handled

    handled

    no

    level

    level

    warning

    url

    url

    https://store.pericialmed.com/

    Trace: Trace ID

    795d3276188e43ff992638d5511fbc35

    Stack TraceMost RelevantFull Stack TraceNewestErrorExceptionWarning: Trying to access array offset on nullmechanismgenerichandledfalsecode0

    • … tent/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer at line 522Set up Code MappingIn App
    • … tent/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getCustomer at line 431In App
    • Called from: … yments-for-woocommerce/vendor/pagarme/ecommerce-module-core/src/Kernel/Services/OrderService.php in Pagarme\Core\Kernel\Services\OrderService::extractPaymentOrderFromPlatformOrderShow 1 more frame
    • /wp-content/plugins/pagarme-payments-for-woocommerce/src/Controller/Orders.php in Woocommerce\Pagarme\Controller\Orders::create_order at line 64In App
    • /wp-content/plugins/pagarme-payments-for-woocommerce/src/Model/Checkout.php in Woocommerce\Pagarme\Model\Checkout::process at line 132In App
    • /wp-content/plugins/pagarme-payments-for-woocommerce/src/Controller/Gateways/AbstractGateway.php in Woocommerce\Pagarme\Controller\Gateways\AbstractGateway::process_payment at line 202In App
    • /wp-content/plugins/woocommerce/includes/class-wc-checkout.php in WC_Checkout::process_order_payment at line 1083In App
    • /wp-content/plugins/woocommerce/includes/class-wc-checkout.php in WC_Checkout::process_checkout at line 1324In App
    • /wp-content/plugins/woocommerce/includes/class-wc-ajax.php in WC_AJAX::checkout at line 520In App
    • Called from: /wp-includes/class-wp-hook.php in WP_Hook::apply_filtersShow 2 more frames
    • /wp-content/plugins/woocommerce/includes/class-wc-ajax.php in WC_AJAX::do_wc_ajax at line 96In App
    • Called from: /wp-includes/class-wp-hook.php in WP_Hook::apply_filtersShow 3 more frames
    • /wp-blog-header.php in require at line 19In App
    • /index.php at line 17In App

    Session Replay

    Trace Preview

    View Full Trace

    0.00ms

    10.00s

    20.00s

    30.00s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    0s

    1 hidden span, 28 hidden issues

    WarningWarning: Undefined array key “home_phone” ErrorException /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer

    WarningWarning: Trying to access array offset on null ErrorException /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer

    WarningWarning: Undefined array key “home_phone” ErrorException /wp-content/plugins/pagarme-payments-for-woocommerce/src/Helper/Utils.php Woocommerce\Pagarme\Helper\Utils::build_customer_phones_from_order /wp-content/plugins/pagarme-payments-for-woocommerce/src/Helper/Utils.php in Woocommerce\Pagarme\Helper\Utils::build_customer_phones_from_order

    WarningWarning: Trying to access array offset on null ErrorException /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer /wp-content/plugins/pagarme-payments-for-woocommerce/src/Concrete/WoocommercePlatformOrderDecorator.php in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer

    WarningWarning: Undefined property: FastCGI_Purger::$nginx_helper_admin ErrorException /wp-content/plugins/nginx-helper/admin/class-fastcgi-purger.php FastCGI_Purger::purge_amp_version /wp-content/plugins/nginx-helper/admin/class-fastcgi-purger.php in FastCGI_Purger::purge_amp_version

    WarningWarning: Trying to access array offset on null ErrorException /wp-content/plugins/nginx-helper/admin/class-fastcgi-purger.php FastCGI_Purger::purge_amp_version /wp-content/plugins/nginx-helper/admin/class-fastcgi-purger.php in FastCGI_Purger::purge_amp_version

    WarningWarning: Attempt to read property “options” on null ErrorException /wp-content/plugins/nginx-helper/admin/class-fastcgi-purger.php FastCGI_Purger::purge_amp_version /wp-content/plugins/nginx-helper/admin/class-fastcgi-purger.php in FastCGI_Purger::purge_amp_version

    21 hidden issues

    HTTP RequestFormattedcurl

    POST/<small>store.pericialmed.com</small>

    Body_wp_http_referer/?wc-ajax=update_order_reviewbilling_address_1Rua Itajaíbilling_address_2billing_cityGuaíbabilling_cnpj08.998.845/0001-20billing_companyDEFFENSOR PRODUTOS E SERVICOS FITOSSANITARIOS LTDAbilling_countryBRbilling_cpfbilling_emailpaulo@deffensor.com.brbilling_first_namePaulobilling_last_nameSchneiderbilling_neighborhoodBom Fimbilling_number450billing_persontype2billing_phonebilling_postcode92718500billing_stateRSorder_celular_do_advogado51998812439order_commentsorder_cpf_cnpj_do_representado08.998.845/[email protected]_nome_da_parte_contraria_controle_internoDANIEL DO NASCIMENTO DA SILVAorder_nome_do_advogadoNathalia Beduhn Schneiderorder_nome_do_representadoDEFFENSOR PRODUTOS E SERVICOS FITOSSANITARIOS LTDAorder_numero_do_processo_cnj0020593-83.2024.5.04.0871pagarme{

    2_cards: {

    cards: {2 items}},

    credit_card: {

    cards: {1 item}}}pagarme_payment_request{}payment_methodwoo-pagarme-payments-credit_cardtermsonterms-field1wc_order_attribution_referrerhttps://store.pericialmed.com/product/colaborador-sem-especialidade-atuacao-completa/wc_order_attribution_session_count1wc_order_attribution_session_entryhttps://store.pericialmed.com/cart-2/wc_order_attribution_session_pages2wc_order_attribution_session_start_time2025-02-04 17:37:27wc_order_attribution_source_typetypeinwc_order_attribution_user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36wc_order_attribution_utm_campaign(none)wc_order_attribution_utm_content(none)wc_order_attribution_utm_creative_format(none)wc_order_attribution_utm_id(none)wc_order_attribution_utm_marketing_tactic(none)wc_order_attribution_utm_medium(none)wc_order_attribution_utm_source(direct)wc_order_attribution_utm_source_platform(none)wc_order_attribution_utm_term(none)woocommerce-process-checkout-nonce750099bb8f

    Query String

    wc-ajax

    checkout

    Cookies

    PHPSESSID

    [Filtered]

    _fbp

    fb.1.1738614892586.30985921525257416

    _ga

    GA1.1.949223067.1738614883

    _ga_P3P9XMLYSH

    GS1.1.1738690645.1.1.1738691068.0.0.0

    _ga_V1PEP7QC14

    GS1.1.1738614883.1.1.1738616020.60.0.0

    Show more…

    Headers

    Accept

    application/json, text/javascript, */*; q=0.01

    Accept-Encoding

    gzip, br

    Accept-Language

    pt-PT,pt;q=0.9,en-US;q=0.8,en;q=0.7

    Cdn-Loop

    cloudflare; loops=1

    Cf-Connecting-Ip

    2804:14d:4cd8:a33c:591c:8f50:e3d6:8dd0

    Show more…

    Environment

    REMOTE_ADDR

    2804:14d:4cd8:a33c:591c:8f50:e3d6:8dd0

    Tags

    View All Issue TagsAllCustomApplicationClientOther

    browser

    browser

    Chrome 132

    browser.name

    name

    Chrome

    client_os

    client_os.name

    name

    Windows

    environment

    environment

    production

    handled

    handled

    no

    language

    language

    pt-BR

    level

    level

    warning

    mechanism

    mechanism

    generic

    os

    os

    Linux 6.8.0-49-generic

    os.name

    name

    Linux

    release

    release

    3.5.1

    runtime

    runtime

    php 8.4.3

    runtime.name

    name

    php

    server_name

    server_name

    s143839

    url

    url

    https://store.pericialmed.com/

    user

    user

    ip:2804:14d:4cd8:a33c:591c:8f50:e3d6:8dd0

    wordpress

    wordpress

    6.7.1

    Contexts

    User

    ?

    Geography

    Porto Alegre, Brazil (BR)

    IP Address

    2804:14d:4cd8:a33c:591c:8f50:e3d6:8dd0

    Browser

    Name

    Chrome

    Version

    132

    Operating System

    Name

    Windows

    Operating System

    Build

    #49-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 4 02:06:24 UTC 2024

    Kernel Version

    Linux s143839 6.8.0-49-generic #49-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 4 02:06:24 UTC 2024 x86_64

    Name

    Linux

    Version

    6.8.0-49-generic

    Runtime

    Name

    php

    sapi

    fpm-fcgi

    Version

    8.4.3

    Trace Details

    Span ID

    c8061012434543f6

    Status

    unknown

    Trace ID

    795d3276188e43ff992638d5511fbc35

    SDK

    Event Grouping Information

    Grouped by: exception stack-trace, in-app exception stack-traceGive FeedbackBy Exception Stack-traceContributing valuesAll valuesHash

    538ad79f2dd11a741dd341ea6e750f05Type

    componentGrouping

    system

    • exception
      • stack-trace
        • frame
          • filename
            • index.php
          • context-line
            • require __DIR__ . '/wp-blog-header.php';
        • frame
          • filename
            • wp-blog-header.php
          • function
            • require
          • context-line
            • require_once ABSPATH . WPINC . '/template-loader.php';
        • frame
          • filename
            • template-loader.php
          • function
            • require_once
          • context-line
            • do_action( 'template_redirect' );
        • show 17 similar
      • type
        • ErrorException

    By In-app Exception Stack-traceContributing valuesAll valuesHash

    23d500cc7f3c87925e6c663fbd6d1670Type

    componentGrouping

    in-app

    • exception
      • stack-trace
        • frame
          • filename
            • index.php
          • context-line
            • require __DIR__ . '/wp-blog-header.php';
        • frame
          • filename
            • wp-blog-header.php
          • function
            • require
          • context-line
            • require_once ABSPATH . WPINC . '/template-loader.php';
        • frame
          • filename
            • class-wc-ajax.php
          • function
            • WC_AJAX::do_wc_ajax
          • context-line
            • do_action( 'wc_ajax_' . $action );
        • show 8 similar
      • type
        • ErrorException

          Solução Chatgpt:

    Analisando o problema

    Pelos logs do Sentry, o erro principal é:

    Warning: Trying to access array offset on null
    ... in Woocommerce\Pagarme\Concrete\WoocommercePlatformOrderDecorator::getGuestCustomer
    

    Isso acontece especificamente nas linhas em que se faz algo como:

    $homeNumber   = $phones["home_phone"]["complete_phone"];
    $mobileNumber = $phones["mobile_phone"]["complete_phone"];
    

    ou seja, o índice "mobile_phone" ou "home_phone" dentro do array $phones não existe ou está nulo, causando o PHP Notice/Warning de “undefined array key” e, em seguida, o “trying to access array offset on null”.

    O método que constrói $phones é:

    $phones = Utils::build_customer_phones_from_order($order);
    

    Se, por algum motivo, o WooCommerce não tiver dados de telefone (por exemplo, se o campo billing_phone estiver vazio ou formatado de maneira diferente), então $phones["mobile_phone"] ou $phones["home_phone"] podem não existir. Por que isso acontece?

    • O checkout pode não exigir o preenchimento de número de telefone ou pode estar usando um campo que não seja o billing_phone, então $phones["mobile_phone"] não é construído pelo plugin.
    • Ou existe alguma customização que altera como os campos de telefone são enviados no checkout, e o plugin não encontra o que espera.

    Como resolver?

    A correção pode ser feita de duas formas principais:

    1. Corrigir/adequar a coleta do telefone
      • Assegurar que, no checkout, o(s) campo(s) de telefone sejam obrigatórios e preenchidos.
      • Confirmar que o WooCommerce realmente está salvando o telefone em billing_phone e que ele corresponde ao que o plugin do Pagar.me espera.
    2. Aplicar verificações e “fallbacks” no código do plugin
      • No trecho onde você tem: $homeNumber = $phones["home_phone"]["complete_phone"]; $mobileNumber = $phones["mobile_phone"]["complete_phone"]; substituir por algo como: $homeNumber = isset($phones["home_phone"]["complete_phone"]) ? $phones["home_phone"]["complete_phone"] : ''; $mobileNumber = isset($phones["mobile_phone"]["complete_phone"]) ? $phones["mobile_phone"]["complete_phone"] : '';
      Dessa forma, se por acaso $phones["home_phone"] ou $phones["mobile_phone"] não existirem, não ocorrerá o erro, pois o código passa a tratar a ausência do campo de forma segura (por exemplo, assumindo uma string vazia '').
      • Algo similar pode ser aplicado para outras ocorrências, como: $phones["home_phone"]["complete_phone"] $phones["mobile_phone"]["complete_phone"] em outros métodos (por exemplo, getRegisteredCustomer), fazendo sempre a checagem de isset() ou array_key_exists().

    Onde ajustar?

    No seu caso, as linhas que precisam ser corrigidas aparecem em:

    • WoocommercePlatformOrderDecorator::getGuestCustomer() (linhas ~522 em diante)
    • WoocommercePlatformOrderDecorator::getCustomer() (caso chame getRegisteredCustomer() ou getGuestCustomer())

    Além disso, verifique se no Utils::build_customer_phones_from_order() a lógica de construir $phones["home_phone"] e $phones["mobile_phone"] já não faz essa verificação. Se não fizer, talvez seja melhor corrigir ali diretamente, garantindo que sempre retorne algo consistente para ["home_phone"] e ["mobile_phone"] (mesmo que vazios). Resumo das possíveis soluções

    1. Exigir que o usuário preencha telefone: se o seu fluxo de vendas requer sempre um telefone, pode configurar no WooCommerce para exigir (billing_phone) como campo obrigatório. Assim, não corre o risco de chegar vazio.
    2. Adicionar tratamento de erro/valores vazios no plugin: no arquivo WoocommercePlatformOrderDecorator.php, onde ocorre: $homeNumber = $phones["home_phone"]["complete_phone"]; $mobileNumber = $phones["mobile_phone"]["complete_phone"]; Mude para algo como: $homeNumber = isset($phones["home_phone"]["complete_phone"]) ? $phones["home_phone"]["complete_phone"] : ''; $mobileNumber = isset($phones["mobile_phone"]["complete_phone"]) ? $phones["mobile_phone"]["complete_phone"] : ''; Fazendo isso, você evita o Warning: Trying to access array offset on null.
    3. Revisar build_customer_phones_from_order(): preferencialmente, garantir que essa função retorne sempre as chaves mínimas necessárias. Exemplo: return [ 'home_phone' => [ 'complete_phone' => $home_phone ?? '' ], 'mobile_phone' => [ 'complete_phone' => $mobile_phone ?? '' ] ]; Então, mesmo que não haja telefone, não quebrará em outro ponto do código.

    Conclusão

    • O erro se deve à tentativa de acessar ["mobile_phone"] ou ["home_phone"] em um array que não contém essas chaves (provavelmente porque o checkout foi feito sem fornecer o número de telefone).
    • Corrija tornando o telefone obrigatório ou adicionando checagens de existência (via isset()) antes de acessar esses índices no plugin.
    • Dessa forma, você evitará os avisos PHP Notice/Warning e o plugin conseguirá continuar sem travar caso algum campo esteja vazio.

The topic ‘ErrorException Warning: Trying to access array offset on null’ is closed to new replies.