0

我有 2 个文件:

  1. 索引.php
  2. 谢谢你.php

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

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

4

2 回答 2

1

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

我了解您不确定您记录中的电子邮件是否是买家用来登录贝宝的电子邮件,因此您必须使用贝宝留给您的自定义字段。执行以下操作:

  1. 在数据库中记录客户 ID
  2. 创建添加以下字段的贝宝按钮:

<input type="hidden" name="custom" value="yourclientid">

  1. 收到 ipn 时,$_POST['custom']使用此唯一对应关系检索自定义字段并更新您的数据库,因此您不必怀疑使用了哪个电子邮件。

请注意,这对贝宝常见的“购买”按钮有效。对于订阅,情况可能会略有不同,因为在第一个 ipn 之后,该custom字段不再传递。

希望它有所帮助。S。

于 2013-04-14T22:06:06.160 回答
0

PayPal 的 API 文档中介绍了事件顺序。我建议您阅读它以了解该过程的工作原理。

开始之前,您需要向 PayPal 注册返回 URL(thankyou.php),然后即时付款通知(IPN)将作为 POST 对象提交到注册的 URL,您应该使用 PayPal 验证 POST 对象以确保它有效,之后您可以解析字段,并根据需要提取完成您自己的流程所需的任何数据。

于 2013-04-14T22:12:25.570 回答