Convertir de USD a TRM COP con Currency Switcher

Si administras una tienda en línea en Colombia y tienes tus precios en dólares, probablemente te hayas enfrentado al desafío de querer mostrar los precios de tus productos en pesos colombianos (COP), basándote en la Tasa Representativa del Mercado (TRM) oficial. Muchos servicios de conversión de divisas no ofrecen esta funcionalidad directamente, lo que puede complicar mantener tus precios actualizados con la TRM del día.

Pero no te preocupes, aquí te mostraré una solución práctica y sencilla que puedes implementar en tu sitio web WordPress, ya sea añadiendo un fragmento de código directamente o utilizando un plugin conveniente.

¿Qué Necesitas?

  1. Woocommerce
  2. FOX- WooCommerce Currency Switcher (La versión gratis funciona)
  3. Tener los precios originales en dólares

Para empezar, necesitarás acceso al functions.php de tu tema WordPress o, si prefieres una solución que no implique editar archivos de tema directamente, puedes utilizar un plugin como Code Snippets. Este plugin te permite añadir fragmentos de código (snippets) a tu sitio de manera segura y organizada, sin la necesidad de tocar los archivos de tu tema.

// Agrega el agregador personalizado 'TRM COP' a FOX Woocommerce Currency Switcher
add_action('woocs_announce_aggregator', function($aggregators) {
    $aggregators['trmcop'] = 'TRM COP'; // Asigna un nombre legible para el agregador
    return $aggregators; // Devuelve el array modificado de agregadores
}, 10, 1);

// Procesa la conversión de moneda utilizando el agregador 'TRM COP'
add_action('woocs_add_aggregator_processor', function($aggregator_key, $currency_name) {
    if ($aggregator_key !== 'trmcop') {
        return 0; // Si el agregador no es 'trmcop', no procesa nada
    }

    // Configura la zona horaria para asegurarse de que las fechas se manejen correctamente
    date_default_timezone_set('America/Bogota');

    // Inicializa cURL para hacer una solicitud a la API de TRM
    $curl = curl_init();
    $params = array(
        '$limit' => 3, // Limita la respuesta a los 3 registros más recientes
        '$$app_token' => '3zsNPsC1o0s3Kgz5MgKrHZF16', // Token de acceso para la API (este valor debe ser secreto y gestionado adecuadamente)
        '$order' => '`vigenciadesde` DESC' // Ordena los resultados por fecha de forma descendente
    );
    curl_setopt($curl, CURLOPT_URL, "https://www.datos.gov.co/resource/ceyp-9c7c.json?" . http_build_query($params));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

    $output = curl_exec($curl); // Ejecuta la solicitud
    $output = json_decode($output); // Decodifica la respuesta JSON
    curl_close($curl); // Cierra la sesión cURL

    $now = new DateTime('NOW'); // Obtiene la fecha y hora actuales

    // Busca el valor de TRM para la fecha actual
    $valortrmweekend = $output[0]->valor; // Asume que el primer registro es el valor más reciente
    $selected = null;
    foreach ($output as $item) {
        $item_date = new DateTime($item->vigenciadesde);
        if ($item_date->format('Y-m-d') == $now->format('Y-m-d')) {
            $selected = $item; // Encuentra el valor de TRM para la fecha actual
            break;
        }
    }

    // Determina el valor de TRM a utilizar
    $request = !empty($selected) ? $selected->valor : $valortrmweekend;

    return $request; // Devuelve el valor de TRM encontrado
}, 10, 2);

Ojo, si no te funciona el código Token: ‘3zsNPsC1o0s3Kgz5MgKrHZF16’ debes crear uno nuevo en https://www.datos.gov.co/login crear una cuenta y acceder al portal de desarrollador https://www.datos.gov.co/es/profile/edit/developer_settings

Déjame tu comentario y te enseñaré a configurar correctamente FOX – WooCommerce Currency Switcher

Compartir esta información