我正试图为多个项目建立一个动态PayPal表单。但是,每当我尝试动态设置每个项目的item_name, item_number,金额和数量时,PayPal网站上的购物车就会崩溃,我无法显示任何项目:
在我的foreach循环中,我想将ID变量(用PHP呈现)添加到每个隐藏的输入字段:
$paypal_form .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="merchant@XXXXXX.com">
<input type="hidden" name="return" value="http://XXXXXX.com/confirmation.php">
<input type="hidden" name="cancel_return" value="http://XXXXXX.com/confirmation.php">
<input type="hidden" name="notify_url" value="http://XXXXXX.com/confirmation.php">';
foreach ($_SESSION["shopping_cart"] as $each_item) {
$item_id = $each_item['item_id'];
$item_name = $each_item['item_name'];
$product_id = $each_item['product_id'];
$price = $each_item['price'];
$paypal_form .='<input type="hidden" name="item_name_'.$item_id.'" value="'.$item_name.'">
<input type="hidden" name="item_number_'.$item_id.'" value="'.$product_id.'">
<input type="hidden" name="amount_'.$item_id.'" value="'.$price.'">
<input type="hidden" name="quantity_'.$item_id.'" value="1">';
} // end foreach
$paypal_form .= '<input type="hidden" name="currency_code" value="EUR">
<input type="submit" value="Pay with PayPal" class="pay_button"/>
</form>';
似乎PayPal不接受动态$item_id修改隐藏的输入名称?
当我保持输入名称不变时(如下所示),它可以工作,但是我不能动态呈现多个条目的输入字段:
<input type="hidden" name="item_name_1" value="'.$item_name.'">
<input type="hidden" name="item_number_1" value="'.$product_id.'">
<input type="hidden" name="amount_1" value="'.$price.'">
<input type="hidden" name="quantity_1" value="1">
我设法使它工作。PayPal似乎不接受动态生成的"随机"数字作为输入字段的名称,它们只在正确的顺序下工作(item_name_1, item_name_2, item_name_3,…),例如。item_name_204作为第一个条目的条目名是无效的
通过添加循环索引,下面的代码使它为我工作:$paypal_form .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="merchant@XXXXXX.com">
<input type="hidden" name="return" value="http://XXXXXX.com/confirmation.php">
<input type="hidden" name="cancel_return" value="http://XXXXXX.com/confirmation.php">
<input type="hidden" name="notify_url" value="http://XXXXXX.com/confirmation.php">';
$i = 0;
foreach ($_SESSION["shopping_cart"] as $each_item) {
$i++;
$item_id = $each_item['item_id'];
$item_name = $each_item['item_name'];
$product_id = $each_item['product_id'];
$price = $each_item['price'];
$paypal_form .='<input type="hidden" name="item_name_'.$i.'" value="'.$item_name.'">
<input type="hidden" name="item_number_'.$i.'" value="'.$product_id.'">
<input type="hidden" name="amount_'.$i.'" value="'.$price.'">
<input type="hidden" name="quantity_'.$i.'" value="1">';
} // end foreach
$paypal_form .= '<input type="hidden" name="currency_code" value="EUR">
<input type="submit" value="Pay with PayPal" class="pay_button"/>
</form>';
我不知道会不会有帮助。尝试添加下一个字段:
<input type="hidden" name="tax_cart" value="0">