Autor Beitrag
Gagga
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Fr 12.01.24 12:02 
Hallo!
Voranzuschicken ist, dass mein programminterner Aufruf der PayPal-Seite wegen mehrer Java-Skript-Fehler scheitert (s. hier).

Ich beabsichtige daher folgendes Vorgehen um mit der PayPal-Zahlung das Programm automatisch freizuschalten:

1. (Externer) Aufruf der PayPal-Seite mit dem Standardbrowser des Anwenders.
2. Prüfen, ob im Standardbrowser zur bei PayPal implemetierten Dank-Url gewechselt wird.
3. Wenn Prüfung nach Nr. 2 positiv, dann Freischaltung.

Ist Prüfung nach Nr. 2 möglich und wenn ja, wie?

Beste Grüße
Rued
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.01.24 12:44 
Das funktioniert nicht, weil du an den Browser nicht sinnvoll herankommst. Man kann über die Paypal API aber die Transaktionen abfragen und so feststellen, ob eine Transaktion erfolgreich war. Machst du das nicht aktuell auch, wenn der Nutzer zurück kommt von Paypal?

Leider weiß ich nicht, wie man die Transaktions-ID erhält, damit man die beim Aufrufen der URL im Browser mit übergeben kann. Irgendwie muss das aber funktionieren, denn es funktioniert anderswo ja auch. Und auch im Web kann man ja, wenn die Umleitung zurück nicht klappt, auf manchen Seiten die Transaktion prüfen lassen bzw. das passiert irgendwann automatisch.
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Fr 12.01.24 13:30 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
...Man kann über die Paypal API aber die Transaktionen abfragen und so feststellen, ob eine Transaktion erfolgreich war. Machst du das nicht aktuell auch, wenn der Nutzer zurück kommt von Paypal?...


PayPal bietet ja die Möglichkeit, den Zahlenden im Anschluss an die Zahlung auf eine Url zu leiten, um sich zu bedanken. Diese Möglichkeit habe ich genutzt, so dass es bei meinen Programmen bislang so ablief:

1. In meinem Programm wurde über den immanenten Browser die Bezahlseite aufgerufen.
2. In der Prozedur Browser1NavigateComplete2 wurde mit "if AnsiStartsText(DankUrl,Browser1.LocationURL) then..." geschaut, ob besagte Dank-Url aufgerufen wird.
3. War Prüfung nach Nr. 2 positiv, wurde freigeschaltet.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.01.24 13:36 
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
2. In der Prozedur Browser1NavigateComplete2 wurde mit "if AnsiStartsText(DankUrl,Browser1.LocationURL) then..." geschaut, ob besagte Dank-Url aufgerufen wird.
Das ist dann aber wirklich leicht auszutricksen.

Eine so simple Prüfung funktioniert mit einem externen Browser nicht. Das geht nur mit einer richtigen Paypal-Integration über die API.
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Fr 12.01.24 13:47 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
2. In der Prozedur Browser1NavigateComplete2 wurde mit "if AnsiStartsText(DankUrl,Browser1.LocationURL) then..." geschaut, ob besagte Dank-Url aufgerufen wird.
Das ist dann aber wirklich leicht auszutricksen.

Eine so simple Prüfung funktioniert mit einem externen Browser nicht. Das geht nur mit einer richtigen Paypal-Integration über die API.


Wie soll das ausgetrickst werden?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.01.24 15:11 
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Wie soll das ausgetrickst werden?
Man kann von außen auf ein TWebBrowser Control zugreifen und die URL einfach selbst setzen. Dafür muss man natürlich ahnen, dass da keine weitere Prüfung erfolgt, was normalerweise ja der Fall ist.

Ach ja:
Und man kann auch einfach die URL auf einen lokalen Server umleiten, wenn du auch das Zertifikat nicht prüfst. Dann braucht man unter der Adresse nur einen Redirect zu hinterlegen und fertig.
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Fr 12.01.24 17:04 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
...
Dafür muss man natürlich ahnen, dass da keine weitere Prüfung erfolgt, was normalerweise ja der Fall ist.
...

Ein bisschen prüft das Programm dann doch noch.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.01.24 17:30 
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Ein bisschen prüft das Programm dann doch noch.
Das heißt du benötigst nach deinem bisherigen Vorgehen auch Zugriff auf den Inhalt der Seite. Auch das geht mit einem externen Browser nicht.

Da bleiben dann nicht viele Möglichkeiten. Die TMS Edgekomponente funktioniert mit Delphi 2010 noch nicht. Andere kenne ich nicht. Bleibt noch Chromium mit der kompletten Engine, die mitgeliefert werden muss, oder eben eine neue Delphiversion, aber das Thema Community Edition hattest du hier im Forum ja glaube ich schonmal.