【问题标题】:Paypal IPN ProblemPaypal IPN 问题
【发布时间】:2011-09-22 06:26:27
【问题描述】:

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

【问题讨论】:

  • 您是否没有将某种订单 ID 传递给贝宝,这就是您识别订单的方式?当然,如果您使用电子邮件地址作为唯一标识符,如果他们下了多个订单,您将不知道它指的是哪一个?

标签: c# asp.net paypal-ipn


【解决方案1】:

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

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

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

一旦您有了一个包含 ProviderUserKey 的字符串,您就可以使用表单中的自定义 HTML 变量将其传递给 PayPal:

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

当 PayPal 发送 IPN 消息时,它将发回您为自定义 HTML 变量设置的值。可以从 Response.Form 中获取值,获取对应的用户:

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 2019-12-01
      • 2012-04-08
      • 2012-01-26
      • 2011-08-07
      • 2016-04-29
      • 1970-01-01
      • 2012-10-09
      • 2014-02-26
      相关资源
      最近更新 更多