Skip to content

Instantly share code, notes, and snippets.

@jesussuarz
Created December 26, 2023 06:46
Show Gist options
  • Save jesussuarz/92404dab90a2de99b21ffa04d78336f0 to your computer and use it in GitHub Desktop.
Save jesussuarz/92404dab90a2de99b21ffa04d78336f0 to your computer and use it in GitHub Desktop.

hook para actualizar moneda COP automáticamente.

Para resumir el siguiente hook actualiza la moneda COP de WHMCS automáticamente, moneda la trae desde: currencyconverterapi.com

Primero debes generar un key free para la api que lo puedes hacer desde: https://free.currencyconverterapi.com/free-api-key

Luego, Cree un archivo llamado update_cop.php en la carpeta /includes/hooks/

Cambia los valores de la variable $apiKey en el código siguiente:

<?php
if (!defined("WHMCS"))
die("This file cannot be accessed directly");
/*
* -------------------------------------------------------------
* File:        update_cop.php
* Description: Update Currency COP - Colombia.
* Autor: Jesus Suarez - ForosHosting.com
* -------------------------------------------------------------
*
*/
use Illuminate\Database\Capsule\Manager as Capsule;
add_hook('DailyCronJob', 1, function($vars) {
    // Configure su moneda personalizada aquí
    $currency   = 'COP';
    // Configure el porcentaje a sumar
    $porcentaje = 0;
    // Complete con su clave de currencyconverterapi.com
    $apiKey     = '8b022e174eeb5e241108';
    // Version Gratis
    $free       = true;
    // Nada para editar después de esto
    // Obtenga la moneda principal utilizada por WHMCS
    $mainCurrency = Capsule::table('tblcurrencies')
                            ->where('default', '=', 1)
                            ->first()
                            ->code;
    $prefix = Capsule::table('tblcurrencies')
                            ->where('code', '=', $mainCurrency)
                            ->first()
                            ->prefix;
    // Crear query USD_COP
    $query =  "{$mainCurrency}_{$currency}";
    // Llamada desde currencyconverterapi.com
    $json = file_get_contents("https://" . ($free ? "free" : "api") . ".currconv.com/api/v7/convert?q={$query}&compact=ultra&apiKey={$apiKey}");
    $obj = json_decode($json, true);
    $floatval = floatval($obj["$query"]);
    $rate = $floatval * (($porcentaje / 100 ) + 1);
    if (empty($rate) or $rate == '' or $rate == 0){
        logActivity("Existe un error, no se pudo actualizar la moneda ($currency). Es posible que el valor sea NULL o vacío desde DolarToday.com", 0);
     }
     else {
             Capsule::table('tblcurrencies')
                     ->where('code', '=', $currency)
                     ->update(['rate' => $rate]);
             logActivity("La moneda se actualizo correctamente $prefix$rate $currency", 0);
     }
});
?>

El hook automáticamente va a cambiar el valor de la moneda COP en tu WHMCS.

Además si desea agregar un porcentaje sobre el valor de la moneda obtenida, puede cambiar el valor de la variable: $porcentaje = 0; Por cualquier valor entero para establecer un porcentaje adicional al valor, por ejemplo 10,20,30 etc. solo valores enteros.

Posteriormente si tienes activada las opciones de actualización de moneda y productos en "Ajustes > Ajustes de actualización" para actualizar productos. Entonces automáticamente actualizara tus productos.

El código puede obtener cualquier moneda que desee llamar desde currencyconverterapi.com, verificar que sirva para la moneda que desea correctamente, simplemente cambie el valor de la variable $currency por el código de la moneda a obtener.

Espero que les ayude.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment