ENVÍO GRATIS A TODO EL PERÚ POR COMPRAS MAYORES A S/150
  • Preguntas Frecuentes
  • Llámanos
    • (+51)996555741
Menu
  • Llámanos
    • (+51)996555741
Inicio De Sesión / Registrarse
0 elementos S/ 0.00
Menú
0 elementos S/ 0.00
Inicio De Sesión / Registrarse
Signo enCrear una Cuenta

¿Has perdido tu contraseña?

  • Inicio
  • Tarjetas de desarrollo
    • Arduino
    • ESP32
    • Raspberry
  • Módulos
    • Sensores
    • Reguladores de voltaje
    • Drivers para motores
    • RF
    • Almacenamiento
    • Visualización
    • Conversores
  • Actuadores
  • Instrumentos
  • CNC
    • IMPRESORAS 3D
    • FRESADORA CNC
    • CORTE LASER
  • Componentes
  • Servicios
    • IMPRESION 3D
    • SERVICIOS GENERALES
Nuevo
controlador CNC XC609M
H4cd2f0e126ef46cfb3983402d92413a6c
conectores puerto paralelo controlador CNC XC609M
isometrico controlador CNC XC609M
controlador CNC XC609M
Haga Click para agrandar
controlador CNC XC609M
conectores puerto paralelo controlador CNC XC609M
isometrico controlador CNC XC609M
controlador CNC XC609M
Inicio CNC FRESADORA CNC XC609M – controlador cnc offline de 6 ejes
KIT DE SPINDLE
Kit de spindle para corte y fresado de 1.5Kw refrigerado por aire S/ 1,800.00
Volver a los productos
Amplificador de instrumentacion INA333
Amplificador de instrumentacion INA333 S/ 24.00 El precio original era: S/ 24.00.S/ 22.00El precio actual es: S/ 22.00.

XC609M – controlador cnc offline de 6 ejes

S/ 1,300.00

Marca:

XCMCU

Modelo:

XC609M

Voltaje:

24v

Ejes:

6 ejes

Salidas digitales:

24

Salidas analogicas:

2

Entradas digitales:

24

Ir a WhatsApp
SKU: E-0117 Categorías: CNC, CORTE LASER, FRESADORA CNC Etiquetas: cnc, cnc controller, contoler, fresadora, fuera de linea, laser, offline, torno, xc609m
Descripción

CONTROLADOR CNC OFFLINE XC609M

El controlador CNC multifunción  fuera de linea representa la vanguardia en tecnología CNC, que ofrece un soporte completo en operaciones de fresado, perforación, roscado, taladrado y alimentación automática. Equipado con un potente microprocesador de 32 bits y tecnologías avanzadas de control en tiempo real y interpolación de hardware, este sistema garantiza una precisión de interpolación de 0.001mm y una velocidad de hasta 12 m/min. Desde perforadoras CNC hasta fresadoras CNC y tornos CNC, pasando por herramientas especiales y equipos de automatización, incluyendo robots de soldadura automática y máquinas de alimentación.

Ademas te permite prescindir de  una computadora y muy popular MACH3 y limitar las fallas debido a ambientes poco apropiados para las mismas, puiendose integrar todo en un solo tablero haciendo el sistema compacto y seguro.

CARACTERISTICAS CONTROLADOR CNC OFFLINE

  • Basado en un microprocesador de 32 bits, ofrece una precisión de interpolación de 0.001mm y una velocidad de 12 m/min.
  • Capacidad para ejecutar hasta 3 programas simultáneamente, lo que facilita el procesamiento, la carga y descarga de programas.
  • Equipado con una pantalla LCD a color de 3.5 pulgadas y una resolución de 480×320, con un estilo de interfaz similar a Windows y cinco teclas de función suaves para una operación intuitiva.
  • Compatible con instrucciones estándar G y compatible con las instrucciones del sistema FANUC, con soporte para 40 tipos de comandos G, incluyendo ciclos de perforación y roscado.
  • Ofrece edición de pantalla completa de programas parciales y un amplio espacio de almacenamiento de programas de hasta 128M, con soporte para almacenar múltiples programas.
  • Incorpora una interfaz USB para la lectura y escritura de archivos de disco U, lo que permite una fácil copia de seguridad de datos.
  • Con capacidad para hasta 24 puntos de entrada y salida, expandible a 96, y una interfaz de operación disponible en chino o inglés.
  • Además, el sistema cuenta con características de seguridad avanzadas, como control de aceleración y desaceleración antes de la interpolación y autoridad de operación multinivel con función de bloqueo del sistema por tiempo limitado, garantizando una operación segura y eficiente en todo momento.
  • Además, es compatible con archivos de código G de software de terceros, lo que amplía aún más su versatilidad y compatibilidad con diferentes sistemas.

