Frage

Ich habe Probleme mit der Kreditkartenzahlungstransaktion und bin mir ziemlich sicher, dass die quote_id die Ursache dafür ist.Das Problem ist, dass ich nicht weiß, wie ich die quote_id manuell erhöhen kann, um herauszufinden, ob ich richtig oder falsch liege.

War es hilfreich?

Lösung 2

Zunächst bestand das Problem, das ich hatte, darin, die Antwort „ABGEBORTET“ zu erhalten. Der Grund dafür war, dass ein Feld immer mit demselben Wert gesendet wurde, dieser Wert war orderid (was eigentlich quote_id ist, weil die Bestell-ID nicht vorhanden war). das zu diesem Zeitpunkt erstellt wurde), was verboten ist, da es sich um ein eindeutiges Feld in ihrer Datenbank handelt.Magento erstellt niemals ein neues Angebot für einen Benutzer, bis die aktuelle Transaktion abgeschlossen ist (oder wenn eine andere Sitzung erstellt wird, da bin ich mir noch nicht sicher). Die quote_id wird (als orderid) mit demselben Wert für einen Benutzer über und gesendet noch einmal, so dass jede Transaktion abgebrochen wird.

Die Lösung:Deaktivieren Sie einfach das aktuelle Angebot, wenn das Kreditkarten-Gateway nicht mit der Zeichenfolge „GENEHMIGT“ antwortet sales_flat_quote gerade eingestellt is_active auf 0, so dass Magento dem Benutzer ein brandneues Angebot unterbreiten würde.Das Problem besteht darin, dass für den Benutzer alles im Warenkorb verloren gehen würde (der Datensatz existiert noch, aber der Benutzer hätte keinen Zugriff mehr darauf), sodass Magento das Angebot klonen, dann das aktuelle deaktivieren und beides speichern müsste. Das geklonte Angebot ist nun das aktuelle Angebot, jedoch mit einem anderen 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

Die Lösung wurde von hier übernommen So kopieren Sie ein Angebot (nur Warenkorbartikel) in ein anderes Angebot (nur Artikel)

Jetzt ist der letzte Schritt (oder vielleicht der erste) das Erhöhen quote_id manuell, warum?Das Kreditkarten-Gateway hat bereits viele Bestell-IDs in diesem E-Shop registriert, 149 um genau zu sein (übrigens mit Magento 1.7).Ich habe fast alles auf Magento 1.9 migriert, aber bei einer brandneuen Datenbank wurden die Angebote auf Null gesetzt, sodass das erste generierte Angebot vom CC-Gateway abgelehnt wird.Das ist die Lösung:

ALTER TABLE sales_flat_quote AUTO_INCREMENT = 149;

Im Grunde ist dies also die Lösung meines Problems.Ich hoffe, dass dies für jemand anderen nützlich sein wird.

Andere Tipps

Erste

Sie können die Inkrementierung nicht manuell durchführen quote_id da es eingestellt ist auto increment in der Datenbank, da es so ist primary key des Tisches.

Wenn also ein Angebot erstellt wird, quote_id wird automatisch erstellt, da es sich um eine automatische Inkrementierung handelt und die gemäß stets eindeutig sein muss sql Regel.

Zu deinem Problem

Wenn Sie ein Problem damit haben credit card payment Dann sollten Sie mit dem Debuggen beginnen payment Abschnitt.Wenn Sie eine externe Erweiterung für Ihr Zahlungssystem verwenden, wenden Sie sich bitte an diese.Andernfalls sollte Magento standardmäßig alle Zahlungen fehlerfrei abwickeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top