Forum Replies Created

Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter pitervergara

    (@pitervergara)

    Depois de inspecionar algumas requisi??es, confirmei que a informa??o n?o é enviada.

    Eu confirmei isso observando o método save() do arquivo wp-content/plugins/woocommerce-mercadopago/packages/sdk/src/Common/AbstractEntity.php. Inspecionando a variável $header, é possível ver que embora o cabe?alho x-meli-session-id esteja presente ele n?o contém nenhum valor.

    Isso acontece porque ele é inicializado, no SDK do Mercado Pago, no método getHeaders() do arquivo wp-content/plugins/woocommerce-mercadopago/packages/sdk/src/Entity/Payment/Payment.php e lá o atributo session_id do objeto Payment é nulo.

    Como o atributo é protegido, n?o vejo como populá-lo a partir do plugin. Contudo, o a classe Payment do SDK suporta a adi??o de cabe?alhos customizados que s?o considerados pelo método getHeaders(). Ent?o, com a modifica??o abaixo no código do plugin é possível acrescentar o cabe?alho:

    <?php
    // Arquivo wp-content/plugins/woocommerce-mercadopago/src/Transactions/AbstractPaymentTransaction.php
     
        public function createPayment()
        {
            $payment = $this->getTransaction('Payment');
            
            //// CóDIGO ADICIONADO ////
            $session_id = $this->checkout['session_id'];
            $payment->setCustomHeaders(['x-meli-session-id: ' . $session_id]);
            //// FIM DO CóDIGO ADICIONADO ////
            
            $data = $payment->save();
    

    Isso, entretanto, duplica o cabe?alho x-meli-session-id, já que o SDK n?o deixará de incluí-lo sem valor. Como os headers customizados entram depois, suponho que, ele iria se sobrepor ao valor vazio, já que é um header de Single-Valued, mas n?o tenho certeza de como a API tratará isso.

    Enfim, me parece conveniente que esta informa??o seja enviada nos cabe?alhos da requisi??o e isso n?o acontece hoje. Embora adicionar essa informa??o ali, da maneira como eu fiz, n?o tenha resolvido meu problema original de transa??es recusadas, eu suponho que contribua para solu??o, já que a documenta??o recomenda sua inclus?o:

    Device ID é uma informa??o importante para garantir uma melhor seguran?a e, consequentemente, uma melhor taxa de aprova??o de pagamentos.

    https://www.mercadopago.com.br/developers/pt/docs/checkout-pro/how-tos/improve-payment-approval/recommendations
    pitervergara

    (@pitervergara)

    Eu também tenho esta dúvida. Uso a vers?o mais atual do plugin e a mais atual do Woocommerce. Meus pedidos por cart?o todos s?o recusados. Várias fontes (como a indicada pelo @fabriciobarros10) sugerem que eu deveria “enviar mais informa??es”, entre elas o deviceId.

    Eu sei que essa informa??o está sendo coletada pelo plugin do Mercado Pago na página de checkout da minha loja woocommerce, pois se eu abro a console do navegador e confiro, a variável global MP_DEVICE_SESSION_ID está presente e contém um valor. Mas eu n?o tenho certeza de que essa informa??o está de fato sendo enviada ao Mercado Pago.

Viewing 2 replies - 1 through 2 (of 2 total)