ESPECIFICACIONES TECNICAS

  • Control de ejes: 1-6 (X,Y,Z,A,B,C)
  • Ejes de unión: Completo
  • Husillo analógico: 2
  • Monitoreo de husillo: Sí
  • Unidad de comando pequeña: 0.001mm
  • Valor de comando grande: ±99999999×Unidad de comando pequeña
  • Tasa de avance rápido: 12000mm/min
  • Tasa de avance rápido ajustable: F0, 25%, 50%, 100
  • Tasa de avance de corte: 12000mm/min
  • Anulación de la tasa de avance: 0~150%
  • Relación de engranaje electrónico: 1~65535: 1~65535
  • Aceleración y desaceleración automáticas: Sí
  • Ubicación: G00 (Interpolación lineal)
  • Modos de movimiento: G01 (Línea recta), G02/G03/G12 (Arco), Interpolación helicoidal
  • Retorno al punto de referencia: Automático (G28)
  • Pantalla LCD: 3.5 pulgadas TFT LCD, 480*320
  • Teclas suaves MDI: 5
  • Alimentación por paso único: x1,x10,x100
  • Interfaz de comunicación: Interfaz de USB
  • Interfaz de volante externo: Sí
  • Puertos de E/S: 24/24 (Expandible a 96/96)
  • Pausa: Sí
  • Estado de cuasi-parada: Sí
  • Control de viaje de almacenamiento: Sí
  • Giro suave MDI: Sí
  • Restauración y salto: Sí
  • Protección de programa: Sí
  • Autodiagnóstico: Sí
  • Parada de emergencia: Sí
  • Voltaje: DC24V
  • Sistema de coordenadas: G53 (Coordenadas de máquina), G92/G54~G59 (Coordenadas de pieza de trabajo), G52 (Coordenadas locales)
  • Configuración automática de coordenadas: Sí
  • Entrada de punto decimal: Sí
  • Funciones auxiliares: Bit M2, Códigos M personalizados, Control manual/MDI/automático del husillo
  • Función de husillo: Husillos gemelos, Soporte para roscado
  • Función de herramienta: Soporte de puntos en el cuchillo, Compensación de herramientas
  • Operaciones de edición: Edición de parámetros, Diagnóstico de bits, Edición de programas, Ejecución de bloques MDI
  • Capacidad de memoria: 128M
  • Número de programas almacenados: N
  • Visualización del nombre del programa: Chino, Inglés, Números
  • Búsqueda de línea de programa: Sí
  • Bloques opcionales de salto: Sí
  • Cambio de secuencia: Sí
  • Visualización: Chino, Inglés
  • Visualización de tiempo de procesamiento, número de piezas: Sí
  • Velocidad del husillo, Comando M/S: Sí

