PHP Paypal API не работает - PullRequest
       5

PHP Paypal API не работает

0 голосов
/ 23 марта 2012

Может кто-нибудь, пожалуйста, скажите мне, что не так с этим кодом.

Я не получаю полный от PayPal.

Как только я заплатил, я должен получить к этому if (strcmp ($res, "VERIFIED") == 0) но ям нет.

$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
{
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}

$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";

$mode = $paymod_data['MODULE_PAYMENT_PAYPAL_TESTMODE'];

if ($mode == 'test')
{
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
}
else
{
    $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
}

if (!$fp)
{
    // HTTP ERROR
     die ("Error");
}
else 
{   
    fputs ($fp, $header . $req);
    while (!feof($fp))
    {
        $res = fgets ($fp, 1024);
        if (strcmp ($res, "VERIFIED") == 0)
        {
            processing ( $_POST );      
        }
        else if (strcmp ($res, "INVALID") == 0)
        {
        }
    }
    fclose ($fp);
}

1 Ответ

3 голосов
/ 23 марта 2012

2 вещи не так с вашим кодом ... вам не нужно использовать CURL, чтобы он тоже работал

  1. Paypall работает по протоколу https, а не по http
  2. Чтобы использовать https с fsockopen, вам нужно начать с ssl: //

        $req = 'cmd=_notify-validate';
        foreach ($_POST as $key => $value)
        {
            $value = urlencode(stripslashes($value));
            $req .= "&$key=$value";
        }
        $header = "" ;
        $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";
        $mode = "test";
        $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
        if (!$fp)
        {
            // HTTP ERROR
             die ("Error");
        }
        else 
        {   
            fputs ($fp, $header . $req);
            $res = ""  ;
            while (!feof($fp))
            {
                $res .= fgets ($fp, 1024) ."\n";
    
            }
            fclose ($fp);
    
            echo "<pre>" ;
            echo $res ;
        }
    

рабочая версия

        while (!feof($fp)) {
            $res = fgets ($fp, 1024);
            if (strcmp ($res, "VERIFIED") == 0) {
                // check the payment_status is Completed
                // check that txn_id has not been previously processed
                // check that receiver_email is your Primary PayPal email
                // check that payment_amount/payment_currency are correct
                // process payment
            }
            else if (strcmp ($res, "INVALID") == 0) {
                // log for manual investigation
            }
        }

выход

        HTTP/1.1 200 OK

        Date: Thu, 22 Mar 2012 22:29:27 GMT

        Server: Apache

        X-Frame-Options: SAMEORIGIN

        Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=laL_1TsCkmAu0I-qPtcD7bI-NtAFnmmf5vK3gjnt0FNUFLhrF50wv9851dshc41cwX1vHP3ZnbZQtv8w1TX8zBbshkoktJrD3JOE7FhzbSTRfUD7wuKT2247G9Ktz0pQv3Pnb0%7cUz1hwgrtOfBwB4QUN_sOl-xjUAxIgPAln4rJ0NF6J0xDeav4ApvI_FdaX-6IDCmKCcK59m%7cbBVb109UB7lSNC7p_sKz2KLrSiHT_JhBpu6_CtqDTSUFZhXYvLNzVFJEp3jTcj02IJMwg0%7c1332455367; domain=.paypal.com; path=/; Secure; HttpOnly

        Set-Cookie: cookie_check=yes; expires=Sun, 20-Mar-2022 22:29:27 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

        Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly

        Set-Cookie: navlns=0.0; expires=Wed, 17-Mar-2032 22:29:27 GMT; domain=.paypal.com; path=/; Secure; HttpOnly

        Set-Cookie: Apache=10.72.109.11.1332455367151823; path=/; expires=Sat, 15-Mar-42 22:29:27 GMT

        Connection: close

        Content-Type: text/html; charset=UTF-8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...