Jump to content

[Webservice Api] Comment Créer Une Commande Complète ?


Recommended Posts

Bonjour à tous chers Prestashopeurs,

 

Je commence à utiliser le mode webservice API pour Prestashop, j'ai suivi le tuto officiel :

http://www.prestashop.com/forums/topic/228545-webservice-api-how-to-create-a-full-order-customer-cart-and-order/

 

Pour ceux que ca interesse voici un tuto équivalent en Francais :

http://www.modules-shop.com/installation-et-configuration-du-webservice-cle-prestashop/

 

J'arrive bien à lister tout ce que je veux, donc le module semble bien fonctionner et j'aimerais maintenant apprendre à créer une commande complète c'est à dire :

- créer un nouveau client

- créer un nouveau panier

- créer une nouvelle commande

 

Auriez vous des exemples ou des guides sous la main à me communiquer afin que je puisse commencer à développer ?

 

Bonne journée à tous et merci de m'avoir lu.

Link to comment
Share on other sites

Re-bonjour,

 

J'ai donc essayé de faire mon propre script de création de client, mais j'obtiens une erreur "Bad parameters given" lors de l'envoi, voici la ligne des logs :

[Wed Feb 27 11:20:27 2013] [error] [client 82.127.150.84] PHP Fatal error:  Uncaught exception 'PrestaShopWebserviceException' with message 'Bad parameters given' in /home/flyzone/venir/inc/PSWebServiceLibrary.php:218\nStack trace:\n#0 /home/flyzone/venir/test.php(37): PrestaShopWebservice->add(Array)\n#1 {main}\n  thrown in /home/flyzone/venir/inc/PSWebServiceLibrary.php on line 218

 

Et voici mon script :

 

<?php
// Variables et includes necessaires à l'utilisation de la lib
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://myshop.fr/');
define('PS_WS_AUTH_KEY', '0000000000000000000000000000000000000');
require_once('./inc/PSWebServiceLibrary.php');

// Récupération du coument XML vierge à renvoyer complété
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$xml = $webService->get( array( 'url' => 'http://myshop.fr/api/customers?schema=blank' ) );
$resources = $xml->children()->children();

// Infos de création du client
$infos = array(
   'active' => '1',
   'birthday' => '2011-12-02',
   'deleted' => '0',
   'email' => '[email protected]',
   'firstname' => 'ILOL',
   'id' => '845',
   'id_default_group' => '1',
   'id_gender' => '1',
   'ip_registration_newsletter' => '',
   'is_guest' => '0',
   'last_passwd_gen' => '2011-12-02 16:15:22',
   'lastname' => 'Lol',
   'newsletter' => '0',
   'newsletter_date_add' => '',
   'note' => '',
   'optin' => '0',
   'passwd' => '97d1a585e6f86d2e1fe74f95961487df',
   'secure_key' => '47ca86627c1f3c792a80773c5d2deaf8'
);

foreach ( $resources as $nodeKey => $node ) {
 $resources->$nodeKey = $infos[ $nodeKey ];
}

// Envoi !
$opt = array( 'resource' => 'customers' );
$opt[ 'xml' ] = $xml->asXML();
print_r($opt);
$xml = $webService->add( $opt );
?>

 

Quelqu'un a une idée de ce qui ne va pas ? Ou est ce que quelqu'un à un script d'exemple ou encore y a t il un document détaillant tous les paramètres à envoyer ainsi que leur format de valeur ?

 

Je trouve ce nouveau webservice très peu documenté, mes recherches ne donnent pas grand chose jusqu'a maintenant

 

Thank you.

Link to comment
Share on other sites

Bon j'ai réussi à le faire fonctionner en faisant juste bien gaffe aux variables que je lui envoie et ca marche, par contre énormément de controles ne sont pas appliqués par cette API (possibilité de faire 15 clients avec le meme nom, prénom, email, ect ...) donc ne pas trop se reposer dessus

 

pour info voila mon code :

 

