Paypal 即时付款通知
我想有VIP购买按钮,我有从PP生成的文本框按钮,该代码不完整,它的经典IPN代码是paypal在教程中给你的,我只显示部分更改:Paypal 即时付款通知,paypal,paypal-ipn,Paypal,Paypal Ipn,我想有VIP购买按钮,我有从PP生成的文本框按钮,该代码不完整,它的经典IPN代码是paypal在教程中给你的,我只显示部分更改: ........... // STEP 3: Inspect IPN validation result and act accordingly if (strcmp ($res, "VERIFIED") == 0) { // The IPN is verified, process it: // check whe
...........
// STEP 3: Inspect IPN validation result and act accordingly
if (strcmp ($res, "VERIFIED") == 0) {
// The IPN is verified, process it:
// check whether 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 the notification
// 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'];
$player_indentificator = $_POST["player_id"];
mail("ales.nezbeda@gmail.com", "TEST", $player_indentificator)
// IPN message values depend upon the type of notification sent.
// To loop through the &_POST array and print the NV pairs to the screen:
foreach($_POST as $key => $value) {
echo $key." = ". $value."<br>";
}
} else if (strcmp ($res, "INVALID") == 0) {
// IPN invalid, log for manual investigation
echo "The response from IPN was: <b>" .$res ."</b>";
}
?>
但是当我付钱时,我没有收到那封电子邮件。为什么?也许我做错了什么,也许是大错特错。1您需要确保您使用的帐户已启用IPN。如果您正在使用沙箱,那么您需要确保在该帐户配置文件中启用了IPN,并指向您想要使用的IPN URL。如果您使用的是live帐户,那么您在该live帐户中也会执行相同的操作。我经常看到人们在一个地方安装了它,但他们却向另一个地方提交了付款。确保这里不是这样 2可使用HTML按钮中的notify_url参数或API请求中的NotifyURL参数覆盖配置文件。你在使用这两种方法中的任何一种吗?如果是这样的话,请仔细检查URL的值,以确保您找到了正确的URL 3如果您已经验证了上述内容,那么您需要查看您正在使用的PayPal帐户中的IPN历史记录。它将在事务发生时向您显示它是否发送IPN,还将显示它在发布IPN时从您的服务器返回的结果代码 如果您在IPN历史记录中没有看到任何日志,那么您需要仔细检查我上面提到的内容,因为出于某种原因,它根本没有配置为发送 如果您确实在那里看到日志,但它们显示的结果不是200,那么这意味着您需要解决IPN脚本的问题。可能是语法错误或诸如此类的愚蠢行为。查看web服务器日志有助于确定错误 我喜欢做的另一件事是创建一个简单的HTML表单,其中包含一组隐藏字段,这些字段表示我希望从IPN中获得的内容。将表单的操作设置为您的IPN URL,然后您可以将其加载到浏览器中并提交以在屏幕上查看结果。这可以大大提高您发现和解决问题的能力。一旦你让一切按预期的方式工作,你可以放心,当真正的IPN被发送时,它将以同样的方式工作
请记住,当以这种方式进行测试时,数据并非来自PayPal,因此无法验证。您需要确保您的代码逻辑已设置为相应地处理该问题。我喜欢记录未经验证的IPN,并给自己发送电子邮件,我需要调查交易,因为交易未经验证 您是否在代码中执行过“邮件”行?它有错误吗?你查过了吗?你没有提供足够的信息,这根本不是安全漏洞。IPN回电话给PayPal,确认数据是否来自他们。您的代码逻辑可以很容易地丢弃或记录任何未经验证的IPN,有人可能会使用它。当人们遇到问题时,我通常也会询问他们的IPN URL,这样我就可以自己点击它,看看结果如何。这有助于解决问题。@EJP您能通过了解IPN URL让我知道这里的安全漏洞是什么吗?