fsockopen возвращает ноль для обратного вызова PayPal - PullRequest
0 голосов
/ 23 сентября 2018

Есть много вопросов в stackoverflow, похожих на эту тему, и я попробовал все из них, но безрезультатно.Это может быть моя конфигурация сервера или что-то в этом роде, поэтому отправляйте сообщения, если у кого-то есть подсказки.

Это мой код: -

$this->gateway['submit_url'] = 'https://www.paypal.com/cgi-bin/webscr';
$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com:443';

//headers
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host www.ipnpb.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($req)."\r\n\r\n";

$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);

$ req определено выше где-то в коде.

Здесь fp возвращает ноль.Моя версия OpenSSL: OpenSSL 1.0.1i 6 августа 2014 года

У меня есть сервер Windows IIS

1 Ответ

0 голосов
/ 23 сентября 2018

Можете ли вы попробовать удалить номер порта :443 из $this->gateway['callback_url']?

$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com';

Порт 443 уже передан в fsockopen вызове функции.

$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);

Редактировать : (Редактирование ответа, поскольку в комментариях теперь разрешены новые строки)

Есть ли что-нибудь еще вокруг этой части этого кода?

  • отсутствует точка с запятой (;) в конце второй строки
  • не определен $ req.

Тот же код, заключенный в класс с 3предложенные выше изменения работают для меня.(возвращает ресурс типа stream)

<?php
class abc {
    public $gateway;

    public function __construct() {
        $req = 'ABCD';

        $this->gateway['submit_url'] = 'https://www.paypal.com/cgi-bin/webscr';
        $this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com';
        //headers
        $header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
        $header .= "Host www.ipnpb.paypal.com\r\n";
        $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $header .= "Content-Length: ".strlen($req)."\r\n\r\n";

        $fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);

        var_dump($fp);

    }
}
$a = new abc();
...