Automattic\WooCommerce\Internal\Fulfillments

FulfillmentUtils::validate_fedex_check_digitpublic staticWC 1.0

Validate FedEx check digit for 12/14-digit tracking numbers.

Method of the class: FulfillmentUtils{}

No Hooks.

Returns

true|false. True if valid, false otherwise.

Usage

$result = FulfillmentUtils::validate_fedex_check_digit( $tracking_number ): bool;
$tracking_number(string) (required)
The FedEx tracking number.

FulfillmentUtils::validate_fedex_check_digit() code WC 10.3.3

public static function validate_fedex_check_digit( string $tracking_number ): bool {
	if ( ! preg_match( '/^\d{12}$/', $tracking_number ) ) {
		return false;
	}
	$digits           = str_split( substr( $tracking_number, 0, 11 ) );
	$multipliers      = array( 3, 1, 7 );
	$sum              = 0;
	$multiplier_index = 0;
	for ( $i = 10; $i >= 0; $i-- ) {
		$sum             += $digits[ $i ] * $multipliers[ $multiplier_index ];
		$multiplier_index = ( ++$multiplier_index ) % 3;
	}
	$check = $sum % 11;
	if ( 10 === $check ) {
		$check = 0;
	}
	return intval( $tracking_number[11] ) === $check;
}