intf( '%s (%s %s)', ! empty( $args['settings']['name'] ) ? $args['settings']['name'] : $args['form_title'], $args['amount'], $period['desc'] ); $plan_args = [ 'amount' => $args['amount'], 'interval' => $period['interval'], 'interval_count' => $period['count'], 'product' => [ 'name' => sanitize_text_field( $name ), ], 'nickname' => sanitize_text_field( $name ), 'currency' => strtolower( wpforms_get_currency() ), 'id' => $id, 'metadata' => [ 'form_name' => sanitize_text_field( $args['form_title'] ), 'form_id' => $args['form_id'], ], ]; try { $plan = Plan::create( $plan_args, Helpers::get_auth_opts() ); } catch ( \Exception $e ) { $plan = null; } return $plan; } /** * Get Stripe plan ID. * Check if a plan exists in Stripe, if not creates one. * * @since 1.8.2 * * @param array $args Arguments needed for getting a valid plan ID. * * @return string */ protected function get_plan_id( $args ) { $period_data = $this->get_subscription_period_data(); $period = array_key_exists( $args['settings']['period'], $period_data ) ? $period_data[ $args['settings']['period'] ] : $period_data['yearly']; if ( ! empty( $args['settings']['name'] ) ) { $slug = preg_replace( '/[^a-z0-9\-]/', '', strtolower( str_replace( ' ', '-', $args['settings']['name'] ) ) ); } else { $slug = 'form' . $args['form_id']; } $plan_id = sprintf( '%s_%s_%s', $slug, $args['amount'], $period['name'] ); try { $plan = Plan::retrieve( $plan_id, Helpers::get_auth_opts() ); } catch ( \Exception $e ) { $plan = $this->create_plan( $plan_id, $period, $args ); } return isset( $plan->id ) ? $plan->id : ''; } }