L’une des problématiques quand on développe des méthodes dans les API Magento est de pouvoir les tester facilement. Il m’est arrivé de créer/modifier des fonctions API déjà existantes qui communiquaient avec une application iPad. N’ayant pas l’application sous la main, j’ai mis en place un petit script pour « simuler » des appels API.
Premièrement assurez-vous d’avoir un login/mdp et les accès requis dans l’admin Magento :
Système -> Services Web -> Utilisateurs
Système -> Services Web -> Rôles
Deuxièmement, placez un fichier php sur votre serveur (perso je l’ai mis à la racine et nommé « webservicesV1.php ») :
<h1>Test du webservice</h1> <?php ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); if(!empty($_POST['login']) && !empty($_POST['mdp']) && !empty($_POST['fonction'])){ $client = new SoapClient('http://www.monsite.com/api/?wsdl=1'); $session = $client->login($_POST['login'], $_POST['mdp']); if(empty($_POST['params'])){ $result = $client->call($session, $_POST['fonction']); // he we execute the command using that data we provided } else { $params = explode('|',$_POST['params']); $result = $client->call($session, $_POST['fonction'], $params); // he we execute the command using that data we provided } print '<div style="padding:10px;background:#D1D1D1;margin-left:20px;margin-right:20px;margin-bottom:10px;">'; print 'Résultat de la commande <b>'.$_POST['fonction'].'</b><br />'; print 'Paramètres : <b>'.str_replace('|',', ',$_POST['params']).'</b><br />'; print '<pre>'; print_r($result); print '</pre>'; print '</div>'; $client->endSession($session); } ?> <fieldset style="margin-left:20px;margin-right:20px;"> <legend>Informations</legend> <form action="webservicesV1.php" method="post"> Login* : <input type="text" name="login" value="<?php echo $_POST['login'] ?>"/><br /> Mdp* : <input type="password" name="mdp" value="<?php echo $_POST['mdp'] ?>" /><br /> Fonction* : <input type="text" name="fonction" value="<?php echo $_POST['fonction'] ?>" /><br /> Paramètre(s) : <input type="text" name="params" value="<?php echo $_POST['params'] ?>" /> (Séparateur : "|")<br /> <input type="submit" value="Testons !" /> </form> </fieldset>
Pour des raisons de sécurité, ce script reste sur mon PC dans mon environnement local et n’est pas sur un serveur. Le principal c’est que le SoapClient pointe sur le serveur souhaité
new SoapClient('http://www.monsite.com/api/?wsdl=1');
Il vous suffit de mettre le login et mdp de votre utilisateur webservice, la fonction à appeler, et les paramètres s’il y’en a. Si vous avez plusieurs paramètres, utilisez le séparateur « | ».