Magento 1.9.0.1 Paypal错误购物车项目金额总计与订单金额不符(#10413:


9

是使用magento 1.9.0.1集成了box expres paypal,除此之外,您还拥有插件pro奖励积分作为购买一些产品的奖励积分,当它成为集成产品并在不使用recompesa积分的情况下购买产品时,通过paypal付款nigun可以毫无问题地完成,但是当客户使用奖励积分时,确认订单时会出错,这是

PayPal的网关拒绝了该请求。购物车项目的总计金额不匹配订单(#10413:由于参数无效而导致交易被拒绝。有关详细信息,请参见其他错误消息。)

搜索网络以尝试解决此错误,我建议您可以修改文件Nav.php paypal,并添加以下两个代码:

第一个代码

//开始

$totalValue = $request['TAXAMT'] + $request['ITEMAMT'];
$finalValue = $totalValue - $request['AMT'];

if($request['SHIPPINGAMT'] > 0) {

$request['SHIPPINGAMT'] = ($request['AMT'] - ($request['TAXAMT'] + $request['ITEMAMT']));
$totalValue = $request['TAXAMT'] + $request['ITEMAMT'] + $request['SHIPPINGAMT'];
$finalValue = $totalValue - $request['AMT'];

}

if($request['AMT'] != $totalValue) {

if($totalValue > $request['AMT']) {
$request['TAXAMT'] = $request['TAXAMT'] - $finalValue;
}elseif($totalValue < $request['AMT']) {
$request['TAXAMT'] = $request['TAXAMT'] + $finalValue;
}else{
$request['AMT'] = $request['TAXAMT'] + $request['ITEMAMT'];
}
}

//结束符

第二码

    // Check discount
$lineAmt = 0;
$discount = 0;
$line = 0;
$discountIndex = 0;
while(isset($request["L_AMT{$line}"])) {
if($request["L_NAME{$line}"] == 'Discount') {
$discount += $request["L_AMT{$line}"];
$discountIndex = $line;
}
else {
$lineAmt += $request["L_AMT{$line}"];
}
$line++;
}

if($discount) {
if($discount + $lineAmt != $request['ITEMAMT']) {
// Do correction
$request["L_AMT{$discountIndex}"] = ($request['ITEMAMT'] - $lineAmt);
} 
} else {
// Check item amount adds up
$correctItemAmt = $request['AMT'] - $request['SHIPPINGAMT'] - $request['TAXAMT'];
if($correctItemAmt != $request['ITEMAMT']) {
$request['ITEMAMT'] = $correctItemAmt;
}

//结束

添加任何一个代码(如果允许的话)并为该折扣点付款,但是问题是,当您看到贝宝付款时,会收取折扣金额而不是总金额,这就是贝宝客户登录并经历付款的时间在expres框中,所有金额都是正确的,最后总付款额是desglozadas的罚款,返回商店并确认成功完成的订单,但是当我们收到折价金额的贝宝付款时,它表示讲清楚

产品成本>每位客户340积分usuados> 125相当于20.54在商店和Paypal盒装总支出中的总消费> 319.46收货数量以查看Paypal上的账户> 20.54

除此之外,在购买未使用的奖励积分时,会出现错误,表明交易金额有效,因为交易金额为零。

我不知道要修改什么错误代码,但我做不到,如果有人知道我必须做或者可以帮助的话,我就做不到


Nav.php位于哪里?
朱塞佩

您的问题解决了吗?
宝石

Answers:


7

问题

从消息中可以很明显地看出问题:发送到Paypal的商品总额和购物车总额不匹配。
如您所知,这似乎是扩展点的问题(或者完全缺乏对Paypal Express的支持)。

首选解决方案

我建议的第一件事是检查您是否使用了Reward Points Pro扩展的最新版本,因为它们可能已经添加了对Paypal Express的支持或解决了您遇到的问题。如果不是,请与他们的支持联系并尝试从他们那里获得帮助。

定制解决方案

注意:切勿修改核心Magento文件。如果没有其他选择(使用观察者等),则将文件复制到本地代码池中并覆盖。

您应该查看一下app / code / core / Mage / Paypal / Model / Cart.php文件第318行。如您所见,Magento在其中调度了一个事件,您可以使用该事件来解决此问题。
通过观察该事件,您将能够访问实际的Mage_Paypal_Model_Cart对象,该对象包含将发送到Paypal的购物车的物品和总计。

很抱歉,但不知道Reward Points Pro扩展程序在内部如何工作,我无法为您提供有关代码和所有内容的确切指导。基本上,您应该尝试了解app / code / core / Mage / Paypal / Model / Cart.php_render()_validate()方法中发生的情况,并确保正确使用了使用积分的折扣。

另外,我无法完全理解代码后的最后一部分,但是如果您有任何疑问,请告诉我。


出色的解决方案,它可以完美运行,但还需要进行其他修改。在同一个php文件上,还有一种方法_addRegularItem()。AMount也提到了那里。必须修改它。
蝴蝶

0

问题不在代码中,而是配置问题。只需确保您的税款被应用到小计上而不是总计上,请检查所附的屏幕截图。确保将“转移购物车行项目”设置为“是”,还将“转移运输选项”设置为“是”。在此处输入图片说明


0

我们遇到了相同的paypal错误,发现当一篇文章涉及“免税”时,问题就消失了。因此,我们停用了部分付款插件,该插件重新计算了总数。因此,这对我们的案例有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.