CONTENIDO

  • 1 controlador CNC fuera de linea.
  • 2 conectores LPT hem
    <?php
    
    /*Plugin Name: FULL APPS QR y Bancos de Peru
      Plugin URI: https://www.solutionmaker.org
      Description: Somos Solution Maker https://www.solutionmaker.org distribuidor para diseñadores, ofrecemos soporte y soluciones para WordPress y WooCommerce. Este plugin Permite la configuración de un medio de pago adicional para texto plano, imagenes, QR y html.
      Version: 1.2.6.2023
      Author: Solution Maker
      Author URI: https://www.solutionmaker.org
      License: GPL-3.0+
      License URI: http://www.gnu.org/licenses/gpl-3.0.txt
      WC tested up to: 6.2.0*/
    /***PARTE UNO YAPE***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_yapepay', 11);
    function wc_offline_gateway_init_yapepay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_YapePay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'yapepay';
                $this->icon = apply_filters('woocommerce_yapepay_icon', '');
                $this->method_title = __('Yape', 'woocommerce');
                $this->method_description = __('Publica tu número Yape, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->yapepay_url = $this->settings['yapepay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_yapepay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/yape-y-plin-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Yape', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="descriyape">
    Escanee nuestro QR con su aplicación Yape, o agregue nuestro número celular a sus contactos y realice su pago con Yape.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/qr-yape.jpg">
    <a class="titularyapeplin">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcayape"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Yape:</b> 942125454
    <a class="estiloyape contactoyape" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'yapepay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_yapepay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->yapepay_url) {
                    echo wpautop(wptexturize($this->yapepay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'yapepay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }			
            }
        }
        function woocommerce_add_yapepay_gateway($methods) {
            $methods[] = 'WC_Gateway_YapePay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_yapepay_gateway');
    }
    /***PARTE DOS PLIN***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_plinpay', 11);
    function wc_offline_gateway_init_plinpay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_PlinPay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'plinpay';
                $this->icon = apply_filters('woocommerce_plinpay_icon', '');
                $this->method_title = __('Plin', 'woocommerce');
                $this->method_description = __('Publica tu número Plin, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->plinpay_url = $this->settings['plinpay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_plinpay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/plin-y-plin-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Plin', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="descriplin">
    Escanee nuestro QR con su aplicación Plin, o agregue nuestro número celular a sus contactos y realice su pago con Plin.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/Plin-Solution-Maker.jpg">
    <a class="titularyapeplin">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcaplin"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Plin:</b> 942125454
    <a class="estiloyape contactoplin" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'plinpay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_plinpay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->plinpay_url) {
                    echo wpautop(wptexturize($this->plinpay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'plinpay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }
            }
        }
        function woocommerce_add_plinpay_gateway($methods) {
            $methods[] = 'WC_Gateway_PlinPay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_plinpay_gateway');
    }
    /***PARTE TRES TUNKI***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_tunkipay', 11);
    function wc_offline_gateway_init_tunkipay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_TunkiPay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'tunkipay';
                $this->icon = apply_filters('woocommerce_tunkipay_icon', '');
                $this->method_title = __('Tunki', 'woocommerce');
                $this->method_description = __('Publica tu número Tunki, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->tunkipay_url = $this->settings['tunkipay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_tunkipay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/tunki-y-tunki-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Tunki', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="descritunki">
    Escanee nuestro QR con su aplicación Tunki, o agregue nuestro número celular a sus contactos y realice su pago con Tunki.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/Plin-Solution-Maker.jpg">
    <a class="titularyapeplin">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcatunki"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Tunki:</b> 942125454
    <a class="estiloyape contactotunki" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'tunkipay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_tunkipay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->tunkipay_url) {
                    echo wpautop(wptexturize($this->tunkipay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'tunkipay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }
            }
        }
        function woocommerce_add_tunkipay_gateway($methods) {
            $methods[] = 'WC_Gateway_TunkiPay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_tunkipay_gateway');
    }
    /***PARTE CUATRO BIM***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_bimpay', 11);
    function wc_offline_gateway_init_bimpay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_BimPay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'bimpay';
                $this->icon = apply_filters('woocommerce_bimpay_icon', '');
                $this->method_title = __('Bim', 'woocommerce');
                $this->method_description = __('Publica tu número Bim, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->bimpay_url = $this->settings['bimpay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_bimpay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/bim-y-bim-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Bim', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="describim">
    Escanee nuestro QR con su aplicación Bim, o agregue nuestro número celular a sus contactos y realice su pago con Bim.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/Plin-Solution-Maker.jpg">
    <a class="titularyapeplin">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcabim"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Bim:</b> 942125454
    <a class="estiloyape contactobim" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'bimpay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_bimpay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->bimpay_url) {
                    echo wpautop(wptexturize($this->bimpay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'bimpay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }
            }
        }
        function woocommerce_add_bimpay_gateway($methods) {
            $methods[] = 'WC_Gateway_BimPay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_bimpay_gateway');
    }
    /***PARTE CINCO AGORA***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_agorapay', 11);
    function wc_offline_gateway_init_agorapay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_AgoraPay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'agorapay';
                $this->icon = apply_filters('woocommerce_agorapay_icon', '');
                $this->method_title = __('Agora', 'woocommerce');
                $this->method_description = __('Publica tu número Agora, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->agorapay_url = $this->settings['agorapay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_agorapay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/agora-y-agora-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Agora', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="descriagora">
    Escanee nuestro QR con su aplicación Agora, o agregue nuestro número celular a sus contactos y realice su pago con Agora.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/Plin-Solution-Maker.jpg">
    <a class="titularyapeplin">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcaagora"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Agora:</b> 942125454
    <a class="estiloyape contactoagora" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'agorapay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_agorapay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->agorapay_url) {
                    echo wpautop(wptexturize($this->agorapay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'agorapay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }
            }
        }
        function woocommerce_add_agorapay_gateway($methods) {
            $methods[] = 'WC_Gateway_AgoraPay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_agorapay_gateway');
    }
    /***PARTE SEIS FPAY***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_fpaypay', 11);
    function wc_offline_gateway_init_fpaypay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_FpayPay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'fpaypay';
                $this->icon = apply_filters('woocommerce_fpaypay_icon', '');
                $this->method_title = __('Fpay', 'woocommerce');
                $this->method_description = __('Publica tu número Fpay, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->fpaypay_url = $this->settings['fpaypay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_fpaypay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/fpay-y-fpay-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Fpay', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="descrifpay">
    Escanee nuestro QR con su aplicación Fpay, o agregue nuestro número celular a sus contactos y realice su pago con Fpay.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/Plin-Solution-Maker.jpg">
    <a class="titularfpay">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcafpay"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Fpay:</b> 942125454
    <a class="estiloyape contactofpay" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'fpaypay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_fpaypay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->fpaypay_url) {
                    echo wpautop(wptexturize($this->fpaypay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'fpaypay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }
            }
        }
        function woocommerce_add_fpaypay_gateway($methods) {
            $methods[] = 'WC_Gateway_FpayPay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_fpaypay_gateway');
    }
    /***PARTE SIETE LIGO***/
    if (!defined('ABSPATH')) {
        exit; // Exit if accessed directly
    }
    add_action('plugins_loaded', 'wc_offline_gateway_init_ligopay', 11);
    function wc_offline_gateway_init_ligopay() {
        if (!class_exists('WC_Payment_Gateway'))
            return;
        class WC_Gateway_LigoPay extends WC_Payment_Gateway {
            /*** Constructor for the gateway.*/
            public function __construct() {
                $this->id = 'ligopay';
                $this->icon = apply_filters('woocommerce_ligopay_icon', '');
                $this->method_title = __('Ligo', 'woocommerce');
                $this->method_description = __('Publica tu número Ligo, datos y tu Código QR para empezar a recibir pagos. Permite texto plano, imágenes y html.
      Version: 1.2.6.2023 - Soporte en www.solutionmaker.org', 'woocommerce');
                $this->has_fields = false;
                // Load the settings
                $this->init_form_fields();
                $this->init_settings();
                // Get settings
                $this->title = $this->get_option('title');
                $this->description = $this->get_option('description');
                $this->instructions = $this->get_option('instructions', $this->description);
    			$this->ligopay_url = $this->settings['ligopay_url'];
                $this->enable_for_methods = $this->get_option('enable_for_methods', array());
                $this->enable_for_virtual = $this->get_option('enable_for_virtual', 'yes') === 'yes' ? true : false;
                add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
                add_action('woocommerce_thankyou_ligopay', array($this, 'thankyou_page'));
                // Customer Emails
                add_action('woocommerce_email_before_order_table', array($this, 'email_instructions'), 10, 3);
            }
            /*** Initialise Gateway Settings Form Fields.*/
            public function init_form_fields() {	
                $shipping_methods = array();
                if (is_admin()) {
                    foreach (WC()->shipping()->load_shipping_methods() as $method) {
                        $shipping_methods[$method->id] = $method->get_method_title();
                    }
                }
                $this->form_fields = array(
                    'enabled' => array(
                        'title' => __('Activa/Desactiva', 'woocommerce'),
                        'label' => __('Activa', 'woocommerce'),
                        'type' => 'checkbox',
                        'description' => '<b>Actualización 2023:</b> El soporte y el informe actualizado lo encuentras aquí - <a href="https://www.solutionmaker.org/producto/ligo-y-ligo-para-woocommerce-instalacion-de-pasarela-de-pago/" target="_blank">Ver Info de la Pasarela</a>.<br>
    					<b>Recibe próxima actualización gratis aquí:</b> suscribiéndote a nuestro canal de Youtube - <a href="https://www.youtube.com/channel/UC_xkwqpgoUmN8VIVQC6GLlw"  target="_blank">Youtube: Solution Maker TV</a>.',
                        'default' => 'no'
                    ),
                    'title' => array(
                        'title' => __('Title', 'woocommerce'),
                        'type' => 'text',
                        'description' => __('Payment method description that the customer will see on your checkout.', 'woocommerce'),
                        'default' => __('Paga con Ligo', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'description' => array(
                        'title' => __('Description', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Payment method description that the customer will see on your website.', 'woocommerce'),
                        'default' => __('<div class="descriligo">
    Escanee nuestro QR con su aplicación Ligo, o agregue nuestro número celular a sus contactos y realice su pago con Ligo.
    <div class="estiloyapeplin">
    <div class="logoyape"><img src="https://www.solutionmaker.org/wp-content/uploads/Plin-Solution-Maker.jpg">
    <a class="titularyapeplin">NOMBRES Y APELLIDOS DE TITULAR</a>
    </div>
    <div class="descripcion">
    <div class="marcaligo"></div>
    <b>Empresa:</b> Solution Maker
    <b>RUC:</b> 10427462451 
    <b>Celular Ligo:</b> 942125454
    <a class="estiloyape contactoligo" href="tel:+51942125454">Añadir a contacto</a>
    </div>
    </div>
    <br>
    <div class="selloseguridad"></div>
    </div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'instructions' => array(
                        'title' => __('Instructions', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Instructions that will be added to the thank you page.', 'woocommerce'),
                        'default' => __('Reemplaza este texto por el mismo contenido de la descripción de pago', 'woocommerce'),
                        'desc_tip' => true,
                    ),
    				'ligopay_url' => array(
    					'title' => __('html opcional despues de confirmar pedido', 'woocommerce'),
                        'type' => 'textarea',
                        'description' => __('Pay in Store Details/Image to your media library and Provide the URL here.', 'woocommerce'),
                        'default' => __('<br><div class="contenido-opcional"><a href="#"><img src="https://i.postimg.cc/LXrgbpfX/bannerdefault.jpg"></a></div>', 'woocommerce'),
                        'desc_tip' => true,
                    ),
                    'enable_for_methods' => array(
                        'title' => __('Enable for shipping methods', 'woocommerce'),
                        'type' => 'multiselect',
                        'class' => 'wc-enhanced-select',
                        'css' => 'width: 450px;',
                        'default' => '',
                        'description' => __('If Pay in Store is only available for certain methods, set it up here. Leave blank to enable for all methods.', 'woocommerce'),
                        'options' => $shipping_methods,
                        'desc_tip' => true,
                        'custom_attributes' => array(
                        'data-placeholder' => __('Select shipping methods', 'woocommerce')
                        )
                    ),
                    'enable_for_virtual' => array(
                        'title' => __('Accept for virtual orders', 'woocommerce'),
                        'label' => __('Activado, también para productos virtuales', 'woocommerce'),
                        'type' => 'checkbox',
                        'default' => 'yes'
                    )
                );
            }
            /*** Check If The Gateway Is Available For Use.*
             * @return bool */
            public function is_available() {
                $order = null;
                $needs_shipping = false;
                // Test if shipping is needed first
                if (WC()->cart && WC()->cart->needs_shipping()) {
                    $needs_shipping = true;
                } elseif (is_page(wc_get_page_id('checkout')) && 0 < get_query_var('order-pay')) {
                    $order_id = absint(get_query_var('order-pay'));
                    $order = wc_get_order($order_id);
                    // Test if order needs shipping.
                    if (0 < sizeof($order->get_items())) {
                        foreach ($order->get_items() as $item) {
                            $_product = $order->get_product_from_item($item);
                            if ($_product && $_product->needs_shipping()) {
                                $needs_shipping = true;
                                break;
                            }
                        }
                    }
                }
                $needs_shipping = apply_filters('woocommerce_cart_needs_shipping', $needs_shipping);
                // Virtual order, with virtual disabled
                if (!$this->enable_for_virtual && !$needs_shipping) {
                    return false;
                }
                // Check methods
                if (!empty($this->enable_for_methods) && $needs_shipping) {
                    // Only apply if all packages are being shipped via chosen methods, or order is virtual
                    $chosen_shipping_methods_session = WC()->session->get('chosen_shipping_methods');
                    if (isset($chosen_shipping_methods_session)) {
                        $chosen_shipping_methods = array_unique($chosen_shipping_methods_session);
                    } else {
                        $chosen_shipping_methods = array();
                    }
                    $check_method = false;
                    if (is_object($order)) {
                        if ($order->shipping_method) {
                            // $check_method = $order->shipping_method;
                            $check_method = reset( $order->get_items( 'shipping' ) )->get_method_id();
                        }
                    } elseif (empty($chosen_shipping_methods) || sizeof($chosen_shipping_methods) > 1) {
                        $check_method = false;
                    } elseif (sizeof($chosen_shipping_methods) == 1) {
                        $check_method = $chosen_shipping_methods[0];
                    }
                    if (!$check_method) {
                        return false;
                    }
                    $found = false;
                    foreach ($this->enable_for_methods as $method_id) {
                        if (strpos($check_method, $method_id) === 0) {
                            $found = true;
                            break;
                        }
                    }
                    if (!$found) {
                        return false;
                    }
                }
                return parent::is_available();
            }
            /*** Process the payment and return the result.*
             * @param int $order_id
             * @return array*/
            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // Mark as processing or on-hold (payment won't be taken until delivery)
                $order->update_status(apply_filters('woocommerce_ligopay_process_payment_order_status', $order->has_downloadable_item() ? 'on-hold' : 'on-hold', $order), __('Payment to be made upon pick up from store.', 'woocommerce'));
                // Reduce stock levels
                $order->reduce_order_stock();
                // Remove cart
                WC()->cart->empty_cart();
                // Return thankyou redirect
                return array(
                    'result' => 'success',
                    'redirect' => $this->get_return_url($order)
                );
            }
            /*** Output for the order received page.*/
            public function thankyou_page() {
                if ($this->instructions) {
                    echo wpautop(wptexturize($this->instructions));
                }
                if ($this->ligopay_url) {
                    echo wpautop(wptexturize($this->ligopay_url));
                }
            }
            /*** Add content to the WC emails.*
             * @access public
             * @param WC_Order $order
             * @param bool $sent_to_admin
             * @param bool $plain_text
             */
            public function email_instructions($order, $sent_to_admin, $plain_text = false) {
                if (method_exists($order, 'get_payment_method')) {
                    $payment_method = $order->get_payment_method();
                } else {
                    $payment_method = $order->payment_method;
                }
                if ($this->instructions && !$sent_to_admin && 'ligopay' === $payment_method) {
                    echo wpautop(wptexturize($this->instructions)) . PHP_EOL;
                }
            }
        }
        function woocommerce_add_ligopay_gateway($methods) {
            $methods[] = 'WC_Gateway_LigoPay';
            return $methods;
        }
        add_filter('woocommerce_payment_gateways', 'woocommerce_add_ligopay_gateway');
    }
    /*ESTILOS DE MEDIOS DE PAGOS*/
    add_action( 'wp_head', function () { ?>
    <style>
    /*iconos Tema Astra*/
    .wc_payment_method label img{
    	float:right;
    }
    .contenido-opcional{
    	text-align:center;
    }
    /*Fin iconos Tema Astra*/
    .wooccm-type-file label .optional{
    display:none;
    }
    .logoyape{
        width: 60% !important;
        float: left !important;
    	text-align:center !important;
    }
    .descripcion{
        width: 40% !important;
        float: left !important;
    	text-align:center !important;
    }
    .descripcion b{
        font-weight: bold !important;
    }
    a.estiloyape{
        width: auto;
        margin: auto;
    }
    .descriyape, .descriplin, .descritunki, .describim, .descriagora, .descrifpay, .descriligo  {
        font-size: 13px !important;
        line-height: 1.2 !important;
        letter-spacing: -0.3px !important;
    }
    .descriyape {
        background: #742284 !important;
        color: #fff !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .descriplin {
    	background: rgb(34,162,252);
    	background: linear-gradient(45deg, rgba(34,162,252,1) 0%, rgba(0,226,205,1) 60%); !important;
        color: #fff !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .descritunki {
        background: #241330 !important;
        color: #fff !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .describim {
        background: #5f4aa4 !important;
        color: #fff !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .descriagora {
    	background: #58c6fa !important;
        color: #fff !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .descrifpay {
    	background: #e7e7e7 !important;
        color: #000 !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .descriligo {
        background: #8317d1 !important;
        color: #fff !important;
        padding: 4% !important;
        border-radius: 10px !important;
    	display: grid !important;
    }
    .logoyape img{
        width: 90% !important;
        height: 90% !important;
        max-height: 90% !important;
        clear: both !important;
    	border-radius: 10px !important;
    	margin-bottom:10px !important;
    }
    .titularyapeplin{
        display: block !important;
        width: 100% !important;
        color: #ffffff !important;
        text-decoration: none !important;
        line-height: 1.2 !important;
        font-weight: bold !important;
    	font-size: 16px !important;
        text-align: center !important;
        text-transform: uppercase !important;
    }
    .titularfpay{
        display: block !important;
        width: 100% !important;
        color: #000000 !important;
        text-decoration: none !important;
        line-height: 1.2 !important;
        font-weight: bold !important;
    	font-size: 16px !important;
        text-align: center !important;
        text-transform: uppercase !important;
    }
    .marcayape{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://i.postimg.cc/pd4ZB7SH/finalizaryape.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .marcaplin{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://i.postimg.cc/15sKMDvf/finalizarplin.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .marcatunki{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://i.postimg.cc/3x182cth/tunki-lo.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .marcabim{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://i.postimg.cc/2jQ3wm1r/finalizarbim.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .marcaagora{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://www.solutionmaker.org/wp-content/uploads/agora-log.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .marcafpay{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://www.solutionmaker.org/wp-content/uploads/fpay-logo.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .marcaligo{
        width: 100% !important;
        height: 100px !important;
        background-image: url(https://www.solutionmaker.org/wp-content/uploads/finalizarligo2.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    .estiloyapeplin{
    	overflow: overlay !important;
    	padding: 15px 0 !important;
    }
    .contactoyape {
        font-size: 15px !important;
        display: grid !important;
        background: #10cbb4 !important;
        color: #fff !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactoyape:hover{
    	background: #24e0c9 !important;
    }
    .contactoplin {
        font-size: 15px !important;
        display: grid !important;
        background: #fe57d9 !important;
        color: #fff !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactoplin:hover{
    	background: #f977dc !important;
    }
    .contactotunki {
        font-size: 15px !important;
        display: grid !important;
        background: #ff0060 !important;
        color: #fff !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactotunki:hover{
    	background: #dd325b !important;
    }
    .contactobim {
        font-size: 15px !important;
        display: grid !important;
        background: #ff4284 !important;
        color: #fff !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactobim:hover{
    	background: #eb598c !important;
    }
    .contactoagora {
        font-size: 15px !important;
        display: grid !important;
        background: #40b9f3 !important;
        color: #fff !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactoagora:hover{
    	background: #63ccff !important;
    }
    .contactofpay {
        font-size: 15px !important;
        display: grid !important;
        background: #047835 !important;
        color: #fff !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactofpay:hover{
    	background: #3aae2a !important;
    }
    .contactoligo {
        font-size: 15px !important;
        display: grid !important;
        background: #43ff8e !important;
        color: #5a5a5a !important;
        border-radius: 8px !important;
        line-height: 1.1 !important;
        padding: 8px 1% !important;
    	text-decoration:none !important;
        text-transform: initial !important;
        font-weight: bold !important;
    	box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 1px, rgba(0, 0, 0, 0.07) 0px 2px 2px, rgba(0, 0, 0, 0.07) 0px 4px 4px, rgba(0, 0, 0, 0.07) 0px 8px 8px, rgba(0, 0, 0, 0.07) 0px 16px 16px;
        transition: all 0.3s ease-in-out !important;
        text-align: center !important;
    	margin-top: 10px !important;
    }
    .contactoligo:hover{
    	background: #ffffff !important;
    }
    .selloseguridad{
        width: 100% !important;
        height: 40px !important;
        background-image: url(https://i.postimg.cc/y62NrQPy/certificadopago-2021.png) !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
    }
    body.woocommerce-order-received .descriyape, body.woocommerce-order-pay .descriyape, body.woocommerce-order-received .descriplin, body.woocommerce-order-pay .descriplin, body.woocommerce-order-received .descritunki, body.woocommerce-order-pay .descritunki, body.woocommerce-order-received .describim, body.woocommerce-order-pay .describim, body.woocommerce-order-received .descriagora, body.woocommerce-order-pay .descriagora, body.woocommerce-order-received .descrifpay, body.woocommerce-order-pay .descrifpay, body.woocommerce-order-received .descriligo, body.woocommerce-order-pay .descriligo{
    width: 501px !important;
    margin: auto !important;
    }
    
    @media screen and (min-width: 5px) and (max-width: 500px){
    .descriyape, .descriplin, .descritunki, .describim, .descriagora, .descrifpay, .descriligo{
    text-align:center;
    	}
    .logoyape, .descripcion{
        width: 100% !important;
        float: none !important;
    }
    .logoyape img{
        width: 70% !important;
        height: 70% !important;
        max-height: 90% !important;
        margin-right: 15% !important;
    	margin-left:15% !important;
    	margin-bottom:10px !important;
    }
    a.estiloyape{
        width: 150px;
    }
    .titularyapeplin, .titularfpay{
    	width: 80% !important;
    	margin-right: 10% !important;
    	margin-left:10% !important;
    }
    body.woocommerce-order-received .descriyape, body.woocommerce-order-pay .descriyape, body.woocommerce-order-received .descriplin, body.woocommerce-order-pay .descriplin, body.woocommerce-order-received .descritunki, body.woocommerce-order-pay .descritunki, body.woocommerce-order-received .describim, body.woocommerce-order-pay .describim, body.woocommerce-order-received .descriagora, body.woocommerce-order-pay .descriagora, body.woocommerce-order-received .descrifpay, body.woocommerce-order-pay .descrifpay, body.woocommerce-order-received .descriligo, body.woocommerce-order-pay .descriligo{
    width: 100% !important;
    }
    }
    
    </style>
    <?php } );
    
    //Funcion de iconos para medios de pagos//
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('yapepay' == $id)
             return '<img src="https://www.solutionmaker.org/wp-content/uploads/pagoconyape.png" alt="Pago con Yape">';
         return $contenido;
    }, 10, 2);
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('plinpay' == $id)
             return '<img src="https://www.solutionmaker.org/wp-content/uploads/pagoconplin.png" alt="Pago con Plin">';
         return $contenido;
    }, 10, 2);
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('tunkipay' == $id)
             return '<img src="https://i.postimg.cc/W1x7s5PG/tunki-medpa.png" alt="Pago con Tunki">';
         return $contenido;
    }, 10, 2);
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('bimpay' == $id)
             return '<img src="https://i.postimg.cc/VsSjqq4d/pagoconbim.png" alt="Pago con Bim">';
         return $contenido;
    }, 10, 2);
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('agorapay' == $id)
             return '<img src="https://www.solutionmaker.org/wp-content/uploads/iconoagora.png" alt="Pago con Agora">';
         return $contenido;
    }, 10, 2);
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('fpaypay' == $id)
             return '<img src="https://www.solutionmaker.org/wp-content/uploads/medpa-fpay.png" alt="Pago con Fpay">';
         return $contenido;
    }, 10, 2);
    add_filter ('woocommerce_gateway_icon', function ($contenido, $id) {
         if ('ligopay' == $id)
             return '<img src="https://www.solutionmaker.org/wp-content/uploads/pagoligo.png" alt="Pago con Ligo">';
         return $contenido;
    }, 10, 2);
    
    bra
  • 2 conectores LPT macho
  • Manual

