Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mauriliop

Pagseguro frete.php Curl não está funcionando

Recommended Posts

Olá a todos,

 

estou configurando o frete.php do pagseguro para facilitar a obtenção do valor do frete, porém, estou com problemas, pois não está funcionando e não sei o motivo no servidor linux interno meu aqui.

 

O código é o da Visie, http://visie.com.br/pagseguro/linguagem/php/ porém não consigo fazer funcionar localmente e não sei o que falta para funcionar.

 

Coloquei em frete.php true para:

private $_debug = true;

 

e me retorna o seguinte resultado:

PgsFrete started!() Trying to get 'http://pagseguro.uol.com.br/CalculaFrete.aspx?CepOrigem=12030-000&Peso=4&Valor=7,80' using CURL() Trying to get 'http://pagseguro.uol.com.br/CalculaFrete.aspx' using CURL

 

Alguém já passou por isso? Acredito que seja algum problema de configuração do CURL ou do PHP mas não sei o que pode ser.

 

Não sei se expliquei direito, porém se precisarem de mais alguma coisa me avisem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos,

 

estou configurando o frete.php do pagseguro para facilitar a obtenção do valor do frete, porém, estou com problemas, pois não está funcionando e não sei o motivo no servidor linux interno meu aqui.

 

O código é o da Visie, http://visie.com.br/pagseguro/linguagem/php/ porém não consigo fazer funcionar localmente e não sei o que falta para funcionar.

 

Coloquei em frete.php true para:

private $_debug = true;

 

e me retorna o seguinte resultado:

PgsFrete started!() Trying to get 'http://pagseguro.uol.com.br/CalculaFrete.aspx?CepOrigem=12030-000&Peso=4&Valor=7,80' using CURL() Trying to get 'http://pagseguro.uol.com.br/CalculaFrete.aspx' using CURL

 

Alguém já passou por isso? Acredito que seja algum problema de configuração do CURL ou do PHP mas não sei o que pode ser.

 

Não sei se expliquei direito, porém se precisarem de mais alguma coisa me avisem.

 

Verifique se o pacote CURL está instalado em sua distribuição linux.

 

http://br.php.net/manual/pt_BR/book.curl.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

sim, está instalado sim, inclusive fiz teste de pegar dados do yahoo e terra e foi normalmente sem problemas, porém esse script do frete.php dá o erro nessa parte do request e daí não vai pra frente de forma alguma. Você conhece algum teste que eu possa rodar de algo que eu envie por post e pegue o resultado? Mesmo que seja tutorial, arquivo, qualquer coisa, quero resolver isso. Mesmo pq isso vai me abrir muitas portas.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

sim, está instalado sim, inclusive fiz teste de pegar dados do yahoo e terra e foi normalmente sem problemas, porém esse script do frete.php dá o erro nessa parte do request e daí não vai pra frente de forma alguma. Você conhece algum teste que eu possa rodar de algo que eu envie por post e pegue o resultado? Mesmo que seja tutorial, arquivo, qualquer coisa, quero resolver isso. Mesmo pq isso vai me abrir muitas portas.

 

obrigado.

 

Substitua o conteúdo do arquivo frete.php pelo código abaixo e faça um teste.

 

class PgsFrete
{
    private $_use = 'curl';
    private $_debug = false;
    private $_methods = array('curl');
    private $_result;

    public function PgsFrete()
    {
        if ($this->debug()) {
            echo "\nPgsFrete started!";
        }
    }

    public function debug($debug=null)
    {
        if (null===$debug) {
            return $this->_debug;
        }
        $this->_debug = (bool) $debug;
    }

    public function setUse($useMethod)
    {
        if ('string'!==gettype($useMethod)) {
            throw new Exception('Method for setUse not allowed.'.
              'Method passed: '.var_export($useMethod, true));
        }
        $useMethod = strtolower($useMethod);
        if (!in_array($useMethod, $this->_methods)) {
            throw new Exception('Method for setUse not allowed.'.
              'Method passed: '.var_export($useMethod, true));
        }
        $this->_use = $useMethod;
        if ($this->debug()) {
            echo "\nMethod changed to ".strtoupper($useMethod);
        }
    }

    public function getUse()
    {
        return $this->_use;
    }

