PayPal、IPN 和安全的下载页面

PayPal, IPN and a secure downloads page

我已经设置了一个 PayPal 按钮,启用了 IPN 并设置了一个 IPN 侦听器页面来验证付款是否已完成并发送一封带有 link 的电子邮件到一个 30 天后过期的安全下载页面(AWS S3 即将到期 url).

一切都很好,只要他们收到我的电子邮件。

我还想让 IPN 侦听器页面显示我的安全下载 link,但不知道如何防止任何人在他们想要的任何时候点击 IPN 侦听器页面并生成新的下载link.

我打算使用会话变量,在侦听器页面上设置,然后重定向到我将显示安全 link 的另一个页面。在该页面上,我会检查会话变量是否在付款完成后设置,但会话变量不适用于 IPN 流程,因为它是 2 个不同的会话。做验证的session是server to server,买家看到的页面不在同一个session中

如何显示下载 link 但知道显示它的页面只有在完成付款后才能访问?有没有类似推荐人 url 的东西我可以查一下?因为它们是通过 paypal 发送到该页面的,所以我似乎应该可以检查一下,但我不知道如何。

我在一个非常简单的 webforms 项目中使用 C#。我没有使用数据库。

我的设置方式不正确。阅读 EJP 的评论后,我回去查看了我的设置。我有相同的 Return URL 和 Notify_url,都转到 IPN 侦听器。我还在按钮 HTML 代码中看到了这些。

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

Return url 是 PayPal 在交易后将用户带到的地方 - return 将他们带到您的站点。如果您在创建按钮时使用 rm=2 作为高级变量,那么 PayPal 将 POST 向 Return url 提供与 IPN 侦听器页面相同的信息(至少如此这就是我所看到的)。

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

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