多个项目:使用 PHP 的 PayPal 表单中的动态项目名称和编号
Posted
技术标签:
【中文标题】多个项目:使用 PHP 的 PayPal 表单中的动态项目名称和编号【英文标题】:Multiple Items: Dynamic Item Name and Number in PayPal Form with PHP 【发布时间】:2015-08-14 16:44:03 【问题描述】:我正在尝试为多个项目设置动态 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">
【问题讨论】:
请打印表格的所有html。我的意思是标签 和所有输入。 @DanilaGanchar 查看上面的编辑(整个代码) 【参考方案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>';
【讨论】:
【参考方案2】:我不知道会不会有帮助。尝试添加下一个字段:
<input type="hidden" name="tax_cart" value="0">
【讨论】:
或者尝试使用沙盒模式和简单的表单2项。可能在 foreach 中存在空/错误值。此处的示例表单:***.com/questions/3308898/… 或 ***.com/questions/1761803/… 比较你在 foreach 之后的表单和工作的表单。我认为字段名称/值存在问题。 设法让它工作。请参阅上面我发布的解决方案。不过感谢您的努力!以上是关于多个项目:使用 PHP 的 PayPal 表单中的动态项目名称和编号的主要内容,如果未能解决你的问题,请参考以下文章
使用 Paypal Sandbox 逐步创建结帐表单 (PHP)
如何在paypal html表单中发布多个字段并在php中返回成功页面所有数据