2011-09-22 186 views
0

我正在开发一个网站,用户可以使用paypal购买功能。如果用户的PayPal电子邮件与我们网站中存储的电子邮件不同,我如何通过IPN得到有关用户付款的通知?Paypal IPN问题

+0

您是否不将某种订单ID传递给paypal,这是您如何识别订单的方式?当然,如果你使用电子邮件地址作为唯一的标识符,如果他们已经放置了多个订单,你将不知道它指的是哪一个? – Bex

回答

1

你用C#标记了你的问题,所以我假设你正在开发一个ASP.NET站点。在没有更具体的信息的情况下,我会假设您正在为您的网站使用默认的SqlMembershipProvider。

因此,要识别您的用户,您应该使用MembershipUser对象的ProviderUserKey属性。使用下面的代码来获取ProviderUserKey您当前登录的用户:

MembershipUser currentUser = Membership.GetUser(); 
string userId = currentUser.ProviderUserKey.ToString(); 

一旦你有一个包含ProviderUserKey一个字符串,则可以使用自定义HTML变量的形式传递给贝宝:

<input type="hidden" name="custom" value="<%=userId%>"/> 

当PayPal发送IPN消息时,它将发回您为自定义HTML变量设置的值。你可以从Response.Form得到这个值,并得到相应的用户:

object userId = Request.Form["custom"]; 
MembershipUser user = Membership.GetUser(userId); 

希望这有助于!

0

您需要使用用户的电子邮件(他/她用于您的网站的电子邮件)作为标识符。

当用户付款给您时,您的网站需要将此电子邮件作为“自定义”字段发送到PayPal,并且PayPal会将其发回给您以及其他IPN通知参数。