Automattic\WooCommerce\Internal\Admin\Settings\PaymentProviders

WooPayments::get_onboarding_url()publicWC 1.0

Get the onboarding URL for the payment gateway.

This URL should start or continue the onboarding process.

Метод класса: WooPayments{}

Хуков нет.

Возвращает

Строку. The onboarding URL for the payment gateway.

Использование

$WooPayments = new WooPayments();
$WooPayments->get_onboarding_url( $payment_gateway, $return_url ): string;
$payment_gateway(WC_Payment_Gateway) (обязательный)
The payment gateway object.
$return_url(строка)
The URL to return to after onboarding. This will likely get attached to the onboarding URL.
По умолчанию: ''

Код WooPayments::get_onboarding_url() WC 9.6.1

public function get_onboarding_url( WC_Payment_Gateway $payment_gateway, string $return_url = '' ): string {
	if ( class_exists( '\WC_Payments_Account' ) && is_callable( '\WC_Payments_Account::get_connect_url' ) ) {
		$connect_url = \WC_Payments_Account::get_connect_url();
	} else {
		$connect_url = parent::get_onboarding_url( $payment_gateway, $return_url );
	}

	$query = wp_parse_url( $connect_url, PHP_URL_QUERY );
	// We expect the URL to have a query string. Bail if it doesn't.
	if ( empty( $query ) ) {
		return $connect_url;
	}

	// Default URL params to set, regardless if they exist.
	$params = array(
		'from'                      => defined( '\WC_Payments_Onboarding_Service::FROM_WCADMIN_PAYMENTS_SETTINGS' ) ? \WC_Payments_Onboarding_Service::FROM_WCADMIN_PAYMENTS_SETTINGS : 'WCADMIN_PAYMENT_SETTINGS',
		'source'                    => defined( '\WC_Payments_Onboarding_Service::SOURCE_WCADMIN_SETTINGS_PAGE' ) ? \WC_Payments_Onboarding_Service::SOURCE_WCADMIN_SETTINGS_PAGE : 'wcadmin-settings-page',
		'redirect_to_settings_page' => 'true',
	);

	// First, sanity check to handle existing accounts.
	// Such accounts should keep their current onboarding mode.
	// Do not force things either way.
	if ( $this->is_account_connected( $payment_gateway ) ) {
		return add_query_arg( $params, $connect_url );
	}

	// We don't have an account yet, so the onboarding link is to kickstart the process.

	// Apply our routing logic to determine if we should do a live onboarding/account.
	$live_onboarding = false;

	$onboarding_profile = get_option( OnboardingProfile::DATA_OPTION, array() );

	/*
	 * For answers provided in the onboarding profile, we will only consider live onboarding if:
	 * Merchant selected “I’m already selling” and answered either:
	 * - Yes, I’m selling online.
	 * - I’m selling both online and offline.
	 *
	 * For existing stores, we will only consider live onboarding if all are true:
	 * - Store is at least 90 days old.
	 * - Store has an active payments gateway (other than WooPayments).
	 * - Store has processed a live electronic payment in the past 90 days (any gateway).
	 *
	 * @see plugins/woocommerce/client/admin/client/core-profiler/pages/UserProfile.tsx for the values.
	 */
	if (
		isset( $onboarding_profile['business_choice'] ) && 'im_already_selling' === $onboarding_profile['business_choice'] &&
		isset( $onboarding_profile['selling_online_answer'] ) && (
			'yes_im_selling_online' === $onboarding_profile['selling_online_answer'] ||
			'im_selling_both_online_and_offline' === $onboarding_profile['selling_online_answer']
		)
	) {
		$live_onboarding = true;
	} elseif ( WCAdminHelper::is_wc_admin_active_for( 90 * DAY_IN_SECONDS ) &&
		$this->has_enabled_other_ecommerce_gateways() &&
		$this->has_orders() ) {

		$live_onboarding = true;
	}

	// If we are doing live onboarding, we don't need to add more to the URL.
	// But for test-drive/sandbox mode, we have work to do.
	if ( ! $live_onboarding ) {
		$params['test_drive']                       = 'true';
		$params['auto_start_test_drive_onboarding'] = 'true';
	}

	return add_query_arg( $params, $connect_url );
}