    public function request($url, $post=null)
    {
        $method = $this->getUse();
        if (in_array($method, $this->_methods)) {
            $method_name = '_request'.ucWords($method);
            if (!method_exists($this, $method_name)) {
              throw new Exception("Method $method_name does not exists.");
            }
            if ($this->debug()) {
                echo "\nTrying to get '$url' using ".strtoupper($method);
            }
            return call_user_func(array($this, $method_name), $url, $post);
        } else {
            throw new Exception('Method not seted.');
        }
    }

    private function _requestCurl($url, $post=null)
    {
        $urlkey="URL:".md5("$url POST:$post");
        if(isset($_SESSION[$urlkey])){
          $this->_result = $_SESSION[$urlkey];
          return;
        }
        $parse = parse_url($url);
        $ch = curl_init();
        if ('https'===$parse['scheme']) {
            // Nao verificar certificado
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }
        curl_setopt($ch, CURLOPT_URL, $url); // Retornar o resultado
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retornar o resultado
        if ($post) {
            curl_setopt($ch, CURLOPT_POST, true); // Ativa o modo POST
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // Insere os POSTs
        }
        $result = curl_exec($ch);
        curl_close($ch);
        $this->_result = $result;
        $_SESSION[$urlkey]=$result;
    }

    public function gerar($CepOrigem, $Peso, $Valor, $Destino)
    {
        $Peso=str_replace('.',',',$Peso);
        $url = "https://pagseguro.uol.com.br/desenvolvedor/simulador_de_frete_calcular.jhtml?postalCodeFrom={$CepOrigem}&weight={$Peso}&value={$Valor}&postalCodeTo={$Destino}";
        $this->request($url);
        $result = split('\|',$this->_result);
        $valores=array();
        if($result[0]=='ok'){
          $valores['Sedex']=$result[3];
          $valores['PAC']=$result[4];
        }
        return $valores;
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite,

 

testei aqui e continuou dando o mesmo erro:

PgsFrete started! Trying to get 'https://pagseguro.uol.com.br/desenvolvedor/simulador_de_frete_calcular.jhtml?postalCodeFrom=12030-000&weight=4&value=7,80&postalCodeTo=01000-000' using CURL

 

acho que alguma coisa no cURL não deve estar bem instalada, como posso saber isso? É que por exemplo esse código funciona normalmente:

 

<?php

 

function domain_check($domain) {

 

$data = 'http://'.$domain;

 

// Create a curl handle to a non-existing location

$ch = curl_init($data);

 

// Execute

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_exec($ch);

 

// Check if any error occured

if(curl_errno($ch))

{

return '<span style="color:#22c922">The domain is available!</span>';

} else {

return '<span style="color:#c92222">The domain is not available</span>';

}

 

// Close handle

curl_close($ch);

}

 

// Usage:

if(isset($_POST['domain'])) {

echo domain_check($_POST['domain'].$_POST['tld']);

}

 

?>

 

<form method="POST" action="">

http:// <input type="text" name="domain">

<select name="tld">

<option value=".com.br">.com.br</option>

<option value=".com">.com</option>

<option value=".net">.net</option>

<option value=".biz">.biz</option>

</option>

<input type="submit" value="Check">

</form>

 

 

 

Ou ainda esse código aqui:

<?php

// Get curl version array

$version = curl_version();

 

// These are the bitfields that can be used

// to check for features in the curl build

$bitfields = Array(

'CURL_VERSION_IPV6',

'CURL_VERSION_KERBEROS4',

'CURL_VERSION_SSL',

'CURL_VERSION_LIBZ'

);

 

 

foreach($bitfields as $feature)

{

echo $feature . ($version['features'] & constant($feature) ? ' matches' : ' does not match');

echo PHP_EOL;

}

?>

obtenho esse resultado:

CURL_VERSION_IPV6 matches CURL_VERSION_KERBEROS4 does not match CURL_VERSION_SSL does not match CURL_VERSION_LIBZ matches

 

Isso ajuda?

 

Antes de mais nada, muito obrigado a ajuda de vcs está sendo muito útil, mesmo não tendo resolvido o problema ainda, já me deu mais esperança de que dará certo.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.