2

我正在使用 ipn 沙箱来检查一些进程:

$business = $_POST['business'];
$receiver_email = $_POST['receiver_email'];
$receiver_id = $_POST['receiver_id'];
$txn_id = $_POST['txn_id'];
$txn_type = $_POST['txn_type'];
$verify_sign = $_POST['verify_sign'];

$stmt = $dbh->prepare("INSERT INTO transactions (business, receiver_email, receiver_id, txn_id, 
                                     txn_type, verify_sign) 
                                     VALUES (?, ? , ? , ? , ? , ?)");
$stmt->bindParam(1, $value1);
$stmt->bindParam(2, $value2);
$stmt->bindParam(3, $value3);
$stmt->bindParam(4, $value4);
$stmt->bindParam(5, $value5);
$stmt->bindParam(6, $value6);

$value1 = $business;
$value2 = $receiver_email;
$value3 = $receiver_id;
$value4 = $txn_id;
$value5 = $txn_type;
$value6 = $verify_sign;
$stmt->execute(); 

所以这是我的 ipn 脚本的一部分,但它没有得到处理,我的表中没有任何内容。我无法回显或打印错误,导致其 ipn..但是:我可以在此日志文件中写入错误:

$logfile = fopen("logfile.txt", "a"); 
$error = date("d.m.Y H:i:s")." - ".$errormsg.".\r\n"; 
fwrite($logfile, $error); 
fclose($logfile); 

但是在那里写什么,有人可以帮助我吗?问候

4

1 回答 1

0

检查沙盒卖家账户中的 IPN 历史记录以查看它显示的内容。这将确认 IPN 已(或未)实际发送。如果它们被发送,那么您可能会看到某种错误代码,而不是 200 OK。

在为 IPN 开发时,我喜欢做的是构建我自己的 HTML 表单,其中包含一堆与我期望从实际 PayPal IPN 获得的内容相匹配的隐藏字段。将表单的操作设置为您的 IPN 侦听器,然后您可以在浏览器中加载它,提交它,然后在屏幕上查看结果。这对测试和故障排除有很大帮助。一旦以这种方式完成所有工作,您就可以返回测试实际的沙盒事务,并且应该得到相同的结果。

请记住,在以这种方式进行测试时,数据实际上并非来自 PayPal,因此无法验证。您需要确保您的代码逻辑已设置为相应地处理此问题。

如果您要保存自己的日志文件,那么您可以从中获得的最佳信息正是您在原始 IPN 数据中获得的字段。您在脚本中做的第一件事是将所有 $_POST 值转储到日志文件中,以便您可以查看参数。

至于查看错误和事情,您的 Web 服务器已经在这样做了。只需查看您的实际 Apache(或 IIS)日志文件,您就可以在任何时候看到您的 IPN 脚本被命中时发生的情况。它将向您显示您通常会在屏幕上看到的错误代码和消息。

于 2014-01-07T02:25:25.230 回答