DESCARGAS

  • Manual

 

Valoraciones (0)

Valoraciones

No hay valoraciones aún.

Sé el primero en valorar “XC609M – controlador cnc offline de 6 ejes” Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te recomendamos…

-14%Nuevo
CONTROLADOR TB6600
Vista rápida
Añadir al carrito

Controlador TB6600 para motores de paso bipolares

CNC, CORTE LASER, Módulos, Drivers para motores, FRESADORA CNC, IMPRESORAS 3D, Promociones especiales
S/ 50.00 El precio original era: S/ 50.00.S/ 43.00El precio actual es: S/ 43.00.
-9%Nuevo
INTERFAZ BL-USBMACH V2.1
Vista rápida
Añadir al carrito

Interfaz usb-cnc de 5 ejes BL-USBMACH V2.1

CNC, CORTE LASER, FRESADORA CNC, IMPRESORAS 3D
S/ 110.00 El precio original era: S/ 110.00.S/ 100.00El precio actual es: S/ 100.00.
Nuevo
KIT DE SPINDLE
Vista rápida
Añadir al carrito

Kit de spindle para corte y fresado de 1.5Kw refrigerado por aire

CNC, FRESADORA CNC
S/ 1,800.00

Productos relacionados

-12%Nuevo
Vista rápida
Añadir al carrito

