【发布时间】:2025-11-28 20:20:09
【问题描述】:
我已经设置了一个 PayPal 按钮,启用了 IPN 并设置了一个 IPN 侦听器页面,用于验证付款是否已完成,并发送一封电子邮件,其中包含指向在 30 天后到期的安全下载页面的链接(AWS S3 到期网址)。
只要他们收到我的电子邮件,一切都很好。
我还想让 IPN 侦听器页面显示我的安全下载链接,但不知道如何防止任何人随时点击 IPN 侦听器页面并生成新的下载链接。
我打算使用会话变量,在侦听器页面上设置为 on,然后重定向到另一个我将显示安全链接的页面。在该页面上,我将检查会话变量是否在付款完成后设置,但会话变量不适用于 IPN 流程,因为它是 2 个不同的会话。验证的会话是服务器到服务器,买家看到的页面不在同一个会话中。
我怎样才能显示下载链接,但知道显示它的页面只有在完成付款后才能访问?有没有我可以检查的引荐网址之类的东西?因为它们是通过贝宝发送到该页面的,所以我似乎应该能够检查,但我不知道如何。
我在一个非常简单的 webforms 项目中使用 C#。我没有使用数据库。
【问题讨论】:
-
如果“IPN 侦听器页面”验证付款已发生,那么其他人怎么会欺诈?
-
如果你查看paypal按钮的代码,监听页面的url是可见的。如果他们知道在哪里寻找它,任何人都可以最终找到它。侦听器页面在从 PP 获取数据并对其进行检查之前,不知道它是否经过验证,但该过程是服务器到服务器的,您无法访问买家看到的会话中的信息。如果侦听器 url 不在按钮 html 中,则可能不会有问题。
-
看起来您应该能够在没有按钮 html 的情况下设置侦听器页面 url,但是当我尝试这样做时(这是卖方设置中的设置),它不起作用。我目前在设置和按钮中将其设置为返回 url 和 notify_url。
-
如果'listener URL'是指为按钮配置的IPN URL,我再次看不到问题。该 URL 应该只能用于 POST,并且只能从 PayPal 主机访问,并且需要执行 PayPal 验证回调,即使外部用户通过 POST 问题,他们肯定会失败,如果您配置资源,他们就不能正确。
标签: paypal paypal-ipn