使用具有 ASP.Net 会员资格的 PayPal 定期付款订阅有障碍吗?

Roadblocks with using PayPal Recurring Payment Subscription with ASP.Net Membership?

我正在使用 ASP.Net 会员提供程序登录此网站的高级内容。内容不是下载,而是信息和折扣等网页。这部分已经完成。我们希望他们也有 PayPal 订阅年度付款来查看高级内容。我希望 ASP Membership 和 PayPal Subscription 尽可能协同工作,但我认为至少他们必须在付款前创建一个 MemberId。然后我会将该 MemberId 发送到 PayPal 以关联两者。

我想我可以这样做:

在界面中设置"Auto Return",付款时跳转到return URL

将 "return URL" 查询字符串设置为 MemberId。这不需要使用预编译的 "Saved" 按钮。我必须将其设置在带有名称值对的代码隐藏中,"NVP" 到 PayPal。我希望只是粘贴愚蠢的按钮。

但是,按钮制造商中有那些 "Advanced Variables"。问题是它们被编译到“已保存”按钮中,所以我无法为每个人更改它们。但也许那个参数可以与编译参数分开?这比破解 return URL 更好吗? "Advanced Variables" 有什么用吗?

如果我输入正确的代码(可能是 rm=2),有关交易的所有详细信息将发布到 return URL。 (对吧?)那我就录下来吧

不过据说此过程不可靠,PayPal 建议使用他们拥有的辅助系统 "IPN"。 PayPal 将交易详情发送给我。我将 http 200 代码发回给他们。然后我按照收到的顺序将其发回给他们。然后他们发给我http 200。然后我们都知道这很好。对我来说,这听起来像是几个小时的研究,但如果你已经做过一次,听起来就像是复制和粘贴。我讨厌重新发明轮子。是否有此 IPN handshake/dance 的 .Net 样本?

此外,如果我使用 IPN,也许我不需要 Auto Return。也许我将 MemberId 添加到 "notify" URL 而不是 "return" URL。然后PayPal可以处理确认页、邮件等,这样更好吗?

假设我们收到订阅付款并使用 MemberId 记录,每个用户会话至少一次,在他们登录后,我必须检查他们是否已支付 PayPal 订阅费用以及是否是最新的。 "GetRecurringPaymentsProfileDetails" 这样做,但它是一个 API 操作。这是有道理的,但我希望避免学习他们的 REST API。 (有"NVP"版本吗?)

REST API OAUTH 令牌每隔几分钟就会过期,但它告诉我们获取令牌的唯一方法是使用 "Bash" 到 "cURL" 一些 Linux 命令。同样,这似乎是那种只需要写一次的东西。这是否已作为示例代码存在于某处?

(我不想使用 API 进行订阅,因为我不希望信用卡号码进入我们的网站。责任太多。这就是我想要 PayPal 的原因.)

这还能用吗?我知道 PayPal 有 18 种方法来做所有事情,而且它们都相互排斥,我只是觉得我正在创造一些不相关的想法来欺骗自己,让自己相信隧道尽头有光。我已经研究和试验了 10 个小时左右。我真的以为,进去,我只是在粘贴一个愚蠢的按钮。

如果您只想 "copy the stupid button",那么您将不得不坚持使用付款标准,然后您的能力就会受到限制。例如,您将无法使用 GetRecurringPaymentsProfileDetails 进行标准订阅。

相反,您需要使用 Express Checkout 和/或 Payments Pro。确实有一个 NVP API 可用于这些,还有一个 SOAP/XML 版本。有关这些的详细信息,请参见此处:https://developer.paypal.com/docs/classic/api/

具体来说,对于快速结帐,您需要 SetExpressCheckout、GetExpressCheckoutDetails、DoExpressCheckoutPayment 和 CreateRecurringPaymentsProfile。其中一些调用是可选的,具体取决于您如何使用结帐流程配置事物。

对于 Payments Pro,您将使用 DoDirectPayment / CreateRecurringPaymentsProfile 或 PayFlow,具体取决于他们为您提供的版本。

无论如何,IPN 绝对是 post 交易处理的方式。

.NET IPN 示例 - https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.asp