简体   繁体   English

为什么我的 PayPal IPN 脚本失败?

[英]Why is my PayPal IPN script failing?

I'm developing a lightweight e-commerce solution that uses PayPal as the payment gateway.我正在开发一个使用PayPal作为支付网关的轻量级电子商务解决方案。 However, my IPN callback is constantly returning an INVALID response.但是,我的 IPN 回调不断返回INVALID响应。 I even tried using the sample PHP script provided by PayPal :我什至尝试使用 PayPal 提供的示例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, 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'];

if (!$fp) {
  // HTTP ERROR
}
else {
  fputs ($fp, $header . $req);
  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
    }
  }
  fclose ($fp);
}

But as I say, I keep getting an INVALID response.但正如我所说,我不断收到INVALID的回复。 This is in fact the response I get using a PHP class that writes the response to a log file:这实际上是我使用 PHP class 获得的响应,该响应将响应写入日志文件:

[2011-06-02 19:18:49] - FAIL: IPN Validation Failed.
IPN POST data from PayPal:
test_ipn=1,
payment_type=instant,
payment_date=11:07:43 Jun 02, 2011 PDT,
payment_status=Completed,
payer_status=verified,
first_name=John,
last_name=Smith,
payer_email=buyer@paypalsandbox.com,
payer_id=TESTBUYERID01,
business=seller@paypalsandbox.com,
receiver_email=seller@paypalsandbox.com,
receiver_id=TESTSELLERID1,
residence_country=US,
item_name1=something,
item_number1=AK-1234,
quantity1=1,
tax=2.02,
mc_currency=USD,
mc_fee=0.44,
mc_gross=15.34,
mc_gross_1=12.34,
mc_handling=2.06,
mc_handling1=1.67,
mc_shipping=3.02,
mc_shipping1=1.02,
txn_type=cart,
txn_id=4362187,
notify_version=2.4,
custom=xyz123,
invoice=abc1234,
charset=windows-1252,
verify_sign=AjbdIvvDAW2fh1O9jAbEym4myX.WAV7-jCEiEWMqoSkewvM6L3Co6oUQ

This is from the official PayPal IPN test tool.这是来自官方的PayPal IPN 测试工具。 So something between PayPal 's sample code and test tool is causing my script to fail.所以PayPal的示例代码和测试工具之间的某些东西导致我的脚本失败。 Any one have any ideas?有人有想法么?

what is encoding of your html/php page?您的 html/php 页面的编码是什么? (charset=windows-1252)? (字符集=windows-1252)?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM