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
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