Domanda

Sto avendo problemi con la transazione di pagamento con carta di credito e sono sicuro che il Quote_id è la causa di esso.Il problema è che non so come incrementare manualmente il Quote_ID per scoprire se ho ragione o ho torto.

È stato utile?

Soluzione 2

Prima del tutto, il problema che stavo avendo ottenuto la risposta "abortata", il motivo è stato che un campo è stato sempre inviato con lo stesso valore, quel valore era ordine è stato ordinato (che è in realtà il Quote_id perché l'ID dell'ordine è È stato creato in quel punto), che è proibito causa è un campo unico nel loro database. Magento non crea mai una nuova citazione per un utente fino a quando la transazione corrente non viene completata (o quando viene creata un'altra sessione, non ne sono ancora sicuro), il Quote_ID viene inviato (come ordine) con lo stesso valore per un utente, oltre ancora di nuovo così ogni transazione è interrotta.

La soluzione: appena disattivata la quotazione corrente quando il gateway della carta di credito non risponde con la stringa "approvata", in sales_flat_quote basta impostare is_active a 0, quindi Magento darebbe all'utente una nuova citazione. Il problema è che tutto nel carrello avrebbe perso per l'utente (il record esiste ancora, ma l'utente non avrebbe più accesso ad esso), quindi il magento dovrebbe clonare il preventivo, quindi disattivi la corrente e salvare entrambi, La citazione clonata sarà ora la citazione corrente ma con un diverso quote_id.

// get the current quote
$current_quote = Mage::getModel('sales/quote')->load(23);

// create a new one
$cloned_quote = Mage::getModel('sales/quote');

// copy the content of the current one into the new one
$cloned_quote->merge($current_quote);

// deactive the current quote
$current_quote->setIsActive(false);

// save the cloned quote
$cloned_quote->collectTotals()->save();

// and save the changes of the current quote
$current_quote->save();

// now the current save is inactive 
// and the cloned one is the "new" current quote
.

La soluzione è stata presa da qui Come copiare una citazione (solo gli elementi del carrello) in un'altra quotazione (solo articoli)

Ora il passaggio finale (o forse il primo) è incrementato manualmente il quote_id, perché? Il gateway della carta di credito ha già un sacco di ID di ordine registrati con questo e-shop, 149 per essere precisi (usando Magento 1.7, a proposito). Ho migrato quasi tutto a Magento 1.9, ma con un nuovo database, le virgolette sono state impostate a zero, quindi la prima citazione generata sarà respinta dal gateway CC. Questa è la soluzione:

ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;
.

Quindi, fondamentalmente questo riassume la soluzione al mio problema. Spero che questo sia utile a qualcun altro.

Altri suggerimenti

First

Non è possibile eseguire l'incremento manuale del quote_id poiché è impostato su auto increment nel database poiché è primary key della tabella.

Quindi quando viene creata qualsiasi preventivo, quote_id viene creato automaticamente in quanto autocarro automaticamente e che deve essere univoco tutto il tempo secondo la regola sql.

al tuo problema

Se hai problemi con credit card payment, è necessario eseguire il debug nella sezione payment.Se si utilizza un'estensione esterna per il tuo sistema di pagamento, si prega di contattarli.Oppure Magento dovrebbe per impostazione predefinita, gestire tutti i pagamenti senza alcun errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top