Shipping in my cart is different from PagSeguro

0

I'm going through a strange problem, I'm integrating my site with PagSeguro , I'm calculating the freight on my side and the values are correct according to a one-page conference that is in my hosting, but when sending to PagSeguro the freight value from there is different from mine. The requested parameters are all being filled in correctly and I am not understanding this difference. I do not know how to go through what I am, so I'll try not to let myself down too much.

What I'm doing is this, Page Calculation.php

if(!isset($_SESSION)) {    
  session_start();
}

header("Content-Type: text/html; charset=ISO-8859-1",true);
require_once("Connections/conexao.php");

// validacao por banco de dados
function validar($conexao, $cep, $valor){
    $c = (int)preg_replace("/\D+/", "", $cep);
    $sql = "SELECT cep_inicial, cep_final, valor, status FROM frete_gratis WHERE status = 1";
    $sel = mysql_query($sql);

    while($row = mysql_fetch_array($sel)):
    if ($c >= $row['cep_inicial'] && $c <= $row['cep_final'] && $row['valor'] < $valor) return true;
    endwhile;       
}

mysql_select_db($database_conexao, $conexao);
$query_cepOrigem = "SELECT cep_1, cep_2 FROM cep_origem";
$cepOrigem = mysql_query($query_cepOrigem, $conexao) or die(mysql_error());
$row_cepOrigem = mysql_fetch_assoc($cepOrigem);

$CEP_ORIGEM = $row_cepOrigem['cep_1']."-".$row_cepOrigem['cep_2'];

// CEP
if ( isset($_POST['cep1']) && isset($_POST['cep2']) ){
    $cep1 = $_POST['cep1'];
    $cep2 = $_POST['cep2'];

    // CEP DE DESTINO
    // não pode ser inteiro - retira zero do inicio
    $CEP_DESTINO = $cep1."-".$cep2;
    $_SESSION["cepS"] = $CEP_DESTINO;
}
// VALOR
if ( isset($_POST['SUBTotal']) ){
    $VALOR = $_POST['SUBTotal'];
    if ($VALOR > 10000) {
        $VALOR = 10000;
    }
    $VALOR = str_replace(".", ",", $VALOR);
}

if ( isset($_POST['peso']) ){
    $PESOGR = $_POST['peso'];
    $PESOGR = $PESOGR / 1000;
    //$iteracoes = 1;
    if ($PESOGR > 30) {
        //$iteracoes = ceil($PESOGR / 30);
        $PESOGR = 30;
    }
}

 echo $VALOR;  echo "<br>";
 echo $PESOGR; echo "<br>";
 echo $CEP_ORIGEM; echo "<br>";
 echo $CEP_DESTINO;echo "<br>";

// CHAMADA DO ARQUIVO QUE CONTEM A CLASSE PgsFrete()
require_once('Frete.php');
// INSTANCIANDO A CLASSE
$frete = new PgsFrete;
// ZERANDO VALORES
$valorFrete = 0.0;
// CALCULANDO
$valorFrete = $frete->gerar($CEP_ORIGEM, $PESOGR, $VALOR, $CEP_DESTINO);

$vlrFreteSedex = str_replace(".","",$valorFrete["Sedex"]);
$vlrFretePac = str_replace(".","",$valorFrete["PAC"]);

// $valorFrete["Sedex"] = $valorFrete["Sedex"] - 4.60;
// $valorFrete["PAC"] = $valorFrete["PAC"] - 2;


if(is_array($valorFrete)) {
    // frete gratis para tipo de ceps
    $VALOR = str_replace(",", ".", $VALOR);
    if (validar($pdo,$CEP_DESTINO,$VALOR) ){
        echo '  
        <input type="radio" name="tipoEntrega" value="3" alt="0.00" rel="0.00" /> <strong>GRATIS (R$ 0,00)</strong><br/>
        ';
    } else {
        echo '  
        <input type="radio" name="tipoEntrega" value="2" alt="'.$vlrFreteSedex.'" rel="'.$valorFrete["Sedex"].'" /> <strong>SEDEX (R$ '.$valorFrete["Sedex"].')</strong><br/>
        <input type="radio" name="tipoEntrega" value="1" alt="'.$vlrFretePac.'" rel="'.$valorFrete["PAC"].'" /> <strong>PAC (R$ '.$valorFrete["PAC"].')</strong><br/>
        ';
    }   
}

Shipping Page.php

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 = explode('|',$this->_result);
    $valores=array();
    if($result[0]=='ok'){
      $valores['Sedex']=$result[3];
      $valores['PAC']=$result[4];
    }else{
      die($result[1]);
    }
    return $valores;
}

}

Sending to SecurePay:

if ($ TPFrete == 3) {     weight = 0;     $ paymentRequest-> addItem ($ cod_prod, $ prod_name, $ prod_d, $ vlr, $ weight); } else {     $ paymentRequest-> addItem ($ cod_prod, $ prod_name, $ prod_d, $ vlr, $ weight, $ VLRFrete); }

Some pictures of the cart and console:

    
asked by anonymous 30.08.2018 / 22:59

0 answers