在标准的 Paypal IPN PHP 脚本中,有这样一行来评估支付是否成功:
if ($_POST["payment_status"] == "Completed" && $_POST["receiver_email"] == $email)
评估付款状态的目的很明显。但据我所知,比较的第二部分似乎并没有增加多少值(value)。
据我所知,$email
值只是您希望将错误和成功付款确认电子邮件发送到的位置。 receiver_email
只是附加到 Paypal 商家帐户的电子邮件。
在我看来,这些可能不是一回事。尤其是在使用 Paypal 沙箱进行测试时,这一直让我感到困惑,因为商家电子邮件地址是在我设置帐户时部分自动生成的,所以无论如何我都不能在这个地方接收电子邮件。
因此,由于两个电子邮件地址可能不同,我最初的想法是这种比较并不那么重要。但也许我遗漏了一个重要的安全考虑因素。
这种比较很重要吗?
最佳答案
是的,在大多数情况下这是一项关键检查,因为如果您在发布请求(按钮)中发送 IPN,恶意用户可能会向他自己的 PayPal 地址付款。
因为您有 2 个 paypal 帐户,所以更容易更换
$_POST["receiver_email"] == $email
与
in_array($_POST["receiver_email"], array("myemail1", "myemail2"))
就我个人而言,即使您的 IPN URL 被很好地隐藏并配置在您的帐户中,我也不会跳过接收者检查。我的简单方法将使您免受恶意请求的侵害。
关于paypal - 比较收件人电子邮件是 Paypal IPN 脚本的关键部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10579476/