Jump to content
xt:Commerce Community Forum

Doppelte Bestellung - Bestellen-Button nach dem ersten Klick zu deaktivieren?


Recommended Posts

Hallo Zusamen :),

wir haben im Moment das Problem das es hin und wieder zu Doppelbestellungen kommt.

Innerhalb von 4 Sekunden 3 mal oder mehr die gleiche Bestellung.

Erklären konnten wir uns das nur dadurch, das wenn ein Kunde auf den "Bestellung abschliesen" Button drauf klickt

und weil zum Beispiel seine Leitung langsam ist oder der Server rödelt es etwas länger dauert bis die nächste Seite kommt

der Kunde dann noch mal auf "Bestellung abschliesen" und nochmal "Bestellung abschliesen" klickt und so 3 Bestellungen zu stande oder mehr kommen.

Wir haben die Seite zwar mittlerweile so optimiert das es schneller geht und auch weniger doppelbestellungen eingehen, aber es passiert dennoch immer hin und wieder.

Gibt es bei XTC eine Möglichkeit, den Bestellen-Button nach dem ersten Klick zu deaktivieren?

Sollte es schon einen Thread geben der das erklärt - dann ein dickes Sorry. Bitte bescheit geben. Ich habe mich heute echt dumm danach gesucht.

Entweder hat keiner das Problem oder ich habe einfach mit dem falschen begriffen gesucht.

Vielen Dank vorab für eure Hilfe!

Liebe Grüße

Heiko

Link to comment
Share on other sites

  • 2 years later...

Auch wir haben das Problem. Gestern war es besonders schlimm. Es waren sehr viele Bestellungen, die zwei- bis neunmal vorhanden waren, bei einigen wechselte dann zwischendurch auch die Zahlungsart - d.h. der Kunde hat sich dann anders entschieden, weil es wohl zu lange gedauert hat?

Ich überlege mir mal etwas für den Button, so dass der deaktiviert wird, sobald man einmal draufgeklickt hat. Zwar kann der kunde die letzte Seite dann noch neu laden und er könnte dann wieder draufklicken, aber das sollte zumindest die Mehrfach-Klicker endämmen.

Ich teste zudem mal aus, ob es überhaupt möglich ist, durch mehrfaches Klicken mehrfach zu bestellen.

Link to comment
Share on other sites

Nachtrag:

Bestellungen ohne Weiterleitung an Zahlungsunternehmen (Gratis, Vorkasse, Nachnahme) lassen sich durch mehrfachen Klick auf den Bestellbutton mehrfach abesnden und tauchen dann auch mehrfach in der Bestellliste auf. Allerdings ist nur die erste mit Artikeln bestückt - die späteren sind alle leer.

Bei Bestellungen über Zahlungsanbieter wie PayPal, Sofortüberweisung und Saferpay ließ sich das gerade nicht provozieren. Es wurde die Bestellung nur ein einziges mal eingetragen.

Ich habe aber noch eine Vermutung:

Angenommen der Server laggt gerade irgendwo. Es kommen sehr viele Anforderungen rein, die auch zwischengespeichert werden, aber noch nicht verarbeitet werden, weil z.B. der Apache Server kurzzeitig hängt. Jetzt klicken einige Kunden auch mehrfach den Kaufbutton. Sobald der Hänger vorbei ist, werden alle angestauten Anforderungen teils zeitgleich und parallel (bei uns sind gleichzeitig 32 PHP Prozesse möglich) ausgeführt. Jeder Bestellklick holt sich jetzt nahezu zeitgleich das Session Objekt mit der Bestellung aus der Datenbank - somit sind alle Anforderungen mit einem vollen Warenkorb versorgt und im weiteren Verlauf werden dann alle Anforderungen als gültige Bestellungen verarbeitet.

Ich kenne mich jetzt nicht genug mit dem Apache Server aus um sagen zu können, ob dies so möglich ist - aber vielleicht kann da ja jemand vopm XTC-Team etwas zu sagen. Wir möchten wenigstens wissen, woran das liegen kann...

Vielen Dank!

Link to comment
Share on other sites

Weiterer Nachtrag:

Ich hatte eben solch ein Lag beobachtet. Während dieses Lags konnte man z.B. die Startseite des Shops öffnen. Produktseiten allerdings nicht. Alle Produktseiten, die ich parallel in unterschiedlichen Tabs im Browser geöffnet habe, warteten alle gemeinsam auf Antwort vom Server. Als der Lag vorbei war, wurden plötzlich alle Produktseiten gleichzeitig angezeigt.

Vielleicht liegt es an einer bestimmten Tabelle in der Datenbank. Auf unserer Startseite wird nicht auf die xt_products zugegriffen (wir beziehen die Daten aus einer anderen Tabelle auf dieser Seite). Die Produktseiten hingegen greifen auf diese Tabelle zu. Allerdings ließ sich die Tabelle über ein PHPMyAdmin öffnen, wodurch schonmal eine Sperre der Tabelle ausgeschlossen ist. Vielleicht liegt es ja an einer anderen Tabelle. Ich werde die alle mal durchprobieren, sobald ich wieder ein Lag sehe.

Link to comment
Share on other sites

Hier ein Beispiel, wie man (mittels Javascript) dem Bestell-Button seine Aktion entnimmt, so dass man mit ihm keine weitere Bestellung abschicken kann:

HTML im Template /shop/templates/xt_default/xtCore/pages/checkout/subpage_confirmation.html:


. . .


{literal}

	<script type="text/javascript">

		function send_order() {

			document.getElementById('send_order').innerHTML = 

				document.getElementById('send_order').getElementsByTagName('a')[0].innerHTML;

			document.getElementById('sendform').submit();

		}

	</script>

	<style type="text/css">

		#send_order	{display:inline-block; cursor:pointer;}

	</style>

{/literal}


. . .


{form type=form id=sendform name=process action='checkout' method=post conn=SSL}


. . .


	<div id="send_order">

		<a href="javascript:send_order();">

			{button text='Kaufen' btn_template='tpl_button_1.gif' file='button-kaufen.gif'}

		</a>

	</div>

{form type=formend}


. . .

Damit wird das um das erzeugte <img> - Tag herum liegende <a> - Tag entfernt, wodurch der Button nicht mehr als link funktioniert. Mittels CSS wird der Cursor aber trotzdem so aussehen, als wenn es noch ein Link ist und man kann beliebig oft draufklicken, ohne dass etwas passiert.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...