🔌 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

CampoDescripcion
Clave32 caracteres alfanumericos (se genera automaticamente)
DescripcionNombre descriptivo (ej: 'App movil', 'ERP integrador')
EstadoActivar o desactivar la clave sin eliminarla
PermisosSeleccionar 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

ParametroValorDescripcion
output_formatJSONRespuesta en formato JSON (recomendado)
output_formatXMLRespuesta en formato XML (por defecto)
schemablankEstructura vacia del recurso (para saber los campos)
schemasynopsisEstructura con tipos y restricciones de cada campo
displayfullTodos 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.