首页 文章

多个项目:使用PHP的PayPal表单中的动态项目名称和编号

提问于
浏览
1

我正在尝试为多个项目设置动态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">

2 回答

  • 3

    我设法让它运作起来 . 似乎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>';
    
  • 0

    我不知道会不会有帮助 . 尝试添加下一个字段:

    <input type="hidden" name="tax_cart" value="0">
    

相关问题