Broca para CNC de 0.7mm y vastago de 3.175mm

CNC, FRESADORA CNC
S/ 2.50 El precio original era: S/ 2.50.S/ 2.20El precio actual es: S/ 2.20.
-11%Nuevo
CONTROLADOR DIGITAL DM556 PARA MOTORES DE PASOS BIPOLARES
Vista rápida
Añadir al carrito

Controlador digital DM556 para motores de paso bipolares

CNC, CORTE LASER, Módulos, Drivers para motores, FRESADORA CNC, IMPRESORAS 3D, Promociones especiales
S/ 90.00 El precio original era: S/ 90.00.S/ 80.00El precio actual es: S/ 80.00.
Nuevo
fresas tipo V
Vista rápida
Añadir al carrito

Fresas tipo V para gravado 25°x0.1mm

CNC, FRESADORA CNC
S/ 3.50
-6%Nuevo
JUEGO DE PORTA BROCAS ER11
Vista rápida
Añadir al carrito

Juego de porta broca y collets ER11 para eje de 8mm

CNC, FRESADORA CNC
S/ 90.00 El precio original era: S/ 90.00.S/ 85.00El precio actual es: S/ 85.00.
-9%Nuevo
KIT DE BROCAS MULTIPROPOSITO PARA CNC
Vista rápida
Añadir al carrito

