/**
  * POS Status for each gateway
  *
  * @param  object $gateway
  */
 public function pos_status($gateway)
 {
     $settings = new WC_POS_Admin_Settings_Checkout();
     $data = $settings->get_data('enabled');
     $enabled = is_array($data) ? array_keys($data, true) : array();
     echo '<td class="pos_status">';
     if (in_array($gateway->id, $enabled)) {
         echo '<span class="status-enabled tips" data-tip="' . __('Enabled', 'woocommerce') . '">' . __('Enabled', 'woocommerce') . '</span>';
     } else {
         echo '-';
     }
     echo '</td>';
 }
 /**
  * Show POS enabled gateways
  * note: only available in WC > 2.3
  * @param $gateways
  * @return array
  */
 public function payment_gateways($gateways)
 {
     // get checkout settings data
     $settings = new WC_POS_Admin_Settings_Checkout();
     $enabled_ids = $settings->get_enabled_gateway_ids();
     $loaded_gateways = array();
     foreach ($gateways as $Gateway) {
         $gateway = new $Gateway();
         if (in_array($gateway->id, $enabled_ids)) {
             $gateway->enabled = 'yes';
         }
         $loaded_gateways[] = $gateway;
     }
     return $loaded_gateways;
 }
 /**
  * Process payment
  * @param $order_id
  * @param $data
  */
 public function process_payment($order_id, $data)
 {
     if (!isset($data['payment_details'])) {
         return;
     }
     // some gateways check if a user is signed in, so let's switch to customer
     $logged_in_user = get_current_user_id();
     $customer_id = isset($data['customer_id']) ? $data['customer_id'] : 0;
     wp_set_current_user($customer_id);
     // load the gateways & process payment
     $gateway_id = $data['payment_details']['method_id'];
     add_filter('option_woocommerce_' . $gateway_id . '_settings', array($this, 'force_enable_gateway'));
     $settings = WC_POS_Admin_Settings_Checkout::get_instance();
     $gateways = $settings->load_enabled_gateways();
     $response = $gateways[$gateway_id]->process_payment($order_id);
     if (isset($response['result']) && $response['result'] == 'success') {
         $this->payment_success($gateway_id, $order_id, $response);
     } else {
         $this->payment_failure($gateway_id, $order_id, $response);
     }
     // switch back to logged in user
     wp_set_current_user($logged_in_user);
     // clear any payment gateway messages
     wc_clear_notices();
 }
 /**
  * @return array
  */
 private function gateways_templates()
 {
     $settings = WC_POS_Admin_Settings_Checkout::get_instance();
     $gateways = $settings->load_enabled_gateways();
     $templates = array();
     if ($gateways) {
         foreach ($gateways as $gateway) {
             $this->params->gateways[] = array('method_id' => $gateway->id, 'method_title' => esc_html($gateway->get_title()), 'icon' => $this->sanitize_icon($gateway), 'active' => $gateway->default);
             $templates[$gateway->id] = $this->sanitize_payment_fields($gateway);
         }
     }
     return $templates;
 }
 /**
  * Get ordered, enabled gateways from the checkout settings
  * @return array
  */
 protected function gateways()
 {
     $settings = new WC_POS_Admin_Settings_Checkout();
     return $settings->load_enabled_gateways();
 }
 /**
  * Get ordered, enabled gateways from the checkout settings
  * @return array
  */
 protected function gateways()
 {
     $settings = WC_POS_Admin_Settings_Checkout::get_instance();
     return $settings->load_enabled_gateways();
 }