it-swarm.com.de

Kann ich Paypal-API von localhost testen

UPDATE 1:

Gemäß diesem Tutorial zu Verwendung von Paypal 'Instant Payment Notification mit PHP kann Paypal nicht auf lokal gehostete Websites zugreifen, sofern nicht bestimmte Router-Ports geöffnet sind. Liegt das daran, dass es sich bei der Website um IPN handelt oder ist dies für alle Paypal-APIs zutreffend?

URSPRÜNGLICHE FRAGE:

Auf meinem Laptop habe ich eine LAMP-Umgebung eingerichtet, wenn ich den http://localhost zum Erstellen einer Website verwende, bevor ich live gehe.

Für ein neues Projekt muss ich die Paypal-APIs verwenden. Kann ich den localhost zum Testen der Paypal-APIs verwenden, wenn ich meinen Laptop mit dem Internet verbunden habe? Oder muss ich meine Website an einen anderen LAMP-Host hochladen?

Sie denken wahrscheinlich, was für eine dumme Frage, probieren Sie es einfach aus, um zu sehen, ob es funktioniert. Ich habe es ausprobiert und es funktioniert nicht und ich wollte diese Frage ausschließen, bevor ich zum nächsten Schritt übergehe.

20
oshirowanen

Es sollte funktionieren. Ich habe im letzten Jahr eine Zahlungsintegration mit Paypal vorgenommen, und es hat problemlos auf localhost funktioniert.

Verwenden Sie die Paypal-Sandbox für die Entwicklung? https://developer.Paypal.com/

4
Mihai Frentiu

Wenn Sie Ihren IPN-Code debuggen möchten, müssen Sie Ihren Server auf irgendeine Weise öffentlich verfügbar machen. Dies ist so, damit Paypal zu einem späteren Zeitpunkt, nachdem Sie Ihre Anfrage gesendet haben, asynchron auf Ihren Server zurückgeschickt werden kann. Normalerweise ist das ziemlich schnell, denke ich (innerhalb von 15 Sekunden), aber es könnte länger dauern.

Eine einfache Möglichkeit, einen Entwicklungsserver öffentlich verfügbar zu machen, ist die Verwendung von ngrok oder forwardhq.com . Auf diese Weise können Sie sich wie üblich in Ihrem IDE weiterentwickeln und Ihren Code im Debug-Modus ausführen. Wenn Paypal an Ihren Endpunkt zurücksendet, können Sie es direkt in Ihrer IDE debuggen. Diese Services runden das für Sie ab, so dass Sie ganz einfach auf technisches Know-how verzichten können. 

Nach meinem Verständnis geschieht dies mit einem "Reverse-SSH-Tunnel", durch den Ihre Site öffentlich gemacht werden kann, indem sie über einen bereits öffentlich zugänglichen Server weitergeleitet wird. Bevor Sie dies tun, müssen Sie bedenken, dass nicht nur Paypal Ihre Website aufrufen kann, sobald diese veröffentlicht wurde, sondern jeder kann. Bitte berücksichtigen Sie dies zuerst.

Wenn Sie Ihre eigene öffentliche Domain haben und es Ihnen nichts ausmacht, in einem Terminal mit SSH herumzuspielen, können Sie vermutlich so etwas wie dieses Shell-Skript machen ( kopiert von diesem Gist )

# Usage: show <local-port> <subdomain>
function show() {
    DOMAIN=".yourdomain.com"
    REMOTE="$2$DOMAIN"
    ssh -tR 1080:127.0.0.1:$1 vps "Sudo ssh -Nl \$USER -L $REMOTE:80:127.0.0.1:1080 localhost"
}

Damit dies wie oben beschrieben funktioniert, müssen Sie Folgendes in Ihre Datei ~/.ssh/config einfügen:

Host vps
    HostName <server address>
    User <server username>

Wenn Sie dies nicht tun möchten (oder können), wird Folgendes funktionieren:

SERVERUSER="<server username>"
ssh -l $SERVERUSER -tR 1080:127.0.0.1:$1 <server address> "Sudo ssh -Nl \$SERVERUSER -L $REMOTE:80:127.0.0.1:1080 localhost"
18
Brad Parks

Eine einfache Lösung ist auf der offiziellen Entwicklerseite von Paypal beschrieben:

developer.Paypal.com - Lokale IPN-Tests

Der Trick besteht darin, eine kleine HTML-Datei mit diesem Inhalt zu schreiben:

<form target="_new" method="post" action="https://www.YourDomain.com/Path/YourIPNHandler.php">

<!-- start example variables: -->

<input type="hidden" name="SomePayPalVar" value="SomeValue1"/>
<input type="hidden" name="SomeOtherPPVar" value="SomeValue2"/>
    
<!-- /end example variables -->

<input type="submit"/>
	
</form>

Um die tatsächlichen Ergebnisse zu erhalten, müssen Sie alle IPN-Variablen kopieren, die von Paypal gesendet werden. Diese echten Variablen finden Sie im Paypal-Konto unter IPN-Verlauf:

IPNs Geschichte

Sie müssen auf die relative Message-ID klicken und dann den Inhalt der "IPN-Nachricht" kopieren (dies ist etwa mc_gross = 27.00 & rechnung = Test-1 & protection_eligibility = Ineligible & ...), die in versteckte HTML-Eingabefelder umgewandelt werden muss. Zum Beispiel:

<input type="hidden" name="mc_gross" value="27.00"/>
<input type="hidden" name="invoice" value="Test-1"/>
<input type="hidden" name="protection_eligibility" value="Ineligible"/>

....

Nachdem Sie alle diese Variablen eingerichtet und die Aktions-URL geändert haben, können Sie die Datei mit einem Browser öffnen und dieses Formular senden.

7
Mauro Mascia

Wenn http: // localhost nicht gültig ist, verwenden Sie http://127.0.0.1

5

Es sollte ohne Probleme funktionieren, es kann jedoch wählerisch werden, wenn Sie "ungültige URLs" für Rückgabe-URLs und IPN-Nachrichten-URLs einreichen. Das heißt, das Senden von http: //localhost/cancelpaypal.php als cancelURL sagt Ihnen möglicherweise, dass es sich um eine ungültige URL handelt.

Ich denke jedoch nicht, dass es sollte.

Router-Ports müssen nur für IPN geöffnet werden, da die Weiterleitung im normalen Fluss ein regulärer "Location:" - Header ist. Daher muss Ihr Browser auf die Site zugreifen (localhost).

3
jishi

Nun, es funktioniert am meisten, aber Sie können auch einen temporären lokalen DNS-Eintrag einrichten. Sie müssen nur Folgendes tun:

  1. öffne deine/etc/hosts
  2. einen neuen Eintrag hinzufügen: yourwebsite.com 127.0.0.1

Wenn Ihre Browser-Abfrage für die Website von Ihrer 127.0.0.1 abgerufen wird, müssen Sie dns (/etc/init.d/nscd restart) leeren. 

und das ist alles, aber vergessen Sie nicht, den Eintrag zu entfernen, wenn Sie zur Produktion bereit sind.

0
jamesjara