=“paypal_ec_redirect.php”method =“POST”&gt; &lt; div class =“row-fluid”&gt; &lt; div class =“span6 inner-span”&gt; &lt;! - 演示产品详细信息 - &gt; &LT;表&gt; &LT; TR&GT;&LT; H3&GT; 数字 </跨度> SLR CAMERA&lt; / h3&gt;&lt; / tr …&gt;&lt; / td&gt;&lt; / tr&gt; &LT; TR&GT;&LT; TD&GT; 货币 </跨度> 代码:&lt; / td&gt;&lt; td&gt;&lt; select name =“currencyCodeType”&gt; &lt; option value =“AUD”&gt; AUD&lt; / option&gt; &lt; option value =“BRL”&gt; BRL&lt; / option&gt; &lt;选项……
我想通了,他们的演示代码只手动检查后期数据中的一个项目。
POST数据以及返回和取消URL被发送到CallShortcutExpressCheckout函数(paypal_functions.php),该函数仅检查预定参数而不是实际循环任何POST数据。
例如,它只手动检查参数是否为issset(),但仅针对一个项目:
function CallShortcutExpressCheckout( $paramsArray, $returnURL, $cancelURL) { //it manually checks for all the paramters, i just have shown one for example if(isset($paramsArray["PAYMENTREQUEST_0_SHIPDISCAMT"])){ $nvpstr = $nvpstr . "&PAYMENTREQUEST_0_SHIPDISCAMT=" . $paramsArray["PAYMENTREQUEST_0_SHIPDISCAMT"]; $_SESSION['shippingDiscAmt'] = $paramsArray["PAYMENTREQUEST_0_SHIPDISCAMT"]; } //And here it only looks for one item if(isset($paramsArray["L_PAYMENTREQUEST_0_NAME0"])) $nvpstr = $nvpstr . "&L_PAYMENTREQUEST_0_NAME0=" . $paramsArray["L_PAYMENTREQUEST_0_NAME0"]; if(isset($paramsArray["L_PAYMENTREQUEST_0_NUMBER0"])) $nvpstr = $nvpstr . "&L_PAYMENTREQUEST_0_NUMBER0=" . $paramsArray["L_PAYMENTREQUEST_0_NUMBER0"]; if(isset($paramsArray["L_PAYMENTREQUEST_0_DESC0"])) $nvpstr = $nvpstr . "&L_PAYMENTREQUEST_0_DESC0=" . $paramsArray["L_PAYMENTREQUEST_0_DESC0"]; if(isset($paramsArray["L_PAYMENTREQUEST_0_AMT0"])) $nvpstr = $nvpstr . "&L_PAYMENTREQUEST_0_AMT0=" . $paramsArray["L_PAYMENTREQUEST_0_AMT0"]; if(isset($paramsArray["L_PAYMENTREQUEST_0_QTY0"])) $nvpstr = $nvpstr . "&L_PAYMENTREQUEST_0_QTY0=" . $paramsArray["L_PAYMENTREQUEST_0_QTY0"]; if(isset($paramsArray["LOGOIMG"])) $nvpstr = $nvpstr . "&LOGOIMG=". $paramsArray["LOGOIMG"];
我刚刚删除了所有代码并放入一个简单的foreach循环:
function CallShortcutExpressCheckout( $paramsArray, $returnURL, $cancelURL) { if(isset($returnURL)) $nvpstr = $nvpstr . "&RETURNURL=" . $returnURL; if(isset($cancelURL)) $nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL; foreach ($paramsArray as $k => $value){ $nvpstr = $nvpstr . "&" . $k . "=" . $value; }
最重要的是,由于某些原因,在paypal_ec_redirect.php中,他们确保将单个产品项目金额更改为所有项目金额的总和,就像确保只发送一个项目一样,否则它会抛出一个购物车项目金额与订单金额不匹配(错误代码:10413)。
我只是评论出来,现在一切都很好,我可以下多个项目订单。
//$_POST["L_PAYMENTREQUEST_0_AMT0"] = $_POST["PAYMENTREQUEST_0_ITEMAMT"];
我希望这有助于某人,我确实看到另一个stackofflow问题与exactsame问题。为什么他们会让他们的演示代码故意只接受一个项目是超出我的。