Paypal IPN:付款后更新列的值?

时间:2013-04-14 21:51:47

标签: php mysql paypal paypal-ipn

我有两份文件:

  1. 的index.php
  2. thankyou.php
  3. 在index.php中,用户提交他的电子邮件(我将其保存到名为“email”的数据库表列中),然后转到PayPal并进行付款。然后使用thankyou.php我想更新我的电子邮件列所在的数据库,该列称为premium,默认值为0现在付款后它应为1 ...

    简单的方法可能是说电子邮件(在index.php中提交)将其与Paypal付款中提交的“payer_email”进行比较。 我怎样才能做到这一点?会议?饼干?他们似乎不适合我,我怎么能这样做? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您不需要任何会话或Cookie,只需使用常规UPDATE ... SET premium = 1 WHERE email = :1:1为$_POST['payer_email']

我知道您不确定您的记录中的电子邮件是否是买家用于登录PayPal的电子邮件,因此您必须使用自定义字段paypal树叶。 请执行以下操作:

  1. 在数据库中记录客户端ID
  2. 创建paypal按钮,添加以下字段:
  3. <input type="hidden" name="custom" value="yourclientid">

    1. 接收ipn时,使用$_POST['custom']检索自定义字段并使用此唯一对应方式更新数据库,因此您不必怀疑使用了哪个电子邮件。
    2. 请注意,这对于paypal常用的“购买”按钮有效。对于订阅,事情可能会略有不同,因为在第一次ipn之后custom字段不再通过。

      希望它有所帮助。 S上。

答案 1 :(得分:0)

事件序列包含在PayPal的API文档中。我建议您阅读它以了解该过程的工作原理。

为了让您入门,您需要使用PayPal注册返回URL(thankyou.php),然后将Instant Payment Notification(IPN)作为POST对象提交到注册的URL,您应该验证POST对象使用PayPal确保其有效,之后您可以解析字段,并根据需要提取完成您自己的过程所需的任何数据。