Automattic\WooCommerce\Admin\Features\PaymentGatewaySuggestions

DefaultPaymentGateways::get_recommendation_priority()private staticWC 1.0

Get recommendation priority for a given payment gateway by id and country. If country is not supported, return null.

Method of the class: DefaultPaymentGateways{}

No Hooks.

Return

Int|null. Priority. Priority is 0-indexed, so 0 is the highest priority.

Usage

$result = DefaultPaymentGateways::get_recommendation_priority( $gateway_id, $country_code );
$gateway_id(string) (required)
Payment gateway id.
$country_code(string) (required)
Store country code.

DefaultPaymentGateways::get_recommendation_priority() code WC 9.7.1

private static function get_recommendation_priority( $gateway_id, $country_code ) {
	$recommendation_priority_map = array(
		'US' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'square_credit_card',
			'amazon_payments_advanced',
			'affirm',
			'afterpay',
			'klarna_payments',
		),
		'CA' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'square_credit_card',
			'affirm',
			'afterpay',
			'klarna_payments',
		),
		'AT' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'BE' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'BG' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'HR' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'ppcp-gateway',
		),
		'CH' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
		),
		'CY' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'amazon_payments_advanced',
		),
		'CZ' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'DK' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'EE' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
		),
		'ES' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'mollie_wc_gateway_banktransfer',
			'square_credit_card',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'FI' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'mollie_wc_gateway_banktransfer',
			'kco',
			'klarna_payments',
		),
		'FR' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'square_credit_card',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'DE' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'GB' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'square_credit_card',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'GR' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
		),
		'HU' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'amazon_payments_advanced',
		),
		'IE' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'square_credit_card',
			'amazon_payments_advanced',
		),
		'IT' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'LV' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'LT' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'LU' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'amazon_payments_advanced',
		),
		'MT' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'NL' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'NO' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'kco',
			'klarna_payments',
		),
		'PL' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'mollie_wc_gateway_banktransfer',
			'klarna_payments',
		),
		'PT' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'airwallex_main',
			'amazon_payments_advanced',
		),
		'RO' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'SK' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
		),
		'SL' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'amazon_payments_advanced',
		),
		'SE' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'kco',
			'klarna_payments',
			'amazon_payments_advanced',
		),
		'MX' => array(
			'stripe',
			'woo-mercado-pago-custom',
			'ppcp-gateway',
			'klarna_payments',
		),
		'BR' => array( 'stripe', 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'AR' => array( 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'BO' => array(),
		'CL' => array( 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'CO' => array( 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'EC' => array( 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'FK' => array(),
		'GF' => array(),
		'GY' => array(),
		'PY' => array(),
		'PE' => array( 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'SR' => array(),
		'UY' => array( 'woo-mercado-pago-custom', 'ppcp-gateway' ),
		'VE' => array( 'ppcp-gateway' ),
		'AU' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'airwallex_main',
			'ppcp-gateway',
			'square_credit_card',
			'afterpay',
			'klarna_payments',
		),
		'NZ' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'airwallex_main',
			'ppcp-gateway',
			'klarna_payments',
		),
		'HK' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'airwallex_main',
			'ppcp-gateway',
			'payoneer-checkout',
		),
		'JP' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'ppcp-gateway',
			'square_credit_card',
			'amazon_payments_advanced',
		),
		'SG' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
			'stripe',
			'airwallex_main',
			'ppcp-gateway',
		),
		'CN' => array( 'airwallex_main', 'ppcp-gateway', 'payoneer-checkout' ),
		'FJ' => array(),
		'GU' => array(),
		'ID' => array( 'stripe', 'ppcp-gateway' ),
		'IN' => array( 'stripe', 'razorpay', 'payubiz', 'ppcp-gateway' ),
		'ZA' => array( 'payfast', 'paystack' ),
		'NG' => array( 'paystack' ),
		'GH' => array( 'paystack' ),
		'AE' => array(
			'woocommerce_payments:with-in-person-payments',
			'woocommerce_payments:without-in-person-payments',
			'woocommerce_payments',
		),
	);

	// If the country code is not in the list, return default priority.
	if ( ! isset( $recommendation_priority_map[ $country_code ] ) ) {
		return self::get_default_recommendation_priority( $gateway_id );
	}

	$index = array_search( $gateway_id, $recommendation_priority_map[ $country_code ], true );

	// If the gateway is not in the list, return the last index + 1.
	if ( false === $index ) {
		return count( $recommendation_priority_map[ $country_code ] );
	}

	return $index;
}