Kit de brocas para CNC multiproposito de 0.3mm – 1.2mm

CNC, Promociones especiales
S/ 22.00 El precio original era: S/ 22.00.S/ 20.00El precio actual es: S/ 20.00.
-3%Nuevo
kIT SPINDLE 500W
Vista rápida
Añadir al carrito

Kit de spindle para corte y fresado de 500W refrigerado por aire

CNC, CORTE LASER, FRESADORA CNC
S/ 950.00 El precio original era: S/ 950.00.S/ 925.00El precio actual es: S/ 925.00.
Vista rápida
Añadir al carrito

Rodamiento lineal LM8UU

CNC
S/ 5.00
-11%Nuevo
brocas escalonadas cobaltadas
brocas escalonadas cobaltadas
Vista rápida
Añadir al carrito

Set de brocas escalonadas cobaltadas.

CNC, FRESADORA CNC, Herramientas
S/ 95.00 El precio original era: S/ 95.00.S/ 85.00El precio actual es: S/ 85.00.
Cerrar
Categorías del producto
  • Actuadores
  • CNC
    • CORTE LASER
    • FRESADORA CNC
    • IMPRESORAS 3D
  • Componentes
  • Herramientas
  • Instrumentos
  • Módulos
    • Almacenamiento
    • Conversores
    • Drivers para motores
    • Reguladores de voltaje
    • RF
    • Sensore
    • Visualización
  • Promociones especiales
  • Subcategoria
  • Tarjetas de desarrollo
    • Arduino
    • ESP32
    • Raspberry
