匹配用户电子邮件与PayPal电子邮件从IPN


Matching user email with PayPal email from IPN

我正在从本教程和ipnlistener.php中配置一个PayPal IPN监听器。

当我需要用户付款时,我向他展示这个表单

<form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr" 
    method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="<? echo $myPaypalEmail; ?>">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="item_name" value="Digital Download">
    <input type="hidden" name="amount" value="<? echo $price; ?>">
    <input type="hidden" name="return" value="THIS URL">
    <input type="hidden" name="notify_url" value="myhost.com/ipn.php">
    <input type="image" src="http://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif" 
        border="0" name="submit">
</form>

按照指南,我正确地接收到对文件ipn.php的POST请求。我收到了很多关于付款的有用数据,但我的问题是:我如何知道哪个用户进行了付款?

"用户"是在我的网站上注册的人,给我个人信息和他/她的电子邮件地址。我如何将这些信息连接到我从PayPal收到的POST请求?在我的网站注册时使用的邮箱可能与PayPal使用的邮箱不同。

我可以想到两个解决方案:

a)在返回URL中放置一个唯一的用户id,用$_GET解析它,然后…这根本不能解决问题。

b)在交易开始时立即获取付款ID。但是我不知道该怎么做。

可以看到,我的问题是将用户与事务id关联起来。工作流程是:

HTML Form -> Paypal website -> ipn.php

HTML表单有用户信息,而ipn.php接收交易信息:我需要用户信息进入ipn.php,以检查是否已正确支付总额,并执行对用户帐户的东西。我该怎么做呢?

许多谢谢。

您还可以在"custom"字段中传递用户ID。这可以是任何你想要的,最多255个字符。这将传递给Paypal,并在IPN响应中发送。当我存储IPN数据时,我使用这个字段来区分我的各种数据库。

<input type="hidden" name="item_number" value="UNIQUE_USER_ID">

item_number允许来回传递任意数值。我可以用它来识别支付的用户。$_POST['item_number']将允许在ipn.php文件中看到此值。