php - Paypal IPN 脚本不工作

标签 php sql paypal paypal-ipn

出于某种原因,我的脚本连接到数据库并且没有错误,但是数据库中似乎没有任何更新。我找不到任何问题。这是我的代码:

    // 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, 30);

    // assign posted variables to 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'];
    $user_id = mysql_real_escape_string($_POST['custom']);
    $today = date("F j, Y, g:i a"); 

    echo "hi";

    if (!$fp) {
       // HTTP ERROR
    } else {
      fputs ($fp, $header . $req);
      while (!feof($fp)) {
        $res = fgets ($fp, 1024);
        if (strcmp ($res, "VERIFIED") == 0) {
            if ($payment_status=='Completed') {
                $txn_id_check = mysql_query("SELECT 'txn_id' FROM 'log' WHERE 'txn_id' ='".$txn_id."'");
                if (mysql_num_rows($txn_id_check) !=1) {
                    if ($receiver_email=='HiddenForStackQuestion') {
                        if ($payment_amount=='29.95' && $payment_currency=='USD') {
                        $log_query = mysql_query("INSERT INTO 'log' VALUES ('','".$txn_id."','".$payer_email."')");
                        $update_premium = mysql_query("UPDATE 'users' SET authLevel='1', startDate='".$today."'  WHERE 'fbID'='".$user_id."'");

                        }

                        }

                    }
            }


        }
        else if (strcmp ($res, "INVALID") == 0) {
             // log for manual investigation
        }
      }
      fclose ($fp);
    }
    ?>

这是我的按钮。

    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <input type="hidden" name="business" value="hiddenForStackQuestion">
    <input type="hidden" name="lc" value="US">
    <input type="hidden" name="item_name" value="hiddenForStackQuestion">
    <input type="hidden" name="no_note" value="1">
    <input type="hidden" name="no_shipping" value="2">
    <input type="hidden" name="rm" value="1">
    <input type="hidden" name="return" value="hiddenForStackQuestion">
    <input type="hidden" name="cancel_return" value="hiddenForStackQuestion">
    <input type="hidden" name="src" value="1">
    <input type="hidden" name="a3" value="29.95">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="Y">
    <input type="hidden" name="notify_url" value="hiddenForStackQuestion" />
          <input type="hidden" name="custom" value="<?php echo $userId ?>" />
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="bn" value="PP-SubscriptionsBF:btn_subscribeCC_LG.gif:NonHosted">
    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" style="border:none;">
    </form>

我已经研究了一段时间,但一直没有成功。有谁知道哪里出了问题吗?

最佳答案

这个

<input type="hidden" name="notify_url" value="hiddenForStackQuestion" />

我希望不会碰巧托管在本地主机上? IPN POST 由 PayPal 的服务器发起,因此必须是 FQDN。本地主机将无法工作。

关于php - Paypal IPN 脚本不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498062/

相关文章:

php - 使用计数器更新 codeigniter 事件记录

sql - Groovy DSL for Liquibase中的自定义SQL?

使用个人账户的 PayPal IPN

laravel - PayPal 沙盒上的 cURL 56 错误

PHP - 无法使用复选框删除 MySQL 行(无表单)

php - 我的数据库连接没有连接到 postgreSQL

php - 如何使用 Yii 命名空间

php - 使用一两个 mysql 的 php 脚本

sql - 如何删除父子记录

paypal - PayPal 'cancel' 工作流程中的用户没有 'Donate' 选项