diff --git a/src/Gateway/GatewayModule.php b/src/Gateway/GatewayModule.php index ba00c453..1b57636b 100644 --- a/src/Gateway/GatewayModule.php +++ b/src/Gateway/GatewayModule.php @@ -707,18 +707,9 @@ public function in3FieldsMandatoryPayForOrder($order) ); } $phoneValue = filter_input(INPUT_POST, 'billing_phone_in3', FILTER_SANITIZE_SPECIAL_CHARS) ?? false; - $phoneValue = $phoneValue && $this->isPhoneValid($phoneValue) ? $phoneValue : false; - $phoneLabel = __('Phone', 'mollie-payments-for-woocommerce'); + $phoneValue = $phoneValue && $this->isPhoneValid($phoneValue) ? $phoneValue : null; - if (!$phoneValue) { - wc_add_notice( - sprintf( - __('%s is a required field. Valid phone format +000000000', 'mollie-payments-for-woocommerce'), - "$phoneLabel" - ), - 'error' - ); - } else { + if ($phoneValue) { $order->set_billing_phone($phoneValue); } } @@ -797,6 +788,10 @@ public function addPaymentMethodMandatoryFieldsPhoneVerification( if (isset($fields['billing_phone']) && $this->isPhoneValid($fields['billing_phone'])) { return $fields; } + if (isset($fields['billing_phone']) && !$this->isPhoneValid($fields['billing_phone'])) { + $fields['billing_phone'] = null; + return $fields; + } $fieldPosted = filter_input(INPUT_POST, $field, FILTER_SANITIZE_SPECIAL_CHARS) ?? false; if (!$fieldPosted) { $errors->add( @@ -810,13 +805,7 @@ public function addPaymentMethodMandatoryFieldsPhoneVerification( } if (!$this->isPhoneValid($fieldPosted)) { - $errors->add( - 'validation', - sprintf( - __('%s is not a valid phone number. Valid phone format +00000000000', 'woocommerce'), - "$fieldLabel" - ) - ); + $fields['billing_phone'] = null; return $fields; } else { $fields['billing_phone'] = $fieldPosted; @@ -883,7 +872,7 @@ public function switchFields($data) private function isPhoneValid($billing_phone) { - return preg_match('/^\+[1-9]\d{10,13}$/', $billing_phone); + return preg_match('/^\+[1-9]\d{10,13}$|^[1-9]\d{9,13}$/', $billing_phone); } private function isBirthValid($billing_birthdate) @@ -906,17 +895,15 @@ public function addPhoneWhenRest($arrayContext) if (!empty($billingPhone) && $this->isPhoneValid($billingPhone)) { return; } + if (!empty($billingPhone) && !$this->isPhoneValid($billingPhone)) { + $context->order->set_billing_phone(null); + $context->order->save(); + return; + } $billingPhone = $context->payment_data['billing_phone']; - if ($billingPhone) { + if ($billingPhone && $this->isPhoneValid($billingPhone)) { $context->order->set_billing_phone($billingPhone); $context->order->save(); - } else { - $message = __('Please introduce a valid phone number. +00000000000', 'mollie-payments-for-woocommerce'); - throw new RouteException( - 'woocommerce_rest_checkout_process_payment_error', - $message, - 402 - ); } } } diff --git a/src/Payment/MollieObject.php b/src/Payment/MollieObject.php index ba03f6e1..a0bbd917 100644 --- a/src/Payment/MollieObject.php +++ b/src/Payment/MollieObject.php @@ -1073,8 +1073,8 @@ protected function getFormatedPhoneNumber(string $phone) //remove whitespaces and all non numerical characters except + $phone = preg_replace('/[^0-9+]+/', '', $phone); - //check that $phone is in E164 format - if ($phone !== null && preg_match('/^\+[1-9]\d{1,14}$/', $phone)) { + //check that $phone is in E164 format or can be changed by api + if ($phone !== null && preg_match('/^\+[1-9]\d{10,13}$|^[1-9]\d{9,13}$/', $phone)) { return $phone; } return null;