/** * 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); } }