PHP会员脚本+PayPal IPN,我需要请求和比较哪些信息?

3
所以我有一个产品。为了让用户购买它,他们需要创建一个帐户。该帐户稍后将用于访问我的产品。
我的问题是:在注册(付款之前)时,我要求用户提供哪些信息?我需要与之比较的内容,当Paypal发送通知时使用。我的意思是:如果我只要求用户名和密码-我如何知道是那个特定的用户付款,并相应地更新数据库?
显然,我还想要求名字,姓氏和电子邮件。我提出上述情况的原因是因为我看到其他会员网站要求提供电子邮件(而不是PayPal电子邮件),但他们不能确定名字,姓氏和/或电子邮件是否与客户在其PayPal上拥有的信息匹配。
简而言之:我如何在收到通知时更新客户的帐户(将数据库中的Active字段设置为TRUE或其他内容),并验证/验证哪些信息?
如果我的问题不够清楚,请不要犹豫让我知道。 :)

问题已经很清楚了,但对我来说这就是我正在寻找的。如果你有正确的答案,请让我们分享。 - Humphrey
1个回答

5
嗯,我认为这与普通的“如何确切知道产品X是否通过PayPal付款”并没有什么不同。您在这里出售的是会员订阅,而不是实物产品,否则基本上是相同的。

当您将用户发送到PayPal时,只需在PayPal数据中同时发送唯一标识符以供用户使用。(如果您不想创建要销售的“产品”,则可以直接使用用户表的ID。)使用“custom”字段或“item_number”字段传递此信息。 PayPal将在IPN中将这两个信息都传回给您,您可以使用它来验证是否为该用户进行了支付。

如果您担心用户冒充其他用户进行付款,则可以a)加密您发送到PayPal的所有数据,并b)设置您的PayPal设置仅接受加密购物车数据。

编辑:有关向PayPal传递信息的更多具体信息:

您可以使用许多变量将信息发送到PayPal。假设您正在使用网站支付标准和购物车功能,这可以分为两个部分。

  1. 适用于整个交易的字段。请参见此文档中的第4表:https://www.x.com/docs/DOC-1332#id08A6HH0D0TA
  2. 适用于单个项目的字段。请参见同一文档中的表5。

并非所有信息都会在IPN中传回给您。要查看IPN中传回给您的内容,请查看此处的“示例IPN消息”部分:https://cms.paypal.com/cgi-bin/marketingweb?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro

您需要的是一个信息片段,即a)您传递给PayPal以唯一标识用户的信息,并且b)PayPal在IPN中将其传回给您。

我建议您使用称为“custom”的变量来实现此目的。(请参见表4:付款交易的HTML变量。)

您在“custom”变量中传递的确切内容取决于您。您可以发送a)用户表中的ID,b)他们在您网站上注册的电子邮件地址,c)其中之一的哈希值……只要它能够唯一地标识用户,这样当您收到IPN时,您就可以说“我知道这笔付款是给用户X的”。


我不确定如何在PayPal数据中“发送ID”,以及如何从IPN中读取它。您能否进一步解释一下,最好附带一些最基本的代码示例? :) - Jeff
这在很大程度上取决于您如何实现PayPal。如果您正在使用网站支付标准和HTML购物车,那么这是一个链接,其中包含您可以与用户一起发送到PayPal的完整信息套件。https://www.x.com/docs/DOC-1332#id08A6HH0D0TA。 - cailinanne
为了您的目的,您可以将有关此用户的信息发送到自定义字段或item_number字段中。两者都将在IPN中返回给您。请参见此处的“示例IPN消息”部分:https://cms.paypal.com/cgi-bin/marketingweb?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro - cailinanne
@cailinanne - 那我只能使用一个自定义字段吗? - Jeff
谢谢,我相信我明白了。 :) - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接