多个项目:使用 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中返回成功页面所有数据

Paypal 项目表单不会对齐中心

用 PHP 构建一个包含多个项目和 PayPal 按钮的购物车

在 PHP 中的 PayPal 中返回 URL

Laravel paypal表单提交验证