First off sorry about the lack of information in the post, as I’m not exactly sure where within the integration this is breaking. I can add more/code/etc if necessary.
I recently migrated to a new server (including moving from php 4.x > 5.3 and plesk 8 > 10) and everything (including Paypal Payments Pro) is working perfectly fine EXCEPT for PayPal Express checkout.
All of the code is there and nothing has changed on my account, it just seems it isn’t working on the new server. Everything in the process works fine until the startExpressCheckout, which doesn’t return a token, which sends the browser to a paypal address with an empty token value.
I’m not really getting any useful PHP errors, so I don’t know exactly where to look. Might this be related to SSL/certificates/etc? A difference in the php versions?
The original integration was made by another developer and they did use some version of Pear, not sure if that will affect anything.
2
Answers
Turns out the error was related to the links that were built to direct Paypal back to the site. Previous versions of php/apache/whatever had no problem using
$_SERVER["SCRIPT_URI"]
but apparently the new versions will have none of that. I changed the code that builds the links to the return pages and now everything is working properly again.It could be Plesk. Plesk puts open_basedir in your site level configs. So if it’s referencing the core PEAR install (which is outside your jailed Plesk directory), that could be your problem.
Try making a vhost.conf file like this (replace the path to your site)
That will turn that setting off on your site. See if that makes a difference.