The issue is with how
skin/frontend/base/default/js/checkout/review.js
interacts with
design/frontend/base/default/template/paypal/express/review.phtml
review.js has not been updated since 1.7 (or maybe before)
review.phtml has been updated with 1.9
When a virtual order happens, there is no shipping section on the review page, and the logic of the "OrderReviewController" tells it to observe all the inputs of the form 'order_review_form', and if they change, to disable the "Place Order" button.
This seems to be a legacy behaviour, because the only remaining input in the 'order_review_form' is the checkbox to agree with Terms and Conditions - and you actually want precisely the opposite behaviour with that checkbox.
The solution:
Create a copy of review.js in your theme's "skin" area, eg:
skin/frontend/default/modern/js/checkout/review.js
Edit this review.js, and replace line 358
Event.observe(input, 'change', this._onElementChange.bindAsEventListener(this));
with
if (typeof input.id !== 'string' || input.id.substr(0,9) !== 'agreement') {
Event.observe(input, 'change', this._onElementChange.bindAsEventListener(this));
}
A proper solution would require review.js being rewritten to be compatible with review.phtml...
Problem solved.
Short version
As suggested by @MagenX, if you have no other bugs like I did, you should get rid of the cURL error #77 with a simple /usr/bin/yum check-update
— or yum check-update
depending on your configuration.
Detailed version
In my case, I had to solve other issues that were related to the original one, so I will relate the whole process in case someone faces the same situation one day.
When I ran /usr/bin/yum check-update
, there was an error:
Error*: Cannot retrieve metalink for repository: epel. Please verify its path and try again.
To fix this, I followed this answer and executed /usr/bin/yum --disablerepo=epel -y update ca-certificates
. At that point, I faced yet another error message:
error: rpmts_HdrFromFdno: Entête V3 RSA/SHA1 Signature, key ID c105b9de: BAD
Problem opening package ca-certificates-2015.2.4-65.0.1.el6_6.noarch.rpm
There, I followed the recommandations of this thread and that one. In other words, I executed the following commands:
wget http://vault.centos.org/6.6/updates/x86_64/Packages/nss-softokn-freebl-3.14.3-19.el6_6.x86_64.rpm
rpm2cpio nss-softokn-freebl-3.14.3-19.el6_6.x86_64.rpm | cpio -idmv
cp ./lib64/libfreeblpriv3.* /lib64
/usr/bin/yum check-update
And (for) now Paypal Express Checkout works just fine.
Best Answer
When you checkout with PayPal Express after signing into PayPal and selecting your payment method you get redirected back to your store to the
Review Order
page.On the
Review Order
page you have to select theShipping Method
before placing the order. Once you select the shipping method and hitPlace Order
your PayPal totals get updated with the cost of the selected shipping method. You get charged, and the order is placed.