function cva_crear_tabla_credenciales() { global $wpdb; $tabla = $wpdb->prefix . 'cva_credenciales'; $charset = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $tabla ( id INT(11) NOT NULL AUTO_INCREMENT, usuario TEXT NOT NULL, password TEXT NOT NULL, PRIMARY KEY (id) ) $charset;"; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta($sql); } function cva_guardar_credenciales($usuario, $password) { global $wpdb; $tabla = $wpdb->prefix . 'cva_credenciales'; // No uses base64 en producción real para contraseñas $usuario_encriptado = base64_encode($usuario); $password_encriptado = base64_encode($password); $wpdb->query("DELETE FROM $tabla"); // Mantener solo una fila $wpdb->insert($tabla, [ 'usuario' => $usuario_encriptado, 'password' => $password_encriptado ]); } function cva_obtener_credenciales() { global $wpdb; $tabla = $wpdb->prefix . 'cva_credenciales'; $fila = $wpdb->get_row("SELECT * FROM $tabla LIMIT 1", ARRAY_A); if ($fila) { return [ 'usuario' => base64_decode($fila['usuario']), 'password' => base64_decode($fila['password']), ]; } return false; } function cva_obtener_token_api() { $credenciales = cva_obtener_credenciales(); if (!$credenciales) return false; $url_login = 'https://apicvaservices.grupocva.com/api/v2/user/login'; $datos = json_encode([ 'user' => $credenciales['usuario'], 'password' => $credenciales['password'] ]); $ch = curl_init($url_login); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $datos); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ]); $respuesta = curl_exec($ch); if (curl_errno($ch)) { error_log('Error cURL: ' . curl_error($ch)); curl_close($ch); return false; } $codigo = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($codigo === 200) { $data = json_decode($respuesta, true); if (isset($data['token'])) { return $data['token']; } else { error_log('Token no encontrado en la respuesta: ' . print_r($data, true)); } } else { error_log("Código HTTP inesperado al obtener token: $codigo"); } return false; } https://whitecube.com.mx/page-sitemap.xml 2025-06-28T00:00:27+00:00 https://whitecube.com.mx/elementor-hf-sitemap.xml 2025-06-24T18:54:30+00:00