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.";