代码之家  ›  专栏  ›  技术社区  ›  Trygve

不再支持PayPal IPN和fsockopen?

  •  2
  • Trygve  · 技术社区  · 7 年前

    多年来,我的贝宝IPN脚本一直在工作。昨天它坏了,我们的网络服务器没有变化。当我收到IPN时,我的PHP脚本调用:

        // read the post from PayPal system and add 'cmd'
        $req = 'cmd=_notify-validate';
    
        foreach ($_POST as $key => $value)
        {
            $value = urlencode(stripslashes($value));
            $req .= "&$key=$value";
        }
    
        // post back to PayPal system to validate
        $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
        $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
        $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 120);
        if ($fp)
        {
            fputs ($fp, $header . $req);
            while (!feof($fp))
            {
              ...
            }
        }
    }
    

    PayPal的文档现在谈到:

    https://ipnpb.sandbox.paypal.com/cgi-bin/webscr

    https://ipnpb.paypal.com/cgi-bin/webscr (适用于带电IPN)

    1 回复  |  直到 7 年前
        1
  •  4
  •   Trygve    7 年前

    // post back to PayPal system to validate
    $header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
    $header .= "Content-Length: " . strlen($req) . "\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Host: www.paypal.com\r\n";
    $header .= "Connection: close\r\n\r\n";
    
    ...
    
    if (strcmp(trim($result), "VERIFIED") == 0)
    
    推荐文章