El webservice de PrestaShop: primeros pasos y ejemplos prácticos

Activar el webservice de PrestaShop es el primer paso para poder leer productos, pedidos y cualquier otro recurso de tu tienda mediante peticiones HTTP. A continuación explicamos cómo habilitarlo, generar la clave de acceso, configurar los permisos por recurso y realizar las primeras llamadas GET tanto con curl como con PHP.

Cómo activar el webservice en PrestaShop

Entra en el backoffice de tu tienda, ve a Parámetros avanzados > Webservice y activa la opción «Activar el servicio web». Guarda los cambios. Sin este paso, todas las peticiones serán rechazadas aunque tengas una clave válida.

Generar una clave API

Pulsa el botón «Añadir nueva clave de webservice». Dale un nombre descriptivo (por ejemplo «Integración ERP») y selecciona los permisos que necesites. Es importante no dar permisos de escritura si solo vas a leer datos. Copia la clave generada porque solo se muestra una vez.

Permisos por recurso: qué debes saber

Cada recurso (products, orders, customers, etc.) tiene sus propios permisos: GET, POST, PUT, PATCH y DELETE. Para un uso seguro, activa solo lo que realmente vayas a utilizar. Si solo quieres leer productos y pedidos, marca únicamente GET en esos recursos y deja el resto sin marcar.

Formato de respuesta: XML o JSON

Por defecto PrestaShop devuelve XML. Para obtener JSON añade el parámetro output_format=JSON o envía la cabecera Accept: application/json. Recomendamos JSON porque es más cómodo de manejar en PHP moderno.

Leer productos con curl

curl -X GET \
  'https://tutienda.com/api/products?output_format=JSON' \
  -u 'TU_CLAVE_API:' \
  -H 'Accept: application/json'

La opción -u 'TU_CLAVE_API:' pasa la clave como usuario básico (el campo password se deja vacío). Recuerda sustituir la URL por la de tu tienda.

Leer un producto concreto

curl -X GET \
  'https://tutienda.com/api/products/42?output_format=JSON' \
  -u 'TU_CLAVE_API:'

Leer pedidos con curl

curl -X GET \
  'https://tutienda.com/api/orders?output_format=JSON&date=1&filter[id_order]=[1|10]' \
  -u 'TU_CLAVE_API:' \
  -H 'Accept: application/json'

El filtro anterior devuelve pedidos entre el id 1 y el 10. Puedes combinar múltiples filtros según necesites.

Ejemplo en PHP con cURL

<?php
$apiKey = 'TU_CLAVE_API';
$url = 'https://tutienda.com/api/products?output_format=JSON';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $apiKey . ':');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Accept: application/json']);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    $products = json_decode($response, true);
    print_r($products);
} else {
    echo 'Error: ' . $httpCode . ' - ' . $response;
}
?>

Ejemplo con Guzzle (recomendado)

use GuzzleHttp\Client;

$client = new Client();
$response = $client->get('https://tutienda.com/api/products', [
    'auth' => ['TU_CLAVE_API', ''],
    'query' => ['output_format' => 'JSON'],
    'headers' => ['Accept' => 'application/json']
]);

$products = json_decode($response->getBody(), true);
print_r($products);

Buenas prácticas de seguridad

  • Genera una clave distinta para cada integración o cliente.
  • Otorga solo los permisos mínimos necesarios.
  • Nunca expongas la clave en repositorios públicos ni en código frontend.
  • Usa HTTPS siempre. PrestaShop rechaza peticiones HTTP cuando el webservice está activo.
  • Limita el acceso por IP si tu servidor lo permite (mediante .htaccess o directivas del servidor).
  • Revisa periódicamente las claves activas y revoca las que ya no se usen.

Paginación y límites

La API devuelve 50 registros por defecto. Puedes cambiarlo con los parámetros limit=100 y page=2. Ten en cuenta que valores muy altos pueden sobrecargar el servidor.

Manejo de errores comunes

Si recibes 401, revisa la clave y que el webservice esté activado. Un 403 suele indicar falta de permisos en el recurso concreto. Error 404 significa que el recurso no existe o que la URL está mal escrita.

Con estos pasos ya puedes empezar a leer datos de tu PrestaShop de forma programática. A partir de aquí puedes construir sincronizaciones con ERPs, aplicaciones móviles o cualquier otra integración que necesites.

Scroll al inicio