🔌 WebService API — Introduccion y autenticacion
Actualizado: 2024-12-01
La API REST de PrestaShop permite acceder y modificar todos los recursos de la tienda de forma programatica. Soporta XML (por defecto) y JSON, y usa autenticacion Basic HTTP con una API Key.
#Activar el WebService en el BO
Por defecto, el WebService esta desactivado. Para activarlo: Parametros Avanzados → WebService → Activar el WebService de PrestaShop: Si.
#Crear una clave API
| Campo | Descripcion |
|---|---|
| Clave | 32 caracteres alfanumericos (se genera automaticamente) |
| Descripcion | Nombre descriptivo (ej: 'App movil', 'ERP integrador') |
| Estado | Activar o desactivar la clave sin eliminarla |
| Permisos | Seleccionar GET/POST/PUT/DELETE para cada recurso |
#Autenticacion Basic Auth
Autenticacion con cURL — Basic Auth
bash
# La API Key va como usuario en Basic Auth, password vacio
# Metodo 1: -u flag
curl -u "TU_API_KEY:" "https://mitienda.com/api/products?output_format=JSON"
# Metodo 2: Header Authorization
curl -H "Authorization: Basic $(echo -n 'TU_API_KEY:' | base64)" \
"https://mitienda.com/api/products?output_format=JSON"
# Metodo 3: Query string (menos recomendado, la clave queda en logs)
curl "https://mitienda.com/api/products?ws_key=TU_API_KEY&output_format=JSON"
# Verificar que el WebService esta activo:
curl -u "TU_API_KEY:" "https://mitienda.com/api"
# Respuesta: lista de recursos disponibles
#Primera peticion con cURL y PHP
Cliente PHP basico para la API
php
<?php
class PrestaShopApiClient
{
private string $apiUrl;
private string $apiKey;
public function __construct(string $shopUrl, string $apiKey)
{
$this->apiUrl = rtrim($shopUrl, '/') . '/api';
$this->apiKey = $apiKey;
}
public function get(string $resource, array $params = []): array
{
$params['output_format'] = 'JSON';
$url = $this->apiUrl . '/' . $resource . '?' . http_build_query($params);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => $this->apiKey . ':',
CURLOPT_SSL_VERIFYPEER=> false, // Solo en desarrollo
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
throw new \RuntimeException('API Error ' . $httpCode . ': ' . $response);
}
return json_decode($response, true) ?? [];
}
}
// ── Uso ──
$api = new PrestaShopApiClient('https://mitienda.com', 'TU_API_KEY');
// Obtener productos activos
$data = $api->get('products', [
'filter[active]' => 1,
'display' => '[id,reference,price]',
'limit' => 10,
]);
foreach ($data['products'] as $product) {
echo $product['id'] . ': ' . $product['reference'] . PHP_EOL;
}
#Formatos de respuesta
| Parametro | Valor | Descripcion |
|---|---|---|
| output_format | JSON | Respuesta en formato JSON (recomendado) |
| output_format | XML | Respuesta en formato XML (por defecto) |
| schema | blank | Estructura vacia del recurso (para saber los campos) |
| schema | synopsis | Estructura con tipos y restricciones de cada campo |
| display | full | Todos los campos del recurso |
| display | [f1,f2] | Solo los campos especificados |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.