PayPal付款请求通知:未定义的索引

时间:2014-08-28 05:42:21

标签: php paypal

我使用以下代码将PayPal支付系统集成到我的网站上,付款后我收到以下通知和“付款失败”,即使一切顺利。

Notice: Undefined index: item_name in /Applications/XAMPP/xamppfiles/htdocs/payment/success.php on line 2

Notice: Undefined index: tx in /Applications/XAMPP/xamppfiles/htdocs/payment/success.php on line 3

Notice: Undefined index: amount in /Applications/XAMPP/xamppfiles/htdocs/payment/success.php on line 4

Notice: Undefined index: currency_code in /Applications/XAMPP/xamppfiles/htdocs/payment/success.php on line 5

Payment Failed

我使用以下代码创建付款按钮

<div class="btn">
<form action="<?php echo $paypal_url ?>" method="post" name="frmPayPal1">
<input type="hidden" name="business" value="<?php echo $paypal_id ?>">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="item_name" value="20Percents (12 Credits)">
<input type="hidden" name="item_number" value="1">
<input type="hidden" name="credits" value="12">
<input type="hidden" name="userid" value="1">
<input type="hidden" name="amount" value="10">
<input type="hidden" name="cpp_header_image" value="http://20percents.com/wp-content/uploads/2014/06/logo-1.png">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="handling" value="0">
<input type="hidden" name="cancel_return" value="http://localhost/payment/cancel.php">
<input type="hidden" name="return" value="http://localhost/payment/success.php">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form> 

并且,以下代码验证付款:

<?php
$item_name          = $_GET['item_name']; // I also tried $_REQUEST['item_name']; instead
$item_transaction   = $_GET['tx']; // Paypal transaction ID
$item_price         = $_GET['amount']; // Paypal received amount
$item_currency      = $_GET['currency_code']; // Paypal received currency type

$price = '10.00';
$currency='USD';

//Rechecking the product price and currency details
if($item_price==$price && $item_currency==$currency)
{
    $content = "<h1>Welcome, Guest</h1>";
    $content .= "<h1>Payment Successful</h1>";
}
else
{
    $content = "<h1>Payment Failed</h1>";
}
?>

我不知道为什么收到这些通知,我们非常感谢任何帮助。感谢

3 个答案:

答案 0 :(得分:1)

您在表单中提供的方法是POST。但是使用$_GET[]获取值。 将表格更改为

<form action="<?php echo $paypal_url ?>" method="get" name="frmPayPal1">

或更改

$item_name = $_GET['item_name'];

$item_name = $_POST['item_name']; 

答案 1 :(得分:1)

按照以下步骤配置您的PDT帐户:

登录您的PayPal帐户。 单击配置文件子选项卡。 单击卖家首选项列中的网站付款首选项。 在“网站付款的自动退货”下,单击“打开”单选按钮。 对于返回URL,请输入您的网站上的URL,该URL将在客户付款后收到PayPal发布的交易ID。 在付款数据传输下,单击开单选按钮。 单击保存。 单击卖家首选项列中的网站付款首选项。 向下滚动到页面的“付款数据传输”部分,以查看您的PDT身份令牌。

答案 2 :(得分:0)

我知道这已经过时了,但这些参数对$_POST方法起作用了。我将它们添加到我的ipn.php文件

$item_transaction   = $_POST['txn_id'];
$item_price         = $_POST['mc_gross'];
$item_currency      = $_POST['mc_currency'];