diff --git a/.gitignore b/.gitignore
index 1e6c8cdcecef6cdad04fdea14e744b760cb2816e..3a8bbe4a9576898486e8da68c0e2b4e9998ee564 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 9a754ebca3cbb93b310be697e7eb00b579b2c9f7..8747c5c50368e27101eefd651340b89501fab4dc 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 fa4add6be7b7ec66b9872c55d1f1f1983ea1c475..b75aafe39c7b39ec81f75c615ec7e0dfd5bfaf97 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