Ich arbeite an einer mobilen Ticketverkaufs-App. Das System ermöglicht es Benutzern, für Artikel mit einer Drittanbieter-API (CardIO) zu bezahlen, die alle Informationen auf meinem Server speichert, der glücklich in der Cloud sitzt.
Das Problem läuft auf: hinaus Da (1) der Zahlungsprozess vollständig am Telefon abläuft und (2) es keine API gibt, die es meinem Server ermöglicht, mit dem Zahlungsprozessor zu überprüfen, dass die Zahlung tatsächlich stattgefunden hat, frage ich mich, wie ich am besten sicherstellen kann, dass Der Benutzer hat tatsächlich den Artikel bezahlt, bevor er ihn als bezahlt in meiner Datenbank auf meinem Server markiert hat.
Sie sehen, dass ein Benutzer meine API-Anrufe manuell verfolgen, sich bei seinem Konto anmelden und dann den Befehl an meinen Server senden kann, um einen Kauf als bezahlt zu markieren, ohne den Artikel bezahlt zu haben.
Die Frage ist also: Wie kann ich überprüfen, ob die Zahlung entweder auf meinem Server oder über eine Art Handshake oder Verschlüsselung mit der mobilen App erfolgt ist?
Mein aktueller Ansatz: Ich sende die Klartext-Informationen, die über einen SSL-Aufruf (HTTPS) benötigt werden, an den Server. Zusammen mit diesem sende ich einen Hash dieser Zeichenfolge und verifiziere mit dem gleichen Algorithmus auf meinem Server, dass die gesendete Zeichenfolge dem gesendeten Hash entspricht. Der Gedanke ist, dass ich dann einen geheimen Schlüssel verwenden könnte, um diesen Hash zu generieren und dann zu überprüfen, ob der Klartext auch mit dem Hash auf dem Server übereinstimmt, um sicherzustellen, dass sich nichts geändert hat. Mein Problem mit dieser Lösung ist, dass ich nicht denke, dass es wirklich so sicher ist ... Jemand könnte den Algorithmus ziemlich leicht knacken, weil er die Verschlüsselung und den Klartext erhält.
Danke fürs Schauen!
Stephen
Die kurze Antwort ist, dass Sie dem Kunden nicht vertrauen können, Punkt. Hack alles, was Sie wollen - das ist keine Möglichkeit, Transaktionsinformationen zu erstellen.
Wenn Ihr Zahlungsprozessor keine API hat, auf die Sie sich verlassen können, dann brauchen Sie eine bessere ..., die Ihre Probleme sofort und für die Zukunft löst.
Das Mobiltelefon sollte die Kreditkarteninformationen einscannen und an Ihren Server senden, und der Server sollte den Zahlungsprozess ausführen
Tags und Links android php security design-patterns web-services