2013-02-11 4 views
6

Ich entwickle ein Online-Ticketsystem für Veranstaltungen (wie Konzerte). Ein Basisteil ist eine Seat Chart, wo den Besuchern die verfügbaren Plätze/Tickets zur Auswahl angeboten werden. Sobald sie eine Auswahl treffen, versucht das System sofort, die Tickets für 10 Minuten zu reservieren (indem die Ticket-IDs in eine Tabelle eingegeben werden, in der die Ticket-ID der Schlüssel ist). Nur wenn die Reservierung erfolgreich war, wird eine Paypal-Taste angezeigt, um die Zahlung vorzunehmen.Online-Ticket-Buchung mit PayPal: Verhindern, dass mehrere Besucher dasselbe Ticket kaufen

All dies funktioniert gut. Ticket Reservierung ist kein Problem für mich. Ich kann das in meinem System handhaben. Aber sobald Paypal ins Spiel kommt, wird es schwierig. Das Problem: Wenn der Benutzer aus irgendeinem Grund viel Zeit in Paypal verbringt (mehr als 10 Minuten), verfällt die Ticketreservierung auf meiner Website, so dass die Tickets von einem anderen Besucher gekauft werden können, was passieren könnte bevor Besucher 1 die Zahlung leistet. Besucher 1 sieht nichts davon, weil er immer noch in Paypal ist ... Irgendwann wird er es schaffen, die Zahlung zu leisten (zB nach 15 Minuten), was perfekt funktionieren wird, da paypal nichts über abgelaufene Reservierungen weiß .

Am Ende könnte ich zwei Besucher haben für den gleichen Ticket/Sitzplatz bezahlt haben!

Wie kann ich das verhindern? Wie gehen Sie mit den Rennbedingungen um, wenn zwei Systeme involviert sind und eines davon außer Kontrolle ist?

Mein Denken war: Eigentlich sollte ein Scheck gemacht werden, bevor die Zahlung stattfindet, aber natürlich habe ich keine Kontrolle darüber, was in Paypal passiert!

Ich weiß, dass ich Paypal's IPN und so verwenden kann, aber dies geschieht nur NACH Zahlung, die zu spät ist.

Alternativ wäre es toll, wenn paypal mich über API gebeten hat, eine Zahlung zu bestätigen. Dann könnte ich "Nein" sagen, falls die Tickets an jemand anderen verkauft wurden. Aber ich denke nicht, dass dies mit Paypal möglich ist.

Antwort

2

Ich würde die Verwendung von Express Checkout empfehlen. Mit Express Checkout können Sie steuern, wann die Zahlung erfolgt, da Sie einen API-Aufruf an PayPal auslösen, um die Zahlung tatsächlich zu verarbeiten.

Die andere Möglichkeit, die Sie untersuchen können, ist die Verwendung einer Autorisierung anstelle einer Verkaufstransaktion. Wenn ein anderer Käufer den Platz einnimmt, können Sie die Autorisierung aufheben und der Käufer wird nicht belastet. (PayPal wird Ihnen jedoch wahrscheinlich die entgültige Autorisierung in Rechnung stellen.)

+0

danke. Express Checkout hört sich gut an und ich werde das untersuchen. Über den zweiten Teil: Ist das eine Besonderheit von Paypal? Ich habe gesucht und nicht wirklich etwas über "Autorisierung" gefunden. – user1595494

+0

Nein, Autorisierungen sind in der Kreditkartenindustrie üblich. Diese Seite gibt einen guten Überblick über die verschiedenen Zahlungsarten, die Express Checkout anbietet: https://www.x.com/developers/paypal/documentation-tools/express-checkout/integration-guide/ECRelatedAPIOps –

1

Eine von Matt Cole vorgeschlagene Lösung ist die Verwendung von "Autorisierung" anstelle von "Verkauf".

Sie können dies tun, indem Sie "intent" auf "authorize" anstelle von "sale" ({intent: "authorize"}) in Ihren Aufrufen der Paypal-API setzen, wenn Sie eine Paypal-Zahlung erstellen. Sobald der Kunde die Transaktion genehmigt hat, müssen Sie diese Transaktion genehmigen, indem Sie die Zahlung erfassen.

Verwandte Themen