PATH:
home
/
letacommog
/
laperouse
/
wp-content
/
plugins
/
woocommerce-gateway-stripe
/
includes
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } /** * WC_Stripe_Intent_Controller class. * * Handles in-checkout AJAX calls, related to Payment Intents. */ class WC_Stripe_Intent_Controller { /** * Holds an instance of the gateway class. * * @since 4.2.0 * @var WC_Gateway_Stripe */ protected $gateway; /** * Class constructor, adds the necessary hooks. * * @since 4.2.0 */ public function __construct() { add_action( 'wc_ajax_wc_stripe_verify_intent', array( $this, 'verify_intent' ) ); } /** * Returns an instantiated gateway. * * @since 4.2.0 * @return WC_Gateway_Stripe */ protected function get_gateway() { if ( ! isset( $this->gateway ) ) { if ( class_exists( 'WC_Subscriptions_Order' ) && function_exists( 'wcs_create_renewal_order' ) ) { $class_name = 'WC_Stripe_Subs_Compat'; } else { $class_name = 'WC_Gateway_Stripe'; } $this->gateway = new $class_name(); } return $this->gateway; } /** * Loads the order from the current request. * * @since 4.2.0 * @throws WC_Stripe_Exception An exception if there is no order ID or the order does not exist. * @return WC_Order */ protected function get_order_from_request() { if ( ! isset( $_GET['nonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['nonce'] ), 'wc_stripe_confirm_pi' ) ) { throw new WC_Stripe_Exception( 'missing-nonce', __( 'CSRF verification failed.', 'woocommerce-gateway-stripe' ) ); } // Load the order ID. $order_id = null; if ( isset( $_GET['order'] ) && absint( $_GET['order'] ) ) { $order_id = absint( $_GET['order'] ); } // Retrieve the order. $order = wc_get_order( $order_id ); if ( ! $order ) { throw new WC_Stripe_Exception( 'missing-order', __( 'Missing order ID for payment confirmation', 'woocommerce-gateway-stripe' ) ); } return $order; } /** * Handles successful PaymentIntent authentications. * * @since 4.2.0 */ public function verify_intent() { global $woocommerce; $gateway = $this->get_gateway(); try { $order = $this->get_order_from_request(); } catch ( WC_Stripe_Exception $e ) { /* translators: Error message text */ $message = sprintf( __( 'Payment verification error: %s', 'woocommerce-gateway-stripe' ), $e->getLocalizedMessage() ); wc_add_notice( esc_html( $message ), 'error' ); $redirect_url = $woocommerce->cart->is_empty() ? get_permalink( wc_get_page_id( 'shop' ) ) : wc_get_checkout_url(); $this->handle_error( $e, $redirect_url ); } try { $gateway->verify_intent_after_checkout( $order ); if ( ! isset( $_GET['is_ajax'] ) ) { $redirect_url = isset( $_GET['redirect_to'] ) // wpcs: csrf ok. ? esc_url_raw( wp_unslash( $_GET['redirect_to'] ) ) // wpcs: csrf ok. : $gateway->get_return_url( $order ); wp_safe_redirect( $redirect_url ); } exit; } catch ( WC_Stripe_Exception $e ) { $this->handle_error( $e, $gateway->get_return_url( $order ) ); } } /** * Handles exceptions during intent verification. * * @since 4.2.0 * @param WC_Stripe_Exception $e The exception that was thrown. * @param string $redirect_url An URL to use if a redirect is needed. */ protected function handle_error( $e, $redirect_url ) { // Log the exception before redirecting. $message = sprintf( 'PaymentIntent verification exception: %s', $e->getLocalizedMessage() ); WC_Stripe_Logger::log( $message ); // `is_ajax` is only used for PI error reporting, a response is not expected. if ( isset( $_GET['is_ajax'] ) ) { exit; } wp_safe_redirect( $redirect_url ); exit; } } new WC_Stripe_Intent_Controller();
[+]
..
[-] class-wc-stripe-exception.php
[edit]
[+]
compat
[-] class-wc-stripe-order-handler.php
[edit]
[+]
admin
[-] class-wc-stripe-apple-pay-registration.php
[edit]
[-] class-wc-stripe-webhook-handler.php
[edit]
[-] class-wc-gateway-stripe.php
[edit]
[+]
payment-methods
[+]
deprecated
[-] class-wc-stripe-intent-controller.php
[edit]
[-] class-wc-stripe-api.php
[edit]
[-] class-wc-stripe-payment-tokens.php
[edit]
[+]
abstracts
[-] class-wc-stripe-sepa-payment-token.php
[edit]
[-] class-wc-stripe-customer.php
[edit]
[-] class-wc-stripe-helper.php
[edit]
[-] class-wc-stripe-logger.php
[edit]