Xellers API

Documentación técnica para integración con la API Xellers.

Postman

Integracion web

A continuacion encontrara un ejemplo para implementar esta api con php, usando variables de entorno para proteger datos.

Variables de entorno

Para configurar nuestras variables es necesario instalar la libreria dot_env, lo hacemos desde composer: aca encuentras documentacion tecnica de esta libreria: https://github.com/vlucas/phpdotenv

URL_API_XELLERS = "https://app.xellers.ai/api-rest"
ID_EMPRESA_XELLERS = "id"
USER_XELLERS = "user"
PASS_XELLERS = "clavexellers"
            

Flujo de Integración

Cliente
↓
POST /token.php
↓
Bearer Token
↓
GET /relacionados.php
↓
Actualizar BD

Token

Ejemplo de funcion para obtener token

function obtenerTokenXellers(){
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => $_ENV['URL_API_XELLERS'].'/token.php',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => '',
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => 'POST',
      CURLOPT_POSTFIELDS =>'{
        "username": "'.$_ENV['USER_XELLERS'].'",
        "password": "'.$_ENV['PASS_XELLERS'].'",
        "id_empresa": "'.$_ENV['ID_EMPRESA_XELLERS'].'"  
    }',
      CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json'
      ),
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    
    $respuesta = json_decode($response, true);

    $codigo  = $respuesta["codigo"];
    $mensaje = $respuesta["mensaje"];
    $token   = $respuesta["token"];

    
    return json_encode(array('mensaje' => $mensaje, 'token' => $token, 'codigo' => $codigo));
}

Lectura relacionados

Ejemplo de lectura con php

    $tokenXellers = json_decode(obtenerTokenXellers(), true);
    $token = $tokenXellers['token'];
    $codigo = $tokenXellers['codigo'];
    $mensaje = $tokenXellers['mensaje'];

    if($codigo != 200){
        echo json_encode(array('mensaje' => $mensaje, 'token' => $token, 'codigo' => $codigo));
        die();
    }
    
    
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => $_ENV['URL_API_XELLERS'].'/relacionados.php',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => '',
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => 'GET',
      CURLOPT_POSTFIELDS =>'{
                "username": "'.$_ENV['USER_XELLERS'].'",
                "id_empresa": "'.$_ENV['ID_EMPRESA_XELLERS'].'"  
            }',
      CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json',
        'Authorization: Bearer '.$token
      ),
    ));

    $response = curl_exec($curl);
    curl_close($curl);

    $data = json_decode($response, true);
    if($data["mensaje"]){
        $mensaje = $data["mensaje"]; 
        $codigo = $data["codigo"];
        echo json_encode(array('mensaje' => $data["mensaje"], 'codigo' => $data["codigo"]));
        die();
    }

    $total = count($data);
    $porcentaje = 0;
    $recorridos = 0;
    echo "0% - 100%\n";
    echo "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| \n";

    foreach ($data as $producto) {

        $recorridos += 1;

        $ID_producto_base = $producto["id_producto"];

        $ID_producto_rec = $producto["id_producto"];
        $sku_recomendado = $producto["sku_producto"];
        $skus_recomendados = $producto["relacionados"];

        //actualizamos los relacionados en la bd, pueden usar el metodo que mas les acomode
        //para el ejemplo guardamos en el campo relacionados de la tabla productos
        update_bd("productos","relacionados = '$skus_recomendados'","id = $ID_producto_base");

        //progress bar
        $por = ($recorridos * 100) / $total;
        if($porcentaje < round($por)){
            $porcentaje = round($por);
            echo "|";
        } 
        //progress bar

    }
echo "Proceso terminado.";