diff --git a/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js b/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js index 72206247a..0769eed44 100644 --- a/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js +++ b/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js @@ -194,6 +194,23 @@ class CreditCardRenderer { if (contingency !== 'NO_3D_SECURE') { hostedFieldsData.contingencies = [contingency]; } + + if (this.defaultConfig.payer) { + hostedFieldsData.cardholderName = this.defaultConfig.payer.given_name + ' ' + this.defaultConfig.payer.surname; + } + if (!hostedFieldsData.cardholderName) { + const firstName = document.getElementById('foo_billing_first_name') ? document.getElementById('foo_billing_first_name').value : ''; + const last = document.getElementById('billing_last_name') ? document.getElementById('billing_last_name').value : ''; + + if (!firstName || !lastName) { + this.spinner.unblock(); + this.errorHandler.message(this.defaultConfig.hosted_fields.labels.cardholder_name_required); + return; + } + + hostedFieldsData.cardholderName = firstName + ' ' + lastName; + } + this.currentHostedFieldsInstance.submit(hostedFieldsData).then((payload) => { payload.orderID = payload.orderId; this.spinner.unblock(); diff --git a/modules/ppcp-button/src/Assets/SmartButton.php b/modules/ppcp-button/src/Assets/SmartButton.php index 59d25a81f..582c27116 100644 --- a/modules/ppcp-button/src/Assets/SmartButton.php +++ b/modules/ppcp-button/src/Assets/SmartButton.php @@ -695,6 +695,7 @@ class SmartButton implements SmartButtonInterface { 'Unfortunately, we do not support your credit card.', 'woocommerce-paypal-payments' ), + 'cardholder_name_required' => __('Cardholder\'s first and last name required, please fill checkout form required fields.', 'woocommerce-paypal-payments'), ), 'valid_cards' => $this->dcc_applies->valid_cards(), 'contingency' => $this->get_3ds_contingency(),