Paypal IPN debugging using ngrok on localhost not triggered |
|
Hi.
I'm currently trying to debug Paypal IPN (Instant Payment Notification) on localhost. Since an external service cannot access localhost, I decide to use ngrok (https://ngrok.com) to be able to "expose" my localhost to the internet. This little service is marvelous and my localhost is now indeed accessible from the internet. The problem I have is that I cannot trigger the debugger to start when it my php script is accessed (I've checked, using logs). Here are the steps to reproduce - Install and setup ngrok - In cmd, cd to project directory and start a ngrok tunnel using this command: ngrok http -host-header=localhost:80 80 - Go to http://localhost:4040/ to click and display the ngrok local host Request Inspector Page. Note: h-t-t-p stands for httpn, and .xxx.yyy is to hide my ip address Now you can go to your project page, just as if you were calling from inside your computer like this h-t-t-p://d84fe39b.ngrok.io/myProject/index.php. h-t-t-p://d84fe39b.ngrok.io now represent localhost on your machine When I use h-t-t-p://localhost/myProject/index.php, debugger is triggered When I use h-t-t-p://d84fe39b.ngrok.io/myProject/index.php, debugger is NOT triggered When I tried to add ?DBGSESSID=437615619354100004;d=1,p=0,c=1 in the url I received a debugger message, but no debugger triggered: DBG 9.1.10 Failed to start DBG session Reason: failed to connect to the client at 72.10.xxx.yyy:7869, please make sure that IDE is running Not sure what it means? Visit http://www.nusphere.com/dbg/?err=-5 for troubleshooting. If you didn't intend to run debug session you may want to drop debugger cookie by clicking this button: Debugger request: "437607218943800003;d=1,p=0,c=1&id=111" Request found in: "query_string" Target PHP version: "5.6.x" Server API: "Apache 2.0 Handler" Extensions API: "220131226" Modules API: "20131226" PHP API: "20131106" After reading all nusphere doc, I've tried everything with no success Here is my php.ini debugger settings: [debugger] debugger.JIT_enabled=Off debugger.JIT_level=3 debugger.hosts_deny=ALL debugger.hosts_allow=127.0.0.1, localhost, ::1, 72.10.xxx.yyy debugger.ports=7869 I have tried with or without 72.10.xxx.yyy but it didn't worked. If I can't trigger debugging by simply calling index.php from ngrok, there is no reason to continue trying to debug Paypal IPN... Does anyone has experience using ngrok with PhpEd, in debug mode? If this works, It could open a lots of great opportunities for remote services call debugging... Thanks |
||||||||||||
|
Site Admin
|
If I got you right, your web and IDE are on the same host. In this case you'd better add 127.0.0.1 in to the URL. Otherwise debugger "thinks" the IDE is where the client -- your ngrok and fails to reach out the IDE.[/quote] |
||||||||||||||
_________________ The PHP IDE team |
Site Admin
|
Sorry, I have no idea what ngrok is and what its role in this context.
What I meant is -- instead of the following HTTP GET parameter
you want to try ?DBGSESSID=437615619354100004@127.0.0.1;d=1,p=0,c=1 |
||||||||||||||
_________________ The PHP IDE team |
|
Whoo-hoo! Its working!
Thanks As I mention before, ngrok is a tool that enables me to "expose" my localhost to the internet. The reason I'm using it is because I want to be able to debug the return of a Paypal transaction (IPN) in my development environment, not remotely on my production server. So when I'm on Paypal Sandbox, after having started an ngrok session, I now use these parameters to create a transaction // Debug to localhost using ngrok $ngrokSession = 'http://604df65f.ngrok.io'; $DBGID = '?DBGSESSID=437607218943800003@127.0.0.1;d=1,p=0,c=1'; $TEST_URL = (SYST_WEB_ENVIRONMENT != 'dev') ? $ngrokSession . '/myLocalProjectDirectory' : 'http://dev.myproject.com'; // Local dev or remote dev // PayPal settings if ($isSandbox) { // Testing credentials $business_email = "payment-facilitator@myproject.com"; $return_url = "$TEST_URL/myShoppingCart.php$DBGID&ctype=$cartType; // Also used to delete cart item after buying process $cancel_url = "$TEST_URL/myShoppingCart.php$DBGID"; $notify_url = "$TEST_URL/_paypalProcess.php$DBGID"; } With the new parameter you have proposed me (@127.0.0.1) its working properly and my debug session is triggered. Now I will be able to debug any external services! Thanks again |
||||||||||||
|
Site Admin
|
FYI instead of exposing something with ngrok, which may be unsafe, you can debug your public or intranet web sites in-place -- see Remote project options in Project Settings Wizard
|
||||||||||||
_________________ The PHP IDE team |
|
Thanks but it is easier with ngrok (with the little trick you showed me).
Access to ngrok session address is not intuitive. This session number ('http://604df65f.ngrok.io') change every time you start a new session. So it would be impossible for someone to guess it and access you localhost The sessions can also be killed using Ctrl-C, when debugging is done, blocking all access to your computer, and if you ever forget to kill your session, it will terminate itself after 8 hours |
||||||||||||
|
Paypal IPN debugging using ngrok on localhost not triggered |
|
||
Content © NuSphere Corp., PHP IDE team
Powered by phpBB © phpBB Group, Design by phpBBStyles.com | Styles Database.
Powered by
Powered by phpBB © phpBB Group, Design by phpBBStyles.com | Styles Database.
Powered by