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