Eu recebo o erro cURL: [3] Erro mal formado nos dados paypal

votos
0

Olá eu tento colocar o método paypal no pagamento, mas eu tenho esse erro: [3] malformado, quando eu enviar as informações é ok, a transação pode ser concluída, mas quando retorna para o local para validação .. retorna com este link:

https://m2kotoba.ro/?view=verifyPayPall

no meu arquivo principal eu tenho isso para vista variável no caso de switch:

case 'verifyPayPall':
  $this->getSystemFunctions()->verifyPayPall();
break; 

E a função que ele chama:

public function verifyPayPall(){
        // Handle the PayPal response.
        if ($this->verifyTransaction($_POST) /*&& checkTxnid($data['txn_id'])*/) {
            //if (addPayment($data) !== false) {
                $_SESSION['msg'] = 'Ai achizitionat cu succes!';
                header(location: ?view=donate);
            //}
        }

    }
public function verifyTransaction($data) 
    {
        global $paypalUrl;

        $req = 'cmd=_notify-validate';
        foreach ($data as $key => $value) {
            $value = urlencode(stripslashes($value));
            $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i', '${1}%0D%0A${3}', $value); // IPN fix
            $req .= &$key=$value;
        }

        $ch = curl_init($paypalUrl);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
        curl_setopt($ch, CURLOPT_SSLVERSION, 6);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
        $res = curl_exec($ch);

        if (!$res) {
            $errno = curl_errno($ch);
            $errstr = curl_error($ch);
            curl_close($ch);
            throw new Exception(cURL error: [$errno] $errstr);
        }

        $info = curl_getinfo($ch);

        // Check the http response
        $httpCode = $info['http_code'];
        if ($httpCode != 200) {
            throw new Exception(PayPal responded with http code $httpCode);
        }

        curl_close($ch);

        return $res === 'VERIFIED';
    }

Como posso resolver isso ou eu tenho que tentar outro método?

Publicado 18/12/2018 em 11:08
fonte usuário
Em outras línguas...                            


1 respostas

Eu recebo o erro cURL: [3] Erro mal formado nos dados paypal

votos
0

Olá eu tento colocar o método paypal no pagamento, mas eu tenho esse erro: [3] malformado, quando eu enviar as informações é ok, a transação pode ser concluída, mas quando retorna para o local para validação .. retorna com este link:

https://m2kotoba.ro/?view=verifyPayPall

no meu arquivo principal eu tenho isso para vista variável no caso de switch:

case 'verifyPayPall':
  $this->getSystemFunctions()->verifyPayPall();
break; 

E a função que ele chama:

public function verifyPayPall(){
        // Handle the PayPal response.
        if ($this->verifyTransaction($_POST) /*&& checkTxnid($data['txn_id'])*/) {
            //if (addPayment($data) !== false) {
                $_SESSION['msg'] = 'Ai achizitionat cu succes!';
                header("location: ?view=donate");
            //}
        }

    }
public function verifyTransaction($data) 
    {
        global $paypalUrl;

        $req = 'cmd=_notify-validate';
        foreach ($data as $key => $value) {
            $value = urlencode(stripslashes($value));
            $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i', '${1}%0D%0A${3}', $value); // IPN fix
            $req .= "&$key=$value";
        }

        $ch = curl_init($paypalUrl);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
        curl_setopt($ch, CURLOPT_SSLVERSION, 6);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
        $res = curl_exec($ch);

        if (!$res) {
            $errno = curl_errno($ch);
            $errstr = curl_error($ch);
            curl_close($ch);
            throw new Exception("cURL error: [$errno] $errstr");
        }

        $info = curl_getinfo($ch);

        // Check the http response
        $httpCode = $info['http_code'];
        if ($httpCode != 200) {
            throw new Exception("PayPal responded with http code $httpCode");
        }

        curl_close($ch);

        return $res === 'VERIFIED';
    }

Como posso resolver isso ou eu tenho que tentar outro método?

Respondeu 18/12/2018 em 11:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more