Paypal + ASP .NET Web应用程序集成的基本工作流程问题

时间:2010-09-16 10:27:39

标签: asp.net paypal

我正在为我的软件产品设置支付网关,用户可以通过网络购买并使用。我正在使用paypal网站支付标准开始。

有一个基本问题困扰着我。我的用户的工作流程是: 登录我的产品网站(试用期免费许可证) - >支付延长许可证

现在假设用户 - xyz@abc.com在我的网站上注册并登录。然后我向他显示立即购买按钮(paypal)。他点击它,被重定向到paypal,付费,被重定向回我的网站。在后台,我设置了paypal的IPN功能,并收到有关此交易及其详细信息的通知。现在 - 如何将此次购买与我的用户相关联?我怎么知道xyz@abc.com已付款。

注意:由于其基本缺陷,我没有使用autoreturn + PDT方法 - 如果用户在付款后关闭浏览器但在返回自动转回页面之前,我的后付款逻辑永远不会运行。使用IPN可以保证支付后付款逻辑的运行,但如何将付款与我的网站上发起并完成付款的用户名相关联?

2 个答案:

答案 0 :(得分:2)

对于您的用户付款,您需要创建一个您为付款发送的唯一ID,然后将其恢复到IPN。

用于将其置于PayPal上的代码:“发票

以下是代码: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables

请看表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://weblogs.asp.net/joewrobel/archive/2008/02/03/web-profile-builder-for-web-application-projects.aspx

这是另一种很酷的方法:

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