PayPal IPN Simulator - PullRequest
       5

PayPal IPN Simulator

0 голосов
/ 25 июня 2018

Я пытался настроить IPN в течение последних 20 часов (2 дня), и каждый раз, когда я хочу запустить тест, он просто не позволяет мне сказать «IPN не был отправлен, и рукопожатие не было подтверждено».Просмотрите вашу информацию. "

1) Когда я помещаю" openssl s_client -connect api-3t.sandbox.paypal.com:443 -showcerts -CApath / etc / ssl / certs / "на сервер, это обычнопоказывает, что все в порядке, так что это не проблема.

2) В моих настройках IPN PayPal у меня есть https://www.(mydomain.com)/listener.php

Мой listener.php (один из 5, которые я пытался):

<?php
//
// STEP 1 - be polite and acknowledge PayPal's notification
//

header('HTTP/1.1 200 OK');

//
// STEP 2 - create the response we need to send back to PayPal for them to confirm that it's legit
//

$resp = 'cmd=_notify-validate';
foreach ($_POST as $parm => $var) 
    {
    $var = urlencode(stripslashes($var));
    $resp .= "&$parm=$var";
    }

// STEP 3 - Extract the data PayPal IPN has sent us, into local variables 

  $item_name        = $_POST['item_name'];
  $item_number      = $_POST['item_number'];
  $payment_status   = $_POST['payment_status'];
  $payment_amount   = $_POST['mc_gross'];
  $payment_currency = $_POST['mc_currency'];
  $txn_id           = $_POST['txn_id'];
  $receiver_email   = $_POST['receiver_email'];
  $payer_email      = $_POST['payer_email'];
  $record_id        = $_POST['custom'];



// STEP 4 - Get the HTTP header into a variable and send back the data we received so that PayPal can confirm it's genuine

$httphead = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$httphead .= "Content-Type: application/x-www-form-urlencoded\r\n";
$httphead .= "Content-Length: " . strlen($resp) . "\r\n\r\n";

 // Now create a ="file handle" for writing to a URL to paypal.com on Port 443 (the IPN port)

$errno ='';
$errstr='';

$fh = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

// STEP 5 - Nearly done.  Now send the data back to PayPal so it can tell us if the IPN notification was genuine

 if (!$fh) {

// Uh oh. This means that we have not been able to get thru to the PayPal server.  It's an HTTP failure    

else    {
           fputs ($fh, $httphead . $resp);
           while (!feof($fh))
                {
                $readresp = fgets ($fh, 1024);
                if (strcmp ($readresp, "VERIFIED") == 0) 
                    {



//
                    }

                else if (strcmp ($readresp, "INVALID") == 0) 
                    {

//              Man alive!  A hacking attempt?

                    }
                }
fclose ($fh);
        }
//
//
// STEP 6 - Pour yourself a cold one.
//
//

?>

Это может занять некоторое время, возможно, это не займет даже 2 минуты, но я был бы очень рад, если бы кто-то знал причину почему?Это также может помочь другим.

...