You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a conflict with International Phone Number Format plugin on international phone number validation and WooCommerce PayPal Payments.
WooCommerce PayPal Payments may have to adapt its validation code in order to support E.164 international phone number format.
Go at the PayPal plugin in modules/ppcp-api-client/src/Factory/PayerFactory.php
Required modification of the code to support international numbers that contain the "+" sign.
public function from_wc_order( \WC_Order $wc_order ): Payer {
$payer_id = '';
$birthdate = null;
$phone = null;
if ( $wc_order->get_billing_phone() ) {
// make sure the phone number contains only numbers and is max 14. chars long.
$national_number = $wc_order->get_billing_phone();
$national_number = preg_replace( '/[^0-9]/', '', $national_number );
$national_number = substr( $national_number, 0, 14 );
if ( $national_number ) {
$phone = new PhoneWithType(
'HOME',
new Phone( $national_number )
);
}
}
PayPal orders may not go through because of this conflict.
It is better to have support for E.164 standard to have reliable SMS notifications for shipping.
Expected Behavior
Support E.164 and PayPal orders would go through.
For that, we may have to solve this plugin conflict on either side.
Actual Behavior
PayPal orders are not going through because of incomplete billing phone validation.
Environment
WordPress Version: latest
WooCommerce Version: latest
Plugin Version: latest
Browser [e.g. Chrome, Safari] and Version: Chrome, Safari, all latest
Any other plugins installed: many including International Phone Number Format plugin and WooCommerce PayPal payments
The text was updated successfully, but these errors were encountered:
Since the issue is not related to the WordPress core or the WooComerce plugin itself, I think there is nothing that can be done on our end.
I took a quick look at the WooCommerce PayPal plugin and found that it uses the WC_Order after processing orders to get the billing phone number and complete the payment.
Try to manipulate the billing phone number value, you can use this hook such as the code below:
This filter removes the leading "+" character from your billing phone number when fetched from an order.
keep in mind that applying this filter globally may lead to unintended consequences. It's advisable to implement specific conditions or rules to determine when this hook should be applied to avoid potential issues.
Describe the Bug
There is a conflict with International Phone Number Format plugin on international phone number validation and WooCommerce PayPal Payments.
WooCommerce PayPal Payments may have to adapt its validation code in order to support E.164 international phone number format.
To Reproduce
modules/ppcp-api-client/src/Factory/PayerFactory.php
PayPal orders may not go through because of this conflict.
It is better to have support for E.164 standard to have reliable SMS notifications for shipping.
Expected Behavior
Support E.164 and PayPal orders would go through.
For that, we may have to solve this plugin conflict on either side.
Actual Behavior
PayPal orders are not going through because of incomplete billing phone validation.
Environment
The text was updated successfully, but these errors were encountered: