Magento 1.9.0.1 Paypalエラーカートアイテムの合計金額が注文金額と一致しません(#10413:


9

これは、magento 1.9.0.1を使用して、box expres paypalを統合しました。これに加えて、プラグインプロの報酬ポイントを報酬ポイントとして使用し、一部の製品を購入すると、統合およびポイントを使用せずに製品を購入し、paypalで支払います。 nigunは問題なく実行できますが、顧客がリワードポイントを使用すると、注文の確認時にエラーが発生します。

PayPalのゲートウェイがリクエストを拒否しました。カートアイテムの合計金額が注文と一致しません(#10413:引数が無効なため、トランザクションが拒否されました。詳細については、追加のエラーメッセージを参照してください。)

このエラーを解決するためにネットを検索して、ファイルNav.php paypalを変更して、以下に置く2つのコードを追加することをお勧めします。

最初のコード

//ハックスタート

$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'];
}
}

//ハックエンド

2番目のコード

    // 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;
}

//終わり

許可されている場合はいずれかのコードを追加し、その割引ポイントに対して支払いを行いますが、問題は、paypalの支払いが表示されたときに、合計額ではなく割引額が課金されることです。paypalの顧客がログインしてからexpresボックス、すべての金額が正しく、最終的に総支払い額が問題ないdesglozadas、ストアに戻って注文を確認します。これは正常に行われますが、割引額でのpaypal支払いが私たちが受け取るものである場合は、はっきりさせて

製品のコスト>顧客ごとの340ポイントusuados> 20.54に相当する125相当のストア内購入とPaypalのボックス化されたexpres> 319.46 Paypalでアカウントを表示するための数量レビダ> 20.54

これとは別に、未使用のリワードポイントの支払いを購入すると、取引金額がゼロであるため有効であるというエラーが表示されます。

私はそれを修正するためにエラーコードが何であるかを見て困惑しましたが、誰かが私がやらなければならないことを知っているか、助けることができるなら、私はそれを行うことができません


Nav.phpはどこにありますか?
ジュゼッペ

問題は解決しましたか?
宝石

回答:


7

問題

問題はメッセージからかなり明らかです:Paypalに送信される商品の合計金額とカートの合計金額が一致しません。
あなたがそれを理解したように、これはそのポイント拡張の問題(またはPaypal Expressのサポートの完全な欠如)のようです。

推奨される解決策

Paypal Expressのサポートがすでに追加されているか、実行中の問題が修正されている可能性があるため、最初にReward Points Pro拡張機能の最新バージョンを使用していることを確認することをお勧めします。そうでない場合は、サポートに連絡して、サポートを依頼してください。

カスタムソリューション

注:コアMagentoファイルは絶対に変更しないでください。(オブザーバーなどを使用して)代替手段がない場合は、ファイルをローカルコードプールにコピーして上書きします。

ファイルapp / code / core / Mage / Paypal / Model / Cart.phpの#318を調べてください。ご覧のとおり、Magentoはイベントをディスパッチし、この問題を修正するために使用できます。
そのイベントを観察することで、Paypalに送信されるカートのアイテムと合計を含む実際のMage_Paypal_Model_Cartオブジェクトにアクセスできます。

申し訳ありませんが、Reward Points Pro拡張機能が内部でどのように機能するのかわかりません。コードやすべてについて正確なガイダンスを提供することはできません。基本的に、app / code / core / Mage / Paypal / Model / Cart.phpの_render()および_validate()メソッドで何が起こるかを理解し、ポイントの使用による割引が正しく適用されるようにする必要があります。

また、コードの後の最後の部分を正確に理解できませんでしたが、ご不明な点がありましたらお知らせください。


優れたソリューションは完璧に機能しますが、もう1つ変更が必要です。同じphpファイルにもう1つのメソッド_addRegularItem()があります。AMountもそこで言及しました。修正する必要があります。
バタフライ

0

コードには問題はありませんが、構成の問題です。総計ではなく小計に税金が適用されていることを確認してください。添付のスクリーンショットを確認してください。「カートのラインアイテムの転送」が「はい」に設定されていることを確認してください。ここに画像の説明を入力してください


0

同じpaypal-errorsがあり、記事が「非課税」であるときに問題がなくなっていることがわかりました。そこで、一部の合計を再計算する部分支払いプラグインを無効にしました。したがって、これは私たちの場合に役立ちました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.