During a few days I debug with PayPal Sandbox I more than once noticed that IPN notifications are queued and are not processed for extended periods of time (maybe hours).
Is this problem specific to Sandbox?
Does it happens with regular (non-Sandbox) PayPal IPN?
If it happens, then how often (approximately) it happens?
I'll admit to being a 'noob' with IPN (I managed to get mine working OK). I have noticed during testing that
clicking the "Buy Now" button (which points to the Sandbox webscr) sometimes gives me a 500 error. A refresh/repost usually works.
the Listener code doesn't like email addresses with '+' symbols in the sellers' account profile.
I'm still in development mode, so can't speak to production environment. But you might find the IPN Tester helpful (if you haven't already used it) to test your code: https://developer.paypal.com/developer/ipnSimulator/
Using the IPN Tester will help verify that your 'listener' code is returning the '200' status that is required to 'finish' the transaction. My understanding is that if the '200' status is not 'heard' by PayPal, the IPN will continue to be sent at varying intervals. So you could look at your logs to ensure the '200' is being sent properly.
Related
I have a question about Paypal IPN, I was wondering when does the IPN activate and send it's message to my website.
I currently have my website that has a buy button. When the client buy the service, he is directed to paypal. Once he pay the service, nothing happen. In order for me to receive the IPN notification, the user has to click "Return to merchant website" or whatever the link is, then I receive the IPN notification.
Is it normal, does it work like that for everyone?
Cause right now, most people when they are done with the payment, just close the website and I don't receive any notification.
Thanks for any help !
Your question leaves a lot of missing information so I will go through each option for you:
Read here about how to setup a sandbox account if you don't already have one: https://developer.paypal.com/docs/classic/lifecycle/sb_create-accounts/
Bare in mind that your sandbox account is entirely separate in every way from your live paypal account. All settings will need to be checked and customised as needed.
Set up your IPN URL on your sandbox account Here: https://www.sandbox.paypal.com/uk/cgi-bin/webscr?cmd=_profile-ipn-notify
Once set up, you then need to download and set your code (PHP or something else) to the listener (referenced in the above sandbox profile link). You can find IPN code examples here: https://github.com/paypal/ipn-code-samples
When that's all set you need to set your listener to using the sandbox mode and then log in to your live account and then run the IPN simulator from here: https://developer.paypal.com/developer/ipnSimulator/
Paypal will send messages to your IPN listener and you need to do something with the messages, typically output them into some sort of log file. Any issues, you can read Paypals feedback and IPN data/delivery information here https://www.sandbox.paypal.com/uk/cgi-bin/webscr?cmd=_display-ipns-history&nav=0.3.4 [Found from History->ipnHistory on the Paypal menu] and it should list them out. You can resend any failed or queued or undelivered messages.
Paypal is a terribly documented and terribly structured system for coding with. I hate it. Use Stripe.
I love bullet points.
Paypal claims they will try and resend failed/queued IPNs 16 times over 5 days. I have yet to see this, you need to resend them manually (at least, sandbox ones)
Please remember all the settings and changes you have made to your Sandbox account will need to be also made to your live account before you make your payment system live!
Solution
My return_URL is the location of my IPN.php file which take care of the data sent and received. My problem is that the IPN is only firing when I click the "Return to merchant website" and not when the payment is actually completed
What you have done, from reading your comments, is set your IPN page to being your return from paypal page, this is NOT the way IPN is supposed to work, the IPN page should never be visited by the customer, only ever by Paypal.
Read through my anwser (points 2,3,4) and set up your IPN web link as I have described above, your return_url value should be a basic page to say to the customer "transaction complete". The IPN page is defined on your paypal accounts (sandbox and live) as I stated above.
This will fix your problem.
I have a site that offers services to paid members.
When a member subscribes, he goes to Paypal, pays the subscription and then Paypal calls my ipn script which takes care of updating the database and sending a message to the member.
Everything is working fine, but some time ago, I started receiving some messages from Paypal:
"Please check your server that handles PayPal Instant Payment Notifications (IPN).
IPNs sent to the following URL(s) are failing:
http://domain.com/ipnhandler.php
If you do not recognize this URL, you may be using a service provider that is
using IPN on your behalf. Please contact your service provider with the above
information. If this problem continues, IPNs may be disabled for your account."
I found it strange, because at the same time, people went on subscribing, and the database was updated everytime. So I found strange to receive a message from Paypal saying that the URL was failing... How could it be failing, while the script was working fine?!
Then, one day, the database stopped from being updated. It started in early december, and since then, people pay their subscription but nothing happens. I had a look at the ipn history in my Paypal account, and I can see that Paypal called the script once (only once) for each payment, but the script returned nothing (http response is empptty). And on my side, I had a look at my log file, and there's nothing in it.
In my ipn script, the first thing I do is logging the call in the log file. But it's desperatingly empty since december...
Is there anyone who could help me with this issue? It's very upsetting because I have to register eveything manually... And everything was working fine, so I don't understand why it's not wirking anymre as I didn't change anything in the script neither in Paypal setup.
Please, I really need your help!!!
Thanks
The IPN script will need to load completely in order to return a 200 OK response from your server back to PayPal. What tends to happen is you could have an error happening near the end of the script after everything else has run, so while it seems like the script completed because you see emails/database updates, etc, it actually did not complete successfully.
Any time I have something going wrong with my IPN stuff I follow the steps in this guide on testing PayPal IPN and I'm able to track down the problem. I would recommend you follow those steps to find your problem.
I have a web site thats been operating for months, if not years. It takes payments via PayPal. IPNs are used to track the payment status against an order.
If the paypal account owner issues a refund, the IPN from that is tracked, and the order updated with the amount refunded.
Now: The problem: This was all working in February 2015. But since then I have made 4 refunds (buy logging into the PayPal website and refunding). Each one was days apart. In each case they were partial refunds.
In all cases the monies have reached the recipient, and logged transactions IDs etc in PayPal.
The first one, I never received the IPN.
The second one I did received the IPN (and decided the first one must have been a glitch, unusal though it would seem)
However the third and fourth also have not generated an IPN that I received.
From looking at the Apache logs, there appears to not have been even an attempt from notify.paypal.com that Apache received.
So I am much puzzled, have googled around but not found anything. Can anyone suggest what I have missed that have caused these IPNs to stop?
Perhaps I should add that I continue to receive all the payment notification IPNs just fine. It seems to be just the refunds that I miss.
I thought at one time there was a flag about IPNs in settings, but I can't see it anywhere in the new web interface.
Regards
Monathan
We have this website that was running since September 2013 and relying on paypal IPN for user registration. However, this week we got a report from the client where 3 users was able to pay through paypal but was not registered into the site.
We temporary changed the paypal email('business' field) from the client's to another paypal account. Went through the process of registration and the IPN was successfully delivered. The user was created in the system, the IPN transaction was logged into our system. When we tried to changed it back to the client's paypal email account, but unfortunately the IPN did not reached through our system.
Here are some questions that I have in mind
Does the type of paypal account (ie. business or personal account) matter when sending and receiving IPNs? Could this be a possibility? (even though last year it was working perfectly fine with the client's paypal account)
We've been receiving this paypal email (below) for the past months. That email was appearing after a few months when we opened the site and we didn't even changed a single code from our IPN listener. Could this be the reason why the IPN was not sent when we use the client's paypal account? However, we always use the notify_url field since we have multiple IPN listeners.
>Please check your server that handles PayPal Instant Payment
>Notifications (IPN). IPNs sent to the following URL(s) are failing:
>
>http://<site>/payment/postback/
>
>If you do not recognize this URL, you may be using a service provider
>that is using IPN on your behalf. Please contact your service provider
>with the above information. If this problem continues, IPNs may be
>disabled for your account.
thanks,
Your IPN script is not completing successfully, so PayPal's server is not getting a 200 result back, which causes it to send repeat IPN's and will eventually disable itself as the message says.
Your web server logs should provide the info you need. Check there to see the history of the IPN script getting hit and you'll probably find some 500 results. Those should also provide the actual error that happened so you can get it resolved.
It's possible that some IPN's are working just fine but others are failing based on certain characters in payer information or other similar issues. You need to get all of that worked out in your IPN script so it can handle anything thrown at it.
I have developed one regular paypal form along with IPN script(in PHP).
When I make the payment using sandbox, everything works fine and flawlessly !
But when the form goes live, it doesn't even call the IPN.
Please note that the live payment is made through paypal.co.uk.. and Form submits data to paypal.com.
So, I think this is happening due to paypal.co.uk.
Is it so ?
Is there any solution for this ?
No. Your IPN script is likely still configured to verify the IPN data at https://www.sandbox.paypal.com/ instead of https://www.paypal.com/, which will cause it to fail, which in turn will cause the script not to get executed.
You can review individual IPN messages to were sent for your account in History > IPN History on your PayPal account overview as well.