paypal ipn传递参数

时间:2010-05-24 14:16:02

标签: php paypal paypal-ipn

我想在用户付款后从paypal获取用户ID。

Pay.php

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="<?php echo $merchant_email ?>">
<input type="hidden" name="item_name" value="IPN test">
<input type="hidden" name="item_number" value="1">
<input type="hidden" name="amount" value="0.01">
<input type="hidden" name="notify_url" value="<?php echo $ipn_url ?>">
<input type="hidden" name="return"     value="<?php echo $return_url ?>">
<input type="hidden" name="cancel_return" value="<?php echo $cancel_url ?>">
<input type="hidden" name="userid" value="888">
<input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif"
       border="0" name="submit" alt="Buy Now">

所以我会在我的paypal帐户中启用ipn并指向http://www.domain.com/ipn.php

在ipn.php代码中

<?php
$userid = $_POST['userid'];


$qry = "INSERT into mypayments(userid) VALUES ('$userid') “;
$result = mysql_query($qry,$db);
?>

这是对的吗?我如何从贝宝获得验证?

3 个答案:

答案 0 :(得分:8)

我认为 userid 是一个错误的名称,不会在您的IPN邮件中返回。我使用可选字段来传递ID和处理事务所需的东西。

这些可选标记 on0 on1 on3 表示自定义字段名称, os0 ,<自定义字段值的strong> ls1 和 os2 。这些值可以达到 on6 os6

我会发送 on0 ,其值为“UserID”, os0 为实际ID。

这些值将在IPN中表示如下:

os0 表示为 option_selection1

os1 表示为 option_selection2

os2 表示为 option_selection3

on0 表示为 option_name1

on1 表示为 option_name2

on2 表示为 option_name3

Here's the info on PayPal's HTML parameters

答案 1 :(得分:1)

使用“自定义”变量。

<input type="hidden" name="custom" value="user_id" />

答案 2 :(得分:0)

这是一个两步过程。

PayPal会将IPN发布到您在$ipn_url中指定的网址。

当您使用额外的VERIFIED参数(details)将所有IPN数据发布回PayPal时,您会收到cmd=_notify-validate响应。

PHP sample here