我正在使用ASP.Net Membership Provider登录此网站的优质内容。内容不是下载,它是信息和折扣的网页等。这部分已经完成。我们希望他们也有PayPal订阅年度付款以查看优质内容。我希望ASP会员和PayPal订阅能够尽可能地协同工作,但至少我认为他们必须在付款之前创建一个MemberId。然后我会将该MemberId发送给PayPal以将两者联系起来。
我想我可以这样做:
在界面中设置“自动返回”,以便在付款时重定向以返回URL。
将“返回URL”查询字符串设置为MemberId。这不需要使用预编译的“已保存”按钮。我必须在Code Behind中使用Name Value Pairs设置它,将“NVP”设置为PayPal。我希望只是粘贴愚蠢的按钮。
然而,按钮制造商中有那些“高级变量”。问题是它们被编译到“已保存”按钮中,因此我无法为每个人更改它们。但也许一个参数可以与编译参数分开?这比黑客返回URL更好吗? “高级变量”对任何事情都有好处吗?
如果输入正确的代码(可能是rm = 2),那么有关该事务的所有详细信息都将张贴到返回URL。 (对吗?)然后我就可以录制它了。
但据说这个过程不可靠,PayPal建议使用他们拥有的二级系统“IPN”。 PayPal将交易详情发送给我。我发回了http 200代码。然后我按照我得到的顺序将它发回给他们。然后他们发给我http 200.然后我们都知道这很好。这对我来说听起来像是几个小时的研究,但如果你已经做过一次,那听起来像是复制和粘贴。我讨厌重新发明轮子。是否存在此IPN握手/跳舞的.Net示例?
另外,如果我做IPN的话,也许我不需要自动返回。也许我将MemberId添加到“通知”URL而不是“返回”URL。然后PayPal可以处理确认页面,电子邮件等。这样更好吗?
假设我们获得为MemberId支付并记录的订阅,每个用户会话至少一次,在他们登录后,我必须检查他们是否已经支付了他们的PayPal订阅以及它是否是最新的。 “GetRecurringPaymentsProfileDetails”执行此操作,但它是一个API操作。这是有道理的,但我希望避免学习他们的REST API。 (是否有“NVP”版本?)
REST API OAUTH令牌每隔几分钟就会过期,但它告诉你获取一个令牌的唯一方法是使用“Bash”来“cURL”一些Linux命令。同样,这似乎只需要写一次。这是否已作为示例代码存在于某处?
(我不想使用API进行订阅,因为我不希望信用卡号码进入我们的网站。太多的责任。这就是我想要PayPal的原因。)
这甚至会起作用吗?我知道PayPal有18种方法可以做所有事情而且它们都互相排斥,而我只是觉得我正在创造一堆拼凑不相关的想法来欺骗自己,相信隧道尽头有一盏明灯。我已经研究和试验了10个小时左右。我真的以为,进去,我只是粘贴一个愚蠢的按钮。
答案 0 :(得分:0)
如果您只想复制愚蠢的按钮"然后你必须坚持付款标准,然后你将受限于你能做什么。例如,您无法使用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绝对是事后处理的方式。
.NET IPN示例 - https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.asp