GithubHelp home page GithubHelp logo

Comments (10)

stefanfuchs avatar stefanfuchs commented on July 26, 2024 1

Consegui resolver o problema. Muito estranho, era um problema com a função get/post do PHP.
Os dados da requisição não estavam sendo enviados para a API do pagar.me (https://api.pagar.me/1/transactions/calculate_installments_amount).

Para resolver eu alterei a função do_request no arquivo class-wc-pagarme-api.php da maneira abaixo.
Inserindo um '?' . $data eu forço o envio dos dados via get.

Caso alguém mais esteja tendo o mesmo problema, acho que vale a pena alterar esse código no master.

protected function do_request( $endpoint, $method = 'POST', $data = array(), $headers = array() ) {
        $params = array(
            'method'  => $method,
            'timeout' => 60
        );

        if ( ! empty( $headers ) ) {
            $params['headers'] = $headers;
        }

        if($method == 'GET'){
            return wp_safe_remote_get( $this->get_api_url() . $endpoint . '?' . $data, $params );
        } else {            
            if ( ! empty( $data ) ) {
                $params['body'] = $data;
            }
            return wp_safe_remote_post( $this->get_api_url() . $endpoint, $params );
        }
    }

from woocommerce-pagarme.

claudiosanches avatar claudiosanches commented on July 26, 2024 1

WordPress 4.6 atualizou toda a biblioteca que faz requests e mudaram como as coisas eram feitas, no caso pararam de testar se estava passando uma string antes de colocar no http_build_query(), mas agora com a correção que fiz já funciona ok.

from woocommerce-pagarme.

claudiosanches avatar claudiosanches commented on July 26, 2024

Funciona sem problemas com o WordPress 4.6.
Mas isso é carregado usando JavaScript, então você já verificou o console do seu navegador?

from woocommerce-pagarme.

edinhojorge avatar edinhojorge commented on July 26, 2024

Um amigo também estava com problemas e pediu para eu olhar, e seu código resolveu o problema. Será que uma versão diferente do PHP ou até SO poderia gerar este comportamento?
Não sou expert em PHP, mas vale a pena olhar.
Obrigado mesmo assim.
Eder

from woocommerce-pagarme.

stefanfuchs avatar stefanfuchs commented on July 26, 2024

Olá Eder, bom saber que pude ajudar. =)
que versão do PHP ele está usando? E quando começou o problema?
Eu estou com a versão 5.6.24.

Achei algo bem interessante olhando nos changelogs do PHP. Esta correção do bug #71936 em específico mexe no código das requisições post e get.

Repare que a modificação é bem na parte de cópia dos dados:

+           if (!data) {
+               data = estrdup("");
+           }

Isso aí me acendeu uma luz.
Eu estou começando a achar que o problema começou quando o meu provedor (Hostgator) atualizou a versão do PHP, não quando eu atualizei o Wordpress.

from woocommerce-pagarme.

edinhojorge avatar edinhojorge commented on July 26, 2024

Cara, a versão do server que testei é a 7.0.9, no freehostia.com.

Quanto ao bug, acho que não tem relação, pois é apenas para corrigir um segfault, e apenas quando não existe o recebimento de dados.

Na minha opinião, o ideal seria debugar cada ponto da https://developer.wordpress.org/reference/functions/wp_safe_remote_get/ em diferentes versões de php, e até entre versões diferentes do WP. Tentar achar o ponto entre eles. Vi umas reclamações de pessoas com problema após atualização do WP.

Abs
Eder

from woocommerce-pagarme.

ludyamano avatar ludyamano commented on July 26, 2024

@stefanfuchs estava com o mesmo problema aqui, porém estava utilizando o checkout transparente. Tive de desabilitar o plugin do Pagar.me e ativar o do PagSeguro. O ajuste no código pareceu corrigir o problema.

O erro começou a acontecer após a atualização para a versão 4.6 do WP. Estou rodando em uma VPS da DO com PHP 5.5.9 e não alteramos de versão do PHP.

from woocommerce-pagarme.

rodrigoPgSup avatar rodrigoPgSup commented on July 26, 2024

Boa tarde @claudiosmweb , consegue dar uma olhada nessa questão meu caro? Aplicando a correção do @stefanfuchs ou voltando à versão do método do_request ?

from woocommerce-pagarme.

stefanfuchs avatar stefanfuchs commented on July 26, 2024

@edinhojorge realmente, pensando bem parece que a atualização do PHP não tem relação mesmo.
Agora olhando o changelog da versão 4.6 do Wordpress também tem modificações na API do HTTP. Não cheguei a olhar o código, mas provavelmente deve ser esse o motivo dos problemas.

from woocommerce-pagarme.

pedrobritto avatar pedrobritto commented on July 26, 2024

@stefanfuchs Estava com seu mesmo problema, fiz a alteração que você postou acima e agora dá pra gerar parcelas sem qualquer tipo de erro. Estava com o problema desde a atualização 4.6 do WP.

Atualização: com essa alteração no código as parcelas eram geradas, mas ainda era impossível realizar compras. Fiz o downgrade do WP para a versão 4.5 e agora tudo funciona normalmente com o código original do plugin.

from woocommerce-pagarme.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.