我使用以下代码将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>";
}
?>
我不知道为什么收到这些通知,我们非常感谢任何帮助。感谢
答案 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'];