Connect_Account::connect_account()
Summary
No summary available.Return
(void)
Source
File: src/BigCommerce/Merchant/Connect_Account.php
public function connect_account() { $tries = 0; $max_tries = 5; $secret_key = wp_generate_password( 32, true, true ); update_option( Onboarding_Api::AUTH_KEY, $secret_key, false ); do { $tries ++; $store_id = $this->generate_guid(); update_option( Onboarding_Api::STORE_ID, $store_id ); $request = new Connect_Account_Request( $secret_key, home_url( '/' ) ); $response = $this->onboarding->connect_account( $store_id, $request ); // If we get a 409 (conflict), try a few more times until we've generated a unique key. // Collision is extremely unlikely, given how the key is generated, but possible enough. $response_code = (int) wp_remote_retrieve_response_code( $response ); } while ( $response_code === 409 && $tries < $max_tries ); try { if ( is_wp_error( $response ) ) { add_settings_error( self::CONNECT_ACTION, $response->get_error_code(), $response->get_error_message() ); throw new \RuntimeException(); } if ( $response_code < 200 || $response_code >= 400 ) { add_settings_error( self::CONNECT_ACTION, $response_code, __( 'We encountered an unexpected error creating your account. Please try again.', 'bigcommerce' ) ); throw new \RuntimeException(); } /** * Filters onboarding success redirect. * * @param string $success_redirect URL. */ $redirect_url = apply_filters( 'bigcommerce/onboarding/success_redirect', admin_url() ); } catch ( \RuntimeException $e ) { delete_option( Onboarding_Api::STORE_ID ); set_transient( 'settings_errors', get_settings_errors(), 30 ); /** * Filters onboarding error redirect. * * @param string $success_redirect URL. */ $redirect_url = apply_filters( 'bigcommerce/onboarding/error_redirect', admin_url() ); } wp_safe_redirect( esc_url_raw( $redirect_url ), 303 ); exit(); }