ipn--pdo错误处理



我正在使用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.".rn"; 
fwrite($logfile, $error); 
fclose($logfile); 

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

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

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

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

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

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

最新更新