Je reçois l'erreur cURL: [3] Erreur malformé sur les données paypal

voix
0

Bonjour je tente de mettre la méthode paypal sur salaire, mais je suis arrivé cette erreur: [3] malformé, quand j'envoie les informations qu'il est ok, la transaction peut être complétée, mais quand revient sur le site pour la validation .. revient avec ce lien:

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

dans mon dossier primaire j'ai ce pour la variable de vue en cas de commutation:

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

Et la fonction qu'il appelle:

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';
    }

Comment puis-je résoudre ce ou je dois essayer une autre méthode?

Créé 18/12/2018 à 11:08
source utilisateur
Dans d'autres langues...                            


1 réponses

Je reçois l'erreur cURL: [3] Erreur malformé sur les données paypal

voix
0

Bonjour je tente de mettre la méthode paypal sur salaire, mais je suis arrivé cette erreur: [3] malformé, quand j'envoie les informations qu'il est ok, la transaction peut être complétée, mais quand revient sur le site pour la validation .. revient avec ce lien:

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

dans mon dossier primaire j'ai ce pour la variable de vue en cas de commutation:

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

Et la fonction qu'il appelle:

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';
    }

Comment puis-je résoudre ce ou je dois essayer une autre méthode?

Créé 18/12/2018 à 11:08
source utilisateur

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