is allowed. * * @since 1.8.2 * * @return bool */ public static function is_allowed_license_type() { return in_array( wpforms_get_license_type(), [ 'pro', 'elite', 'agency', 'ultimate' ], true ); } /** * Determine whether a license is ok. * * @since 1.8.2 * * @return bool */ public static function is_license_ok() { return self::is_license_active() && self::is_allowed_license_type(); } /** * Determine whether the addon is activated. * * @since 1.8.2 * * @return bool */ public static function is_addon_active() { return wpforms_is_addon_initialized( 'stripe' ); } /** * Determine whether the addon is activated and appropriate license is set. * * @since 1.8.2 * * @return bool */ public static function is_pro() { return self::is_addon_active() && self::is_allowed_license_type(); } /** * Get authorization options used for every Stripe transaction as recommended in Stripe official docs. * * @link https://stripe.com/docs/connect/authentication#api-keys * * @since 1.8.2 * * @return array */ public static function get_auth_opts() { return [ 'api_key' => self::get_stripe_key( 'secret' ) ]; } /** * Determine whether the Payment element mode is enabled. * * @since 1.8.2 * * @return bool */ public static function is_payment_element_enabled() { return wpforms_setting( 'stripe-card-mode' ) === 'payment'; } /** * Determine whether the application fee is supported. * * @since 1.8.2 * * @return bool */ public static function is_application_fee_supported() { return ! in_array( self::get_account_country(), [ 'br', 'in', 'mx' ], true ); } /** * Get Stripe webhook endpoint data. * * @since 1.8.4 * * @return array */ public static function get_webhook_endpoint_data() { return [ 'namespace' => 'wpforms', 'route' => 'stripe/webhooks', 'fallback' => 'wpforms_stripe_webhooks', ]; } /** * Get webhook URL for REST API. * * @since 1.8.4 * * @return string */ public static function get_webhook_url_for_rest() { $path = implode( '/', [ self::get_webhook_endpoint_data()['namespace'], self::get_webhook_endpoint_data()['route'], ] ); return rest_url( $path ); } /** * Get webhook URL for cURL fallback. * * @since 1.8.4 * * @return string */ public static function get_webhook_url_for_curl() { return add_query_arg( self::get_webhook_endpoint_data()['fallback'], '1', site_url() ); } /** * Determine if webhook ID and secret is set in WPForms settings. * * @since 1.8.4 * * @return bool */ public static function is_webhook_configured() { $mode = self::get_stripe_mode(); return wpforms_setting( 'stripe-webhooks-id-' . $mode ) && wpforms_setting( 'stripe-webhooks-secret-' . $mode ); } /** * Determine if webhooks are enabled in WPForms settings. * * @since 1.8.4 * * @return bool */ public static function is_webhook_enabled() { return wpforms_setting( 'stripe-webhooks-enabled' ); } /** * Determine if REST API is set in WPForms settings. * * @since 1.8.4 * * @return bool */ public static function is_rest_api_set() { return wpforms_setting( 'stripe-webhooks-communication', 'rest' ) === 'rest'; } /** * Get decimals amount. * * @since 1.8.4 * * @param string $currency Currency. * * @return int */ public static function get_decimals_amount( $currency = '' ) { if ( ! $currency ) { $currency = wpforms_get_currency(); } return (int) str_pad( 1, wpforms_get_currency_decimals( strtolower( $currency ) ) + 1, 0, STR_PAD_RIGHT ); } /** * Get Stripe webhook endpoint URL. * * If the constant WPFORMS_STRIPE_WHURL is defined, it will be used as the webhook URL. * * @since 1.8.4 * * @return string */ public static function get_webhook_url() { if ( defined( 'WPFORMS_STRIPE_WHURL' ) ) { return WPFORMS_STRIPE_WHURL; } if ( self::is_rest_api_set() ) { return self::get_webhook_url_for_rest(); } return self::get_webhook_url_for_curl(); } /** * Is Stripe payment enabled for the form. * * @since 1.8.4 * * @param array $form_data Form data. * * @return bool */ public static function is_payments_enabled( $form_data ) { return self::is_modern_settings_enabled( $form_data ) || ! empty( $form_data['payments']['stripe']['enable'] ); } /** * Is Stripe modern payment enabled for the form. * * @since 1.8.4 * * @param array $form_data Form data. * * @return bool */ public static function is_modern_settings_enabled( $form_data ) { return ! empty( $form_data['payments']['stripe']['enable_one_time'] ) || ! empty( $form_data['payments']['stripe']['enable_recurring'] ); } /** * Detect if form supports multiple subscription plans. * * @since 1.8.4 * * @param array $form_data Form data. * * @return bool */ public static function is_form_supports_multiple_recurring_plans( $form_data ) { return ! isset( $form_data['payments']['stripe'] ) || empty( $form_data['payments']['stripe']['recurring']['enable'] ); } /** * Determine if legacy payment settings should be displayed. * * @since 1.8.4 * * @param array $form_data Form data. * * @return bool */ public static function is_legacy_payment_settings( $form_data ) { $has_legacy_settings = ! self::is_form_supports_multiple_recurring_plans( $form_data ); // Return early if form has legacy payment settings. if ( $has_legacy_settings ) { return true; } $addon_compat = ( new StripeAddonCompatibility() )->init(); // Return early if Stripe Pro addon doesn't support modern settings (multiple plans). if ( $addon_compat && ! $addon_compat->is_supported_modern_settings() ) { return true; } return false; } /** * Determine whether the Link is supported. * * @link https://docs.stripe.com/payments/payment-methods/integration-options#payment-method-availability * * @since 1.8.8 * * @return bool */ public static function is_link_supported(): bool { return ! in_array( self::get_account_country(), [ 'br', 'in', 'id', 'th' ], true ); } /** * Get account country. * * @since 1.8.8 * * @return string */ private static function get_account_country(): string { $mode = self::get_stripe_mode(); return get_option( "wpforms_stripe_{$mode}_account_country", '' ); } }
Fatal error: Uncaught Error: Class "WPForms\Integrations\Stripe\Helpers" not found in /htdocs/wp-content/plugins/wpforms-lite/src/Integrations/Stripe/StripeAddonCompatibility.php:39 Stack trace: #0 /htdocs/wp-content/plugins/wpforms-lite/src/Integrations/Stripe/Stripe.php(24): WPForms\Integrations\Stripe\StripeAddonCompatibility->init() #1 /htdocs/wp-content/plugins/wpforms-lite/src/Integrations/Loader.php(78): WPForms\Integrations\Stripe\Stripe->allow_load() #2 /htdocs/wp-content/plugins/wpforms-lite/src/Integrations/Loader.php(64): WPForms\Integrations\Loader->load_integration(Object(WPForms\Integrations\Stripe\Stripe)) #3 /htdocs/wp-content/plugins/wpforms-lite/src/Integrations/Loader.php(22): WPForms\Integrations\Loader->__construct() #4 /htdocs/wp-includes/class-wp-hook.php(324): WPForms\Integrations\Loader::get_instance('') #5 /htdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(Object(WPForms\Providers\Providers), Array) #6 /htdocs/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #7 /htdocs/wp-content/plugins/wpforms-lite/src/WPForms.php(305): do_action('wpforms_loaded') #8 /htdocs/wp-includes/class-wp-hook.php(324): WPForms\WPForms->objects('') #9 /htdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #10 /htdocs/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #11 /htdocs/wp-settings.php(559): do_action('plugins_loaded') #12 /htdocs/wp-config.php(108): require_once('/htdocs/wp-sett...') #13 /htdocs/wp-load.php(50): require_once('/htdocs/wp-conf...') #14 /htdocs/wp-blog-header.php(13): require_once('/htdocs/wp-load...') #15 /htdocs/index.php(17): require('/htdocs/wp-blog...') #16 {main} thrown in /htdocs/wp-content/plugins/wpforms-lite/src/Integrations/Stripe/StripeAddonCompatibility.php on line 39