Description
Preconditions
- MCE 2.1.7
- OS 7.0.20-2~ubuntu16.04.1+deb.sury.org+1
- MySQL 10.0.2 (MariaDB)
- PHP Version 7.0.20 (as php-fpm) (I know it's officialy not supported yet but it does contain important fixes), OPCache enabled
- Haproxy->Varnish->Nginx->php-fpm
- Redis as Cache/Session storage
- Running in production mode
Steps to reproduce
- Clean browser cache and cookies or start private session
- Go to the frontend and place an item into the cart, click the paypal express button in CHECKOUT after filling the data incl. email address Important: Do checkout as guest (does also work in guest mode with a customer who got an account under the same email address)
- Fill in the needed data and return from paypal to your site
- In our case, the paypal customer has another email address than the one the customer did provide in the store frontend checkout field. If you click the PPE button from within the minicart, this email does get stored correctly. As we used the checkout payment method, it results in what is written under actual result underneath.
Expected result
- Order should be placed(skip review step enabled)
Actual result
- Order doesn't get placed and the message "We can't place the order" appears
Analyse
We did analyse the logs first as we got some fixes applied related to other paypal issues I will link seperatly. In this case the email doesn't get included in the request, instead the related value stays null. This throws out the following exception "Bitte geben Sie Ihre Kunden E-Mail Adresse an". Actualy we're using Mageplaza OSC, but we did test this also with the original checkout and got the same result. This also seems to be an issue which persists since longer as our customers are frequently reporting this. As always, this is complicated cause there were bugs before that generated the same error messages in frontend. See my list at the end of this posting.
Log
[2017-07-07 07:29:30] main.DEBUG: array (
'url' => 'https://api.paypal.com/nvp',
'SetExpressCheckout' =>
array (
'PAYMENTACTION' => 'Authorization',
'AMT' => '48.31',
'CURRENCYCODE' => 'EUR',
'RETURNURL' => 'https://www.xxxxxxxxx.com/paypal/express/return/',
'CANCELURL' => 'https://www.xxxxxxxxx.com/paypal/express/cancel/',
'INVNUM' => '000002014',
'SOLUTIONTYPE' => 'Mark',
'GIROPAYCANCELURL' => 'https://www.xxxxxxxxx.com/paypal/express/cancel/',
'GIROPAYSUCCESSURL' => 'https://www.xxxxxxxxx.com/checkout/onepage/success/',
'BANKTXNPENDINGURL' => 'https://www.xxxxxxxxx.com/checkout/onepage/success/',
'PAGESTYLE' => 'XXX',
'SHIPPINGAMT' => '2.90',
'ITEMAMT' => '37.78',
'TAXAMT' => '7.63',
'BUSINESS' => NULL,
'NOTETEXT' => NULL,
'EMAIL' => NULL,
'FIRSTNAME' => 'Jan',
'LASTNAME' => 'de Tester',
'MIDDLENAME' => NULL,
'SALUTATION' => 'Herr',
'SUFFIX' => NULL,
'COUNTRYCODE' => 'DE',
'STATE' => 'NDS',
'CITY' => 'Solingen',
'STREET' => 'Querstr. 59',
'ZIP' => '42699',
'PHONENUM' => NULL,
'SHIPTOCOUNTRYCODE' => 'DE',
'SHIPTOSTATE' => 'NDS',
'SHIPTOCITY' => 'Solingen',
'SHIPTOSTREET' => 'Querstr. 59',
'SHIPTOZIP' => '42699',
'SHIPTOPHONENUM' => NULL,
'SHIPTOSTREET2' => '',
'STREET2' => '',
'SHIPTONAME' => 'Herr Jan de Tester',
'ADDROVERRIDE' => 1,
'METHOD' => 'SetExpressCheckout',
'VERSION' => '72.0',
'USER' => '',
'PWD' => '',
'BUTTONSOURCE' => 'Magento_Cart_Community',
),
'response' =>
array (
'TOKEN' => 'EC-XXX',
'TIMESTAMP' => '2017-07-07T07:29:30Z',
'CORRELATIONID' => 'XXX',
'ACK' => 'Success',
'VERSION' => '72.0',
'BUILD' => '35915193',
),
) {"is_exception":false} []