<?php
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://monshop.fr');
define('PS_WS_AUTH_KEY', '000000000000000000000000000');
require_once('./inc/PSWebServiceLibrary.php');
// Récupération du document XML vierge
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$xml = $webService->get( array( 'url' => 'http://monshop.fr/api/customers/?schema=synopsis' ) );
// Récupération de l'ensemble des champs
$resources = $xml->children()->children();
// Fonction pour obtenir un string random :
function rand_string($length) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
 $str .= $chars[ rand( 0, $size - 1 ) ];
}
return $str;
}
// Array contenant les infos pour la création
$infos = array(
'active' => '1',
'birthday' => '1989-08-28',
'deleted' => '0',
'email' => '[email protected]',
'firstname' => 'Pierre',
'id_default_group' => '1',
'id_gender' => '1',
'ip_registration_newsletter' => '',
'is_guest' => '0',
'last_passwd_gen' => date('Y-m-d H:i:s', time()),
'lastname' => 'CIHOLAS',
'newsletter' => '0',
'newsletter_date_add' => '',
'note' => '',
'optin' => '0',
'passwd' => md5('password'),
'secure_key' => md5(rand_string(32))
);
foreach ( $resources as $nodeKey => $node ) {
 $resources->$nodeKey = $infos[ $nodeKey ];
}
$opt = array( 'resource' => 'customers' );
$opt['postXml'] = $xml->asXML();
$xml = $webService->add( $opt );
?>

 

En espérant que ca serve à quelqu'un !

Link to comment
Share on other sites

Et encore un repost pour donner une solution encore meilleure !

 

Pour créer des clients, ca allait, le XML était sur un seul niveau, mais pour les paniers et commandes il y a plusieurs niveaux, alors j'ai tenté et réussi à créer un script qui prend en imput du XML pur, comme ca vous pouvez réutiliser mon script pour chaque partie controlable par le webservice !!

 

Enjoy :

 

<?php
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://monshop.fr');
define('PS_WS_AUTH_KEY', '00000000000000000000000000000000');
require_once('../inc/PSWebServiceLibrary.php');
$psXML = <<<XML
<prestashop>
<cart>
 <id/>
 <id_address_delivery>3</id_address_delivery>
 <id_address_invoice>3</id_address_invoice>
 <id_currency>1</id_currency>
 <id_customer>2</id_customer>
 <id_guest>0</id_guest>
 <id_lang>2</id_lang>
 <id_carrier>8</id_carrier>
 <recyclable>1</recyclable>
 <gift>0</gift>
 <gift_message/>
 <associations>
  <cart_rows>
   <cart_row>
 <id_product>10</id_product>
 <id_product_attribute>39</id_product_attribute>
 <quantity>1</quantity>
   </cart_row>
  </cart_rows>
 </associations>
</cart>
</prestashop>
XML;
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$xml = new SimpleXMLElement($psXML);
$opt = array( 'resource' => 'carts' );
$opt['postXml'] = $xml->asXML();
$xml = $webService->add( $opt );
?>

  • Like 1
Link to comment
Share on other sites

  • 3 years later...

Bonjour j'ai lu vos postes et ils sont interessant.

J'ai quelque doute comme je suis nouveau dans le mondes des modules (API) et prestashop.

pour les Fichiers CRUD dans quel dossier on les met? ou bien juste dans le dossier source de prstashop ou il y a le fichier PSWebServiceLibrary.php et list_the_clients.php.

sur le lien suivant

https://github.com/PrestaShop/PrestaShop-webservice-lib/tree/master/examples

le commentaire "display error" veut dire que le contenu n'est pas ou genere des erreurs?

 

autre question : ou je pourrais voir les resultats de creation (commande, client...) par le module.

je suis entrain de travailler sur un projet de passer l'nformation de la boutique du client vers une autre plateforme utilisant ce genre d'API que vous avez partagè.

 

Merci pour vos rèponses.

Edited by java2dev (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...