'Fluent Forms', 'version' => FLUENTFORM_VERSION, 'url' => site_url(), 'partner_id' => 'pp_partner_FN62GfRLM2Kx5d' ); return array( 'lang' => 'php', 'lang_version' => phpversion(), 'publisher' => 'wpmanageninja', 'uname' => function_exists('php_uname') ? php_uname() : PHP_OS, 'application' => $app_info, ); } /** * Generates the headers to pass to API request. * * @since 4.0.0 * @version 4.0.0 */ public static function get_headers() { $user_agent = self::get_user_agent(); $app_info = $user_agent['application']; $headers = [ 'Authorization' => 'Basic ' . base64_encode(self::get_secret_key() . ':'), 'Stripe-Version' => self::STRIPE_API_VERSION, 'User-Agent' => $app_info['name'] . '/' . $app_info['version'] . ' (' . $app_info['url'] . ')', 'X-Stripe-Client-User-Agent' => json_encode($user_agent), ]; $headers = apply_filters_deprecated( 'fluentform_stripe_request_headers', [ $headers ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/stripe_request_headers', 'Use fluentform/stripe_request_headers instead of fluentform_stripe_request_headers.' ); return apply_filters('fluentform/stripe_request_headers', $headers); } /** * Send the request to Stripe's API * * @param array $request * @param string $api * @param string $method * @return object|\WP_Error * @since 3.1.0 * @version 4.0.6 */ public static function request($request, $api = 'charges', $method = 'POST') { $headers = self::get_headers(); if ('charges' === $api && 'POST' === $method) { $customer = !empty($request['customer']) ? $request['customer'] : ''; $source = !empty($request['source']) ? $request['source'] : $customer; $key = ArrayHelper::get($request, 'metadata.fluentform_tid') . '-' . $source . '-' . $api; $key = apply_filters_deprecated( 'fluentform_stripe_idempotency_key', [ $key, $request ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/stripe_idempotency_key', 'Use fluentform/stripe_idempotency_key instead of fluentform_stripe_idempotency_key.' ); $idempotency_key = apply_filters('fluentform/stripe_idempotency_key', $key, $request); $headers['Idempotency-Key'] = $idempotency_key; } $request = apply_filters_deprecated( 'fluentform_stripe_request_body', [ $request, $api ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/stripe_request_body', 'Use fluentform/stripe_request_body instead of fluentform_stripe_request_body.' ); $response = wp_safe_remote_post( self::$ENDPOINT . $api, array( 'method' => $method, 'headers' => $headers, 'body' => apply_filters('fluentform/stripe_request_body', $request, $api), 'timeout' => 50, ) ); if (is_wp_error($response) || empty($response['body'])) { return new \WP_Error('stripe_error', __('There was a problem connecting to the Stripe API endpoint.', 'fluentform')); } $body = json_decode(wp_remote_retrieve_body($response)); // check if it's a stripe error or not $responseCode = wp_remote_retrieve_response_code($response); if($responseCode > 299) { $code = __('general_error', 'fluentform'); if(!empty($body->error->code)) { $code = $body->error->code; } $message = __('Stripe General Error', 'fluentform'); if(!empty($body->error->message)) { $message = $body->error->message; } return new \WP_Error($code, $message, $body); } return $body; } /** * Retrieve API endpoint. * * @param string $api * @return mixed|\WP_Error|null * @since 4.0.0 * @version 4.0.0 */ public static function retrieve($api) { $response = wp_safe_remote_get( self::$ENDPOINT . $api, array( 'method' => 'GET', 'headers' => self::get_headers(), 'timeout' => 70, ) ); if (is_wp_error($response) || empty($response['body'])) { return new \WP_Error('stripe_error', __('There was a problem connecting to the Stripe API endpoint.', 'fluentform')); } return json_decode($response['body']); } }