【问题标题】:PayPal, IPN and a secure downloads pagePayPal、IPN 和安全下载页面
【发布时间】: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


【解决方案1】:

我进行此设置的方式不正确。在阅读了 EJP 的评论后,我回去查看了我的设置。我有相同的返回 URL 和 Notify_url,都去 IPN 监听器。我在按钮的 HTML 代码中也有它们可见的地方。

Notify_url 仅适用于 IPN 侦听器。这是服务器到服务器,是我生成带有下载链接的电子邮件的地方。

Return url 是 PayPal 在交易后将用户带回您的网站的地方。如果您在创建按钮时使用 rm=2 作为高级变量,那么 PayPal 会将相同的信息发布到 Return url,就像它发布到 IPN 侦听器页面一样(至少到目前为止我看到的是)。

使用 POST 数据,您可以检查它是否是来自 PayPal 的交易,然后运行代码以在 Return url 上显示安全下载链接。如果有人浏览该页面,他们将看不到任何内容。

最初,当我测试按钮创建部分并不能很好地工作时,我最终将不同的隐藏输入放在按钮 html 中,并将所有内容设置为相同的 url - 我不确定是什么notify 和 return 之间的区别是,这就是我误入歧途的地方。

【讨论】:

    最近更新 更多