Utiliser l’API PrestaShop

PrestaShop propose l’utilisation de son API pour réaliser diverses actions sur votre site eCommerce. Mais comment faire pour utiliser l’API de PrestaShop ?

Créer votre clef API PrestaShop

Il faut pour cela aller sur l’admin de votre site Prestashop.
Puis colonne de gauche, cliquer sur :

Paramètres avancés
Webservice

Activer le service web (mettre à OUI)
Il faut que la réécriture d’URL soit activée sur le serveur
+ que les 5 méthodes GET, POST, PUT, DELETE et HEAD soient aussi activées sur le serveur.

En haut de page cliquer sur : Ajouter une clé de service web

Générer une key aléatoire via le bouton « Generate » de droite.
Ajouter une description, pour vous repérer dans l’utilisation futur de cette clef.
Laisser le statut sur « Oui », pour que ce dernier soit fonctionnel.
Choisir les ressources et droits que vous désirer utiliser.
Ex : Adresses avec un CRUD.

Source : Doc PrestaShop.

Utiliser votre clef API Prestashop

Vous pouvez dans un 1er temps vérifier que votre config fonctionne correctement.
Pour cela lancer l’URL suivante dans votre navigateur (A faire sur votre version de développement, éviter en production).

http://url_de_votre_site.fr/api/?ws_key=votre_clef_ici&output_format=JSON

Remplacer juste les points suivants :

  • url_de_votresite.fr par l’URL de votre site (ex : localhost)
  • votre_clef_ici correspond à la key API généré dans l’interface de PrestaShop

Exécuter cette URL dans votre navigateur, et vous devriez obtenir quelques-choses dans l’esprit :

[
"addresses",
"carriers",
"cart_rules",
"carts",
"categories",
"combinations",
"configurations",
"contacts",
"content_management_system",
"countries",
"currencies",
"customer_messages",
"customer_threads",
"customers",
"customizations",
"deliveries",
"employees",
"groups",
"guests",
"image_types",
"images",
"languages",
"manufacturers",
"messages",
"order_carriers",
"order_details",
"order_histories",
"order_invoices",
"order_payments",
"order_slip",
"order_states",
"orders",
"price_ranges",
"product_customization_fields",
"product_feature_values",
"product_features",
"product_option_values",
"product_options",
"product_suppliers",
"products",
"search",
"shop_groups",
"shop_urls",
"shops",
"specific_price_rules",
"specific_prices",
"states",
"stock_availables",
"stock_movement_reasons",
"stock_movements",
"stocks",
"stores",
"suppliers",
"supply_order_details",
"supply_order_histories",
"supply_order_receipt_histories",
"supply_order_states",
"supply_orders",
"tags",
"tax_rule_groups",
"tax_rules",
"taxes",
"translated_configurations",
"warehouse_product_locations",
"warehouses",
"weight_ranges",
"zones"
]

Récupérer la liste des clients via l’API PrestaShop :

http://url_de_votre_site.fr/api/customers?ws_key=votre_clef_ici&output_format=JSON

Récupérer le détail d’un client via l’API PrestaShop :

http://url_de_votre_site.fr/api/customers/id_du_client?ws_key=votre_clef_ici&output_format=JSON

Essayer de remplacer id_du_client par 1, pour obtenir le 1er client sur PrestaShop (si cette id existe toujours en base de donnée).

Ce qui donnera quelques-choses dans l’esprit :

{
customer: {
id: 2,
id_default_group: "3",
id_lang: "1",
newsletter_date_add: "2013-12-13 08:19:15",
ip_registration_newsletter: "",
last_passwd_gen: "2021-02-13 06:20:42",
secure_key: "870d...",
deleted: "0",
passwd: "bf57...",
lastname: "DOE",
firstname: "John",
email: "pub@prestashop.com",
id_gender: "1",
birthday: "1998-01-15",
newsletter: "1",
optin: "1",
website: "",
company: "",
siret: "",
ape: "",
outstanding_allow_amount: "0.000000",
show_public_prices: "0",
id_risk: "0",
max_payment_days: "0",
active: "1",
note: "",
is_guest: "0",
id_shop: "1",
id_shop_group: "1",
date_add: "2021-02-13 12:20:42",
date_upd: "2021-02-13 12:20:42",
reset_password_token: "",
reset_password_validity: "0000-00-00 00:00:00",
associations: {
groups: [
{
id: "3"
}
]
}
}
}

Utiliser Postman avec PrestaShop :

Postman va vous permettre de réaliser vos requêtes rapidement et simplement.
Nous allons faire un GET depuis Postman :

Ajouter en GET sur postman votre URL :

  • http://votre_site_ici.fr/api/customers/1?ws_key={{prestashop_key}}&output_format=JSON

Puis exécuter la requête (cliquez sur le bouton bleu « Send »).

Créer un client avec Postman :

Cette fois on va créer un client PrestaShop, depuis postman.
On passe donc en POST (et plus en GET).
On ajouter le body suivant :

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <customers>
        <passwd>Lorem_1234</passwd>
        <firstname>John</firstname>
        <lastname>DOE</lastname>
        <email>postman@eewee.fr</email>
    </customers>
</prestashop>

Et on valide (toujours pareil, en cliquant sur le bouton bleu nommé « Send »).

Liste des différents endpoints PrestaShop :

PrestaShop propose dans sa documentation, la liste des différents endpoints disponibles pour réaliser vos requêtes.

Ici l’exemple avec le endpoint « Customers » :
https://devdocs.prestashop.com/1.7/webservice/resources/customers/

On peut voir qu’il y a 4 champs obligatoires :

  • passwd
  • firstname
  • lastname
  • email

Requête API PrestaShop en PHP :

Vous pouvez utiliser la lib de PrestaShop pour réaliser vos requêtes en PHP :

  • https://github.com/PrestaShop/PrestaShop-webservice-lib/blob/master/PSWebServiceLibrary.php

Exemple d’un update :

  • https://github.com/PrestaShop/PrestaShop-webservice-lib/blob/master/examples/Update.php

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...