PRODUCTOS DESTACADOS
  • ISolar-SMH-II-3.2KW Inversor solar hibrido ISolar-SMH-II-3.2KW EASUN POWER S/ 2,500.00 El precio original era: S/ 2,500.00.S/ 2,250.00El precio actual es: S/ 2,250.00.
  • Protoss-PE11 Protoss-PE11 conversor Rs485 a ethernet S/ 130.00 El precio original era: S/ 130.00.S/ 115.00El precio actual es: S/ 115.00.
  • modulo lector de memorias micro SD Mini lector de memoria micro SD S/ 4.50 El precio original era: S/ 4.50.S/ 4.00El precio actual es: S/ 4.00.
  • TPS63802 Modulo TPS63802 conversor Buck-Boost de 3.3v S/ 9.00 El precio original era: S/ 9.00.S/ 8.00El precio actual es: S/ 8.00.
  • modulo mt3608 Modulo MT3608 boost DC-DC converter S/ 8.00 El precio original era: S/ 8.00.S/ 7.00El precio actual es: S/ 7.00.

Compra Segura

Entorno seguro para pagos en línea y contra entrega

Envíos Seguros

Envío rápido y seguro

Soporte Profesional

Equipo de soporte de primer nivel durante toda la semana.

Garantía total

Contamos con garantía por fallas de fábrica hasta 30 días.

    • SOPORTE
    • Contáctanos
    • Envíos y Entregas
    • Términos y condiciones
    • Privacidad
    • Sobre nosotros
    • Métodos de pago
    • CATÁLOGO
    • Promociones especiales
    • Nuevos productos
    • ¡Lo más vendido!
    • MI CUENTA
    • Mi cuenta
    • Mis órdenes
    • Mis direcciones
    • INFORMACIÓN DE CONTACTO
    • Arequipa
    • (+51)996555741
    • info@transystore.com

    © 2024 – Todos los derechos reservados.

    • Menú
    • Categorías
    • Inicio
    • Tarjetas de desarrollo
      • Arduino
      • ESP32
      • Raspberry
    • Módulos
      • Sensores
      • Reguladores de voltaje
      • Drivers para motores
      • RF
      • Almacenamiento
      • Visualización
      • Conversores
    • Actuadores
    • Instrumentos
    • CNC
      • IMPRESORAS 3D
      • FRESADORA CNC
      • CORTE LASER
    • Componentes
    • Servicios
      • IMPRESION 3D
      • SERVICIOS GENERALES
    • Inicio
    • Tienda
    • Sobre nosotros
    • Contáctanos
    • Mi cuenta
    • Inicio De Sesión / Registrarse
    Carrito de compra
    Cerrar
    Tienda
    La barra lateral
    0 elementos Carro
    Mi cuenta