我正在为我的软件产品设置支付网关,用户可以通过网络购买并使用。我正在使用paypal网站支付标准开始。
有一个基本问题困扰着我。我的用户的工作流程是: 登录我的产品网站(试用期免费许可证) - >支付延长许可证
现在假设用户 - xyz@abc.com在我的网站上注册并登录。然后我向他显示立即购买按钮(paypal)。他点击它,被重定向到paypal,付费,被重定向回我的网站。在后台,我设置了paypal的IPN功能,并收到有关此交易及其详细信息的通知。现在 - 如何将此次购买与我的用户相关联?我怎么知道xyz@abc.com已付款。
注意:由于其基本缺陷,我没有使用autoreturn + PDT方法 - 如果用户在付款后关闭浏览器但在返回自动转回页面之前,我的后付款逻辑永远不会运行。使用IPN可以保证支付后付款逻辑的运行,但如何将付款与我的网站上发起并完成付款的用户名相关联?
答案 0 :(得分:2)
对于您的用户付款,您需要创建一个您为付款发送的唯一ID,然后将其恢复到IPN。
用于将其置于PayPal上的代码:“发票”
请看表4。
发票 - > 您可以使用直通变量来标识此次购买的发票编号。
以下是IPN https://www.paypal.com/us/cgi-bin/webscr?cmd=p/pdn/ipn-codesamples-pop-outside
的代码if(strResponse ==“VERIFIED”) {...您可以通过阅读 Request.Form [“发票”]获取发票... 强>
Ps您可以同时使用PDT和IPN,也可以合并两者的结果。
答案 1 :(得分:1)
您需要设置ASP.NET配置文件以注册订阅者。这允许您在通过IPN验证后为数据库中的每个用户存储额外的详细信息。在将详细信息发送到PayPal之前,您可以创建一个GUID以将订单与注册用户相关联。
如果您使用的是ASP.NET网站项目模板,则可以使用开箱即用的配置文件。如果您使用的是ASP.NET Web应用程序项目模板,则可以使用Web Profile Builder来设置“个人档案”:
这是另一种很酷的方法:
http://leedumond.com/blog/asp-net-profiles-in-web-application-projects/
要将付款与您网站上的用户名相关联,生命周期如下:
1)使用PayPal Subscriptions处理初始免费期: - )
2)用户在您的网站上订阅并被定向到PayPal网站
3)您的IPN课程与PayPal握手并获取PayPal返回的值
4)您的IPN课程会更新您的应用程序数据库,并向订阅者生成一封电子邮件,其中包含在您的网站上注册的返回URL
5)您的IPN类使用订阅数据
为商家生成电子邮件(备份)6)订阅者在您的网站上创建一个用户帐户,并设置您要在其个人资料中存储的任何额外会员信息
protected void Createuserwizard1_CreatingUser(object sender, EventArgs e)
{
WebProfile p = WebProfile.GetProfile(CreateUserWizard1.UserName, true);
p.Initialize(CreateUserWizard1.UserName, true);
p.subscriberID = ViewState["SubscriberID"].ToString();
p.subscriberExpireDate = ViewState["ExpireDate"].ToString();
p.Save();
}
一些问题:
请勿使用PayPal的返回网址
Do not mix IPN and PDT。 IPN就是您所需要的一切
创建配置文件时不要忘记Save()方法:-S