File "ApiRequest.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/fluentform/app/Modules/Payments/PaymentMethods/Stripe/API/ApiRequest.php
File size: 6.17 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace FluentForm\App\Modules\Payments\PaymentMethods\Stripe\API;
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly.
}
use FluentForm\Framework\Helpers\ArrayHelper;
if (!defined('ABSPATH')) {
exit;
}
/**
* WC_Stripe_API class.
*
* Communicates with Stripe API.
*/
class ApiRequest
{
/**
* Stripe API Endpoint
*/
private static $ENDPOINT = 'https://api.stripe.com/v1/';
const STRIPE_API_VERSION = '2020-08-27';
/**
* Secret API Key.
* @var string
*/
private static $secret_key = '';
/**
* Set secret API Key.
* @param string $secret_key
*/
public static function set_secret_key($secret_key)
{
self::$secret_key = $secret_key;
}
/**
* Set secret API Key.
* @param string $secret_key
*/
public static function set_end_point($endpont)
{
self::$ENDPOINT = $endpont;
}
/**
* Get secret key.
* @return string
*/
public static function get_secret_key()
{
return self::$secret_key;
}
/**
* Generates the user agent we use to pass to API request so
* Stripe can identify our application.
*
* @since 4.0.0
* @version 4.0.0
*/
public static function get_user_agent()
{
$app_info = array(
'name' => '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']);
}
}