From b8c68dc782d6471c9c828659604ebd509f39efe9 Mon Sep 17 00:00:00 2001
From: Sviatoslav Mankivskyi <smankivskyi@ebay.com>
Date: Fri, 24 Apr 2015 10:19:37 +0300
Subject: [PATCH] MAGETWO-36150: Implement Express Checkout (PayPal.com API )
 checkout UI rendering

---
 .gitignore                                             |  1 +
 .../frontend/web/js/action/select-payment-method.js    | 10 +++++-----
 .../Magento/Quote/Model/PaymentMethodManagement.php    |  6 +++++-
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/.gitignore b/.gitignore
index 1e6c8cdcece..3a8bbe4a957 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,7 @@ atlassian*
 !/pub/media/wysiwyg/.htaccess
 /pub/media/tmp/*
 !/pub/media/tmp/.htaccess
+/pub/media/captcha/*
 /pub/static/*
 !/pub/static/.htaccess
 
diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/select-payment-method.js b/app/code/Magento/Checkout/view/frontend/web/js/action/select-payment-method.js
index 9a754ebca3c..8747c5c5036 100644
--- a/app/code/Magento/Checkout/view/frontend/web/js/action/select-payment-method.js
+++ b/app/code/Magento/Checkout/view/frontend/web/js/action/select-payment-method.js
@@ -15,9 +15,9 @@ define(
     ],
     function($, quote, urlBuilder, navigator, errorList, storage, _) {
         "use strict";
-        return function (activeMethod, additionalData) {
+        return function (methodView) {
             var defaultMethodData = {
-                "method": activeMethod.getCode(),
+                "method": methodView.getCode(),
                 "po_number": null,
                 "cc_owner": null,
                 "cc_number": null,
@@ -26,7 +26,7 @@ define(
                 "cc_exp_month": null,
                 "additional_data": null
             };
-            $.extend(defaultMethodData, activeMethod.getData(), {'additional_data': additionalData});
+            $.extend(defaultMethodData, methodView.getData());
             var paymentMethodData = {
                 "cartId": quote.getQuoteId(),
                 "paymentMethod": defaultMethodData
@@ -41,8 +41,8 @@ define(
                 JSON.stringify(_.extend(paymentMethodData, shippingMethodData))
             ).done(
                 function(response) {
-                    if (activeMethod.afterSave()) {
-                        quote.setPaymentMethod(activeMethod.getCode());
+                    if (methodView.afterSave()) {
+                        quote.setPaymentMethod(methodView.getCode());
                         quote.setTotals(response);
                         navigator.setCurrent('paymentMethod').goNext();
                     }
diff --git a/app/code/Magento/Quote/Model/PaymentMethodManagement.php b/app/code/Magento/Quote/Model/PaymentMethodManagement.php
index fa4add6be7b..b75aafe39c7 100644
--- a/app/code/Magento/Quote/Model/PaymentMethodManagement.php
+++ b/app/code/Magento/Quote/Model/PaymentMethodManagement.php
@@ -54,7 +54,11 @@ class PaymentMethodManagement implements \Magento\Quote\Api\PaymentMethodManagem
             \Magento\Payment\Model\Method\AbstractMethod::CHECK_ORDER_TOTAL_MIN_MAX,
         ]);
         $payment = $quote->getPayment();
-        $payment->importData($method->getData());
+
+        $data = $method->getData();
+        $data = array_merge($data, (array)$data['additional_data']);
+        unset($data['additional_data']);
+        $payment->importData($data);
 
         if ($quote->isVirtual()) {
             // check if billing address is set
-- 
GitLab