magespecialist / MSP_CashOnDelivery

[DISCONTINUED] Magento extension to add a ready-to-use Cash-On-Delivery payment gateway for your store.
Other
8 stars 11 forks source link

PayPal Express CheckOut #14

Closed sandrocantagallo closed 8 years ago

sandrocantagallo commented 8 years ago

Versione Magento: 1.9.2.4 Modulo CheckOut: Amasty One Step CheckOut

Errore: Abilitando il modulo Contrassegno con sovrapprezzo fisso impostato su 2.90 euro, il pagamento tramite PayPal Express Checkout va in errore per i soli UTENTI REGISTRATI mostrando la seguente dicitura:

PayPal gateway ha rifiutato la richiesta. The totals of the cart item amounts do not match order amounts (#10413: Transaction refused because of an invalid argument. See additional error messages for details).;

In altre parole, il gateway di pagamento invia correttamente a PayPal le informazioni del pagamento ma al rientro vengono imputati anche i costi di contrassegno che invece non devono essere accreditati.

phoenix128 commented 8 years ago

Ciao @sandrocantagallo , grazie della segnalazione. Provvediamo quanto prima riprodurre il problema e a trovare una soluzione.

sandrocantagallo commented 8 years ago

Il processo per replicare l'errore è il seguente. Abilitare il modulo Contrassegno impostando Importo nazionale fisso standard = 2.90 Andare sul frontend e registrare un'account utente Procedere con il primo acquisto usando PayPal (sandbox)

Il pagamento andrà a buon fine e senza problemi

Procedere con un nuovo acquisto Pagare con PayPal. L'ordine andrà in errore: The totals of the cart item amounts do not match order amounts (#10413: Transaction refused because of an invalid argument. See additional error messages for details).;

LOG di paypal:

[DoExpressCheckoutPayment] => Array ( [TOKEN] => EC-6TV61835B4286863X [PAYERID] => QTX9H4N83K7J8 [PAYMENTACTION] => Sale [AMT] => 37.80 [CURRENCYCODE] => EUR [BUTTONSOURCE] => Magento_Cart_Community [NOTIFYURL] => http://demo.mysa.it/it/paypal/ipn/ [RETURNFMFDETAILS] => 1 [ITEMAMT] => 34.90 [TAXAMT] => 0.00 [SHIPPINGAMT] => 0.00 [L_NUMBER0] => mysahotergonopag [L_NAME0] => Mysa Hot ErgonoPad [L_QTY0] => 1 [L_AMT0] => 34.90 [METHOD] => DoExpressCheckoutPayment [VERSION] => 72.0 [USER] => **** [PWD] => **** [SIGNATURE] => **** ) Praticamente sul valore AMT viene imputato il valore 2.90 euro il sovraprezzo del contrassegno. La cosa veramente strana è che a questo punto l'account utente è "bruciato" ovvero anche spegnendo il modulo "Contrassegno" e pulendo il carrello dell'utente, se lo stesso riprova a fare l'ordine vengono lo stesso imputati in maniera sbagliata i 2.90 di extra fee che in realtà non dovrebbe pagare.

sandrocantagallo commented 8 years ago

Mage/PayPal/Controller/Express/Abstract.php

_initCheckout

se esplodo il getQuote

esce sempre fuori:

[msp_base_cashondelivery] => 2.9000 [msp_cashondelivery] => 2.9000 [msp_base_cashondelivery_incl_tax] => 2.9000 [msp_cashondelivery_incl_tax] => 2.9000

sull'acquisto dell'utente registrato anche se da configurazione setto il valore a 0 e elimino cache e sessioni di magento.

phoenix128 commented 8 years ago

Si, quello è normale, i dati vengono comunque salvati, ma non dovrebbe applicare il totale. Stiamo verificando se ci sono problemi in fase di salvataggio da quote ad order.

sandrocantagallo commented 8 years ago

Facendo ricerche su DB vedo che nella tabella sales_flatquote viene salvato l'ordine valorizzando in maniera errata i campi msp* e inserendo appunto il valore 2.90

Mi spiego meglio. ho cambiato l'extra fee da 2.9 a 0,00 euro e in fase di ordine del cliente registrato i campi msp_* della tabella sales_flat_quote si sarebbero dovuti aggiornare di conseguenza ma cosi non è avvenuto.

Inoltre scegliendo come metodo di pagamento PayPal questi campi msp_ non si sarebbero proprio dovuti valorizzare o sbaglio ?

Ovviamente siccome questo valore è associato al cliente anche se da frontend gli cancello il carrello e riprovo a fare l'ordine va nuovamente in errore, perchè cambia correttamente i dati dell'ordine ma non i valori salvati nei campi msp_ di questa tabella.

phoenix128 commented 8 years ago

Giusto per test: Hai provato senza il modulo di one step checkout? Temo che non sia una issue del modulo.

sandrocantagallo commented 8 years ago

Si e a me persiste. Ma ho risolto. Mi sono accorto che sto evidentemente usando una versione obsoleta del vostro modulo.

Il mio problema era nel file: MODEL/QUOTE/total.php

ho verificato in questo repository che è stato inserito il controllo che resetta a 0 i valori dei campi msp_ della tabella che a me mancavano:

if ($_helper->getQuote()->getPayment()->getMethod() != $_model->getCode()) { $address->setMspCashondelivery(0); $address->setMspBaseCashondelivery(0); $address->setMspCashondeliveryInclTax(0); $address->setMspBaseCashondeliveryInclTax(0); $quote->setMspCashondelivery(0); $quote->setMspBaseCashondelivery(0); $quote->setMspCashondeliveryInclTax(0); $quote->setMspBaseCashondeliveryInclTax(0); }

Ti ringrazio per l'assistenza e l'aiuto fornito :)