0

I have a code that gives me request error. If I use sandbox url it works fine, but on live URL it do not work. Could anyone tell why, please?

        $request = curl_init();

        curl_setopt_array($request, array
        (
            CURLOPT_URL => 'https://www.paypal.com/cgi-bin/webscr',
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_POST => TRUE,
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_SSL_VERIFYHOST => false,
            CURLOPT_CONNECTTIMEOUT => 5,
            CURLOPT_SSLVERSION => 6,
            CURLOPT_TIMEOUT => 5,
            CURLOPT_POSTFIELDS => http_build_query(array
            (
                'cmd' => '_notify-synch',
                'tx' => $GET['tx'],
                'at' => /* my code */,
            )),

            CURLOPT_HEADER => FALSE
        ));

        $response = curl_exec($request);
        $status = curl_getinfo($request, CURLINFO_HTTP_CODE);

        var_dump($response);

1 Answers1

0

After 16 hours of searching I found the solution here - https://github.com/apih/paypal-ipn-pdt

Here is the code:

        $query_data = [
            'cmd' => '_notify-synch',
            'tx' => $GET['tx'],
            'at' => $this->token
        ];
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_USERAGENT, 'PayPal');
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($query_data));
        curl_setopt($ch, CURLOPT_URL, $this->url);
        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);