多个项目:动态项目名称和数量在PayPal表单与PHP


Multiple Items: Dynamic Item Name and Number in PayPal Form with PHP

我正试图为多个项目建立一个动态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">