php - Paypal IPN 更改数据?

标签 php paypal

我正在使用 Paypal IPN 将订单的 status 更新为 2。交付订单后,我们手动将其更改为 3,但有时它会自行返回到 2(请注意,直到它变为 2,我们甚至无法在我们的订单面板中看到它)。

Paypal IPN 是否再次更新?这是什么原因造成的?

<?php
include('includes/config.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);


if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strpos($res, "VERIFIED") == 0) {

...

最佳答案

听起来 IPN 又要更新了,但可能发生的原因有很多。

如果您的 IPN 脚本有问题,无法完全完成,那么 PayPal 将再次发送 IPN,直到它从您的服务器收到 200 响应。您可能遇到某种语法错误或在大部分代码运行后发生的事情。因此代码运行,将您的系统更新为 2,但之后失败,因此 PayPal 再次发送 IPN。登录到您的 PayPal 帐户并检查您的 IPN 历史记录,看看是否发生了这种情况。

另一个原因可能是原始付款因某种原因处于待处理状态。当 IPN 命中 pending 状态时,它更新为 2,然后一旦支付状态更新它再次命中并再次更新为 2。

这些只是可能发生的事情的一些想法。我建议将一些日志记录添加到您的某种 IPN 脚本中。日志文件、数据库日志,甚至是给自己的电子邮件,这样您就可以查看它是否为同一事务运行了多次。从那里您可以准确地找出它运行不止一次的原因。

关于php - Paypal IPN 更改数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425943/

相关文章:

javascript - 如何测试命名窗口是否打开或被弹出窗口阻止程序阻止?

php - PDO 事务代码警告与 mysqli

php - 无法获取 Wordpress 的 apply_filters ('site_url' ) 以返回 https 方案

php - 在 32 位系统中对 64 位整数使用位操作(无 php_gpm 扩展)

paypal - Titanium : Unable to download module from the specified URL. URL 是否有效?

php - 如果上一页 == X.com 则运行 PHP 查询

php - 401 - 尝试使用 PHP 将图片上传到 TwitPic 时出现 "Could not authenticate you (header rejected by twitter)."

php - 使用 mysql_fetch_array 和 php 从数据库获取三个元素

Paypal API - 我们可以在一笔交易中将钱从多个发件人转账到一个账户吗?

javascript - 如何使用新的 PayPal JavaScript SDK 关闭发货