Ошибка HTTP интеграции PayPal

0

У меня есть PayPal, интегрированный на моем сайте. На моем сайте есть форма, которая берет клиента в PayPal для завершения платежа, а затем возвращает его на мой сайт. Мой сайт затем отправляет запрос обратно в PayPal с токеном транзакции для PDT, чтобы я мог выполнить несколько проверок, а затем автокредитовать моего клиента с продуктом, который они купили.

Система использует PHP и cURL для отправки всего процесса.

Когда я использую: "www.sandbox.paypal.com/cgi-bin/webscr"

Наряду с удостоверениями песочницы все работает отлично, все.

Как только я все изменил на "www.paypal.com/cgi-bin/webscr"

Он не работает, мой код сообщает мне, что запрос не работает. Мой код:

$pp_hostname = "www.paypal.com";

        // read the post from PayPal system and add 'cmd'
        $req = 'cmd=_notify-synch';

        $tx_token = $_GET['tx'];
        $auth_token = "#######-hashed_out_here-########";
        $req .= "&tx=$tx_token&at=$auth_token";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://$pp_hostname/cgi-bin/webscr");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
        //set cacert.pem verisign certificate path in curl using 'CURLOPT_CAINFO' field here,
        //if your server does not bundled with default verisign certificates.
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: $pp_hostname"));
        $res = curl_exec($ch);
        curl_close($ch);
        if(!$res){
                $this->twig->error("Request failed.");
        }else{
            $lines = explode("\n", $res);
            $keyarray = array();
            if (strcmp ($lines[0], "SUCCESS") == 0) {
                for ($i='1'; $i<count($lines);$i++){
                    $test = explode("=", $lines[$i]);
                    if(empty($test[1])){
                        $keyarray[urldecode($test[0])] = '';
                    }else{
                        $keyarray[urldecode($test[0])] = urldecode($test[1]);
                    }
                }
                //give product
            } else if (strcmp ($lines[0], "FAIL") == 0) {
                $this->twig->error('Transaction failed!');
            }
        }

Не знаю, почему у меня проблема, поэтому я не знаю, как это сделать. Моя учетная запись PayPal настроена как бизнес, включен PDT и IPN, а также автоматический возврат

Похоже, что я получаю HTTP-ошибку, но я не могу сказать, если я запишу curl_error, она просто говорит "", и если я запишу curl_errno, я получу 0.

Теги:
curl
paypal

1 ответ

0
Лучший ответ

Мне удалось исправить это. Это связано с тем, что мой сервер не установил сертификаты ssl, как только я это сделал, он работал нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню