2016-08-23 2 views
0

Ich erstelle einen Dienst, bei dem Benutzer für bestimmte Produkte bezahlen müssen. Jetzt kämpfe ich mit dem Transaktionsteil.Wie Transaktionen sicher verarbeitet werden

Ich erstelle eine Transaktion, wenn Benutzer zur Kasse gehen. Die Payment-Gateway hat die folgende URLs:

ReturnUrl -> The URL the costumer is being redirected to after a succesfull payment (after clicking "Back to Webshop") 
NotifyUrl -> The URL (server-to-server call) thats being called when the user finishes his payment, when the costumer is being redirected back via ReturnUrl 
CallbackUrl -> The URL thats being called when the user closes his browser after a succesfull payment, without clicking the "Back to Webshop" button, and hence not being redirected via ReturnUrl 

Nun, ich habe Schwierigkeiten mit, wie sicher die Transaktion abgeschlossen setzen, wenn sie entweder NotifyUrl oder CallbackURL zurückzukehren. Ich erstelle ein Token, wenn ich die Transaktion in die Datenbank setze, so dass nicht autorisierte Benutzer nichts ändern/ändern können. Aber ich sende den Token mit POST an meinen Zahlungsanbieter, was bedeutet, wenn sie wissen, an welche URL eine GET-Anfrage mit allen Informationen wie token und transaction_id gesendet werden soll, könnten sie dort surfen, ohne meinen Server zu betrügen und zu überlisten Anfrage kam von meinem Zahlungsprozessor.

Wie würde ich das richtig machen?

+0

Ich bin mir nicht sicher, ob ich Ihrer Logik folgen kann. Was genau könnte jemand durchsuchen und wo? Und Sie sagen, dass Ihre Transaktions-IDs seriell sind (damit jemand es herausfinden kann) und dass Sie nicht überprüfen, ob eine Anfrage von Ihrem Zahlungsanbieter kommt? – Shadow

Antwort

0

Zumindest sollten Sie den Ursprung des Server-zu-Server-Anrufs (IP-Adresse oder Domäne) überprüfen, um sicherzustellen, dass es der Zahlungsprozessor ist, der die Anfrage gestellt hat.

Einige Zahlungsprozessoren (multisafepay) senden nur eine Weckmeldung an NotifyUrl, einfach, dass der Status der Zahlung so und so geändert hat. Dann kann Ihr Server einen sicheren Anruf bei dem Zahlungsprozessor anfordern, der die genauen Details anfordert, und den lokalen Status entsprechend aktualisieren.

Außerdem ist es immer ratsam, ssl in diesen Szenarien zu verwenden.

Verwandte Themen