/**
  * Return handler for Hosted Payments.
  */
 public function return_handler()
 {
     if (!isset($_REQUEST['cardToken'])) {
         parent::return_handler();
     }
     @ob_clean();
     header('HTTP/1.1 200 OK');
     $redirect_url = wc_get_page_permalink('cart');
     if (isset($_REQUEST['reference']) && isset($_REQUEST['amount'])) {
         $cart_token = $_REQUEST['cardToken'];
         $amount = absint($_REQUEST['amount']);
         $order_id = absint($_REQUEST['reference']);
         $order = wc_get_order($order_id);
         $order_total = absint($order->order_total * 100);
         if ($amount === $order_total) {
             if ($this->order_contains_subscription($order->id)) {
                 $response = $this->process_subscription($order, $cart_token);
             } elseif ($this->order_contains_pre_order($order->id)) {
                 $response = $this->process_pre_order($order, $cart_token);
             } else {
                 $response = parent::process_standard_payments($order, $cart_token);
             }
             if ('success' == $response['result']) {
                 $redirect_url = $response['redirect'];
             } else {
                 $order->update_status('failed', __('Payment was declined by Simplify Commerce.', 'woocommerce'));
             }
             wp_redirect($redirect_url);
             exit;
         }
     }
     wp_redirect($redirect_url);
     exit;
 }
 /**
  * Process the payment
  *
  * @param  int $order_id
  * @return array
  */
 public function process_payment($order_id)
 {
     // Processing subscription
     if (class_exists('WC_Subscriptions_Order') && WC_Subscriptions_Order::order_contains_subscription($order_id)) {
         return $this->process_subscription($order_id);
         // Processing pre-order
     } elseif (class_exists('WC_Pre_Orders_Order') && WC_Pre_Orders_Order::order_contains_pre_order($order_id)) {
         return $this->process_pre_order($order_id);
         // Processing regular product
     } else {
         return parent::process_payment($order_id);
     }
 }