Ошибка получения PayPal PDT / IPN Ошибка: 4003 - PullRequest
0 голосов
/ 28 октября 2018

Я использую приведенную ниже функцию, которая выполняется через PDT и IPN (для надежности я использую оба метода, т. Е. Если клиент не возвращается автоматически на мой веб-сайт, PDT не будет работать, поэтому я использую метод IPN какотступление).

function paypal_verify() {
    global $CONFIG;

    $txn_id = isset($_GET['tx']) ? $_GET['tx'] : ''; /* come via PDT */

    if (isset($_POST['txn_id'])) {
        $txn_id = $_POST['txn_id']; /* come via IPN */
    }

    if (!preg_match('#^[a-z\d]{17}$#iD', $txn_id)) {
         return false;
    }

    if ($CONFIG['test']) {
        $pp_hostname = 'www.sandbox.paypal.com';
    } else {
        $pp_hostname = 'www.paypal.com';
    }

    $req = "cmd=_notify-synch&tx={$txn_id}&at={$CONFIG['identity_token']}";

    $header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Host: {$pp_hostname}\r\n";
    $header .= "Connection: close\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";

    $fp = fsockopen("ssl://{$pp_hostname}", 443, $errno, $errstr, 30);

    if (!$fp) {
        return false;
    } else {
        fputs ($fp, $header . $req);
        $res = '';
        $header_done = false;
        while (!feof($fp)) {
            $line = fgets ($fp, 1024);
            if (strcmp($line, "\r\n") == 0) {
                $header_done = true;
            } elseif ($header_done) {
                $res .= $line;
            }
        }

        //validate $res here...
        //etc.
}

Теперь проблема заключается в том, что $ res возвращает сообщение «Ошибка: Ошибка: 4003».Я удостоверился, что токен идентификации PDT правильный, и что я получаю действительный идентификатор транзакции.

На моем веб-сайте не так много клиентов / трафик, и код ранее работал нормально.Однако проблема возникла, когда клиент сделал платеж, но моя база данных не была обновлена ​​из-за сбоя кода.Я проверил инструмент истории IPN PayPal, и страница, которая выполняет функцию, была открыта нормально, с тех пор я получил от PayPal повторную обработку его несколько раз, пока я пытался отлаживать, но все равно получал тот же ответ об ошибке.

Есть мысли, пожалуйста?

...