我想拥有VIP购买按钮,我有带文本框的按钮(由PP生成)和这个代码(它不完整,它的经典IPN代码是paypal在教程中给你的,我只显示部分变化):< / p>
...........
// 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>";
}
?>
但是当我支付时,我没有收到那封电子邮件。为什么?也许我做错了,也许是非常错误。
答案 0 :(得分:0)
1)您需要确保在您正在使用的帐户中启用了IPN。如果您正在使用沙箱,则需要确保在该帐户配置文件中启用IPN并指向您要使用的IPN URL。如果您正在使用真实帐户,则可以在该真实帐户中执行相同的操作。我经常看到有人在一个地方设置它,但后来他们向另一个地方提交了付款。确保这不是这种情况。
2)可以使用HTML按钮中的notify_url参数或API请求中的NotifyURL参数覆盖配置文件。您使用这些方法中的任何一种吗?如果是这样,请仔细检查URL的值,以确保您访问正确的URL。
3)如果您已验证上述内容,则需要在您正在使用的PayPal帐户中查看您的IPN历史记录。它会告诉你它是否在发生交易时发送IPN,它还会显示它在发布IPN时从服务器返回的结果代码。
如果您在IPN历史记录中没有看到任何日志,那么您需要仔细检查我上面提到的内容,因为它由于某种原因而没有配置为发送。
如果你确实看到了那里的日志,但是他们显示的结果不是200,那么这意味着你的IPN脚本有问题需要解决。可能是语法错误或类似的东西。查看Web服务器日志可以帮助您确定错误。
我喜欢做的另一件事是创建一个简单的HTML表单,其中包含一些隐藏字段,这些字段代表了我期望从IPN获得的内容。将表单的操作设置为您的IPN URL,然后您可以在浏览器中加载它并提交它以在屏幕上查看结果。这可以极大地提高您查找和修复问题的能力。一旦你按照预期的那样使一切工作正常,你可以放心,当发送真正的IPN时,它将以相同的方式工作。
请记住,在测试时,数据不是来自PayPal,因此无法验证。您需要确保设置代码逻辑以相应地处理它。我喜欢记录未经验证的IPN并向我发送一封电子邮件,我需要查看该事务,因为它未经验证。