J’ai récemment du tester le bon fonctionnement d’une api produit et j’ai un peu galérer à trouver un script fonctionnel pour créer et modifier un produit via l’api Prestashop.
Si d’autres personnes rencontrent le même problème voici des exemples basiques mais fonctionnels de création et de mise à jour de produits via l’api Prestashop
Le code a été testé sur une version 1.7.6 mais devrait fonctionner sur toutes les versions 1.7 , voir même les versions 1.6 vu que l’api a assez peu bougée.
Les exemples utilisent la librairie du webservice prestashop ( cf. https://devdocs.prestashop.com/1.7/development/webservice/tutorials/prestashop-webservice-lib/ )
Pour créer un produit
try { //Création d'un produit avec uniquement les champs requis $webService = new PrestaShopWebservice($url, $key, $debug); $xmlResponse = $webService->get(['url' => $url . '/api/products?schema=blank']); $productXML = $xmlResponse->product[0]; //Récupération du schéma de création $productXML->name->language[0] = "test de produit Langue 1"; $productXML->name->language[1] = "test de produit FR"; $productXML->description->language[0] = "test de description langue 1"; $productXML->description->language[1] = "test de description FR"; $productXML->price = "1000.000"; $productXML->id_category_default = 2; $productXML->state = 1;//Cette valeur doit être à 1 pour que le produit soit visible dans les listings admin //On ajoute également dans une catégorie //La première catégorie est déjà présente dans le schéma $productXML->associations->categories->category[0]->id = 6; //Si on veut en ajouter d'autres il faut procéder différement en rajoutant des noeuds $categoriesNode = $productXML->associations->categories; $categoriesNode->addChild('category')->addChild('id',7); $categoriesNode->addChild('category')->addChild('id',8); //Envoi des informations au webservice $opt = ['resource' => 'products']; $opt['postXml'] = $xmlResponse->asXML(); $return = $webService->add($opt); $id = $return->product->id; echo "Création du produit $id <br />"; } catch ( PrestaShopWebserviceException $e){ echo $e->getMessage(); } |
Pour modifier un produit :
try { //Mise à jour d'un produit $webService = new PrestaShopWebservice($url, $key, $debug); //identifiant du produit $idProduct = 22; //Mise à jour d'un produit $xmlResponse = $webService->get(['resource' => 'products', 'id' => $idProduct]); $updateProductXML = $xmlResponse->product[0]; //Récupération des infos produits //Changement des champs $updateProductXML->reference = "modified"; //Supprimer ces noeuds pour mettre à jour sinon erreur 400 unset($updateProductXML->manufacturer_name); unset($updateProductXML->position_in_category); unset($updateProductXML->quantity); //Envoi des infos $response = $webService->edit([ 'resource' => 'products', 'id' => (int) $updateProductXML->id, 'putXml' => $xmlResponse->asXML(), ]); } catch ( PrestaShopWebserviceException $e){ echo $e->getMessage(); } |
mars 31st, 2020
Muchas gracias por compartirlo, tienes un blog repleto de contenido de calidad.
Simplemente eres una maquina!
Muchas gracias 🙂
décembre 12th, 2020
Merci pour cet article, ça dépanne. Les ressources pour PS 1.7 se font rare.
Vous ne parlez pas des images, avez-vous trouver comment créer un produit avec des images ?
décembre 29th, 2020
Bonjour,
Concernant les images la documentation officielle est plutôt complète sur le sujet 😉
Cf. https://devdocs.prestashop.com/1.7/webservice/tutorials/advanced-use/image-management/
Cordialement,
Hervé