L'API XML
Fonctionnement
- Les messages sont envoyés par une requête HTTP POST.
- Le contenu des messages et de la réponse est structuré en XML, encodage UTF8.
- La chaîne XML est placée dans la variable POST nommée
xml_feed
. - L'url de l'api est spécifique à votre compte, vous la trouverez dans PMS dans
Réglages
. L'url est de la forme:https://votrecompte.pms1.net/edi/api - L'authentification est de type HTTP basic authentification. Le username est votre identifiant de compte PMS et le password est la clé API. Vous trouverez ces deux informations dans
Réglages
L'API ne doit pas être appelée en « batch », c'est à dire que les appels ne doivent pas être groupés en un flot de demandes groupées, dans un travail de nuit par exemple. Les requêtes doivent donc êtres répartie sur toute la journée et la nuit en fonction du flux d'activité de votre ERP. Ce mode de fonctionnement « au fil de l'eau » est nécessaire afin de ne pas saturer les ressources des serveurs. Les appels de l'API sont généralement liés et declenchés par les changements de statuts des commandes.
Exemple en PHP
Effectuer un requête HTTP POST avec curl :
$xml_string = "Votre chaîne XML" ;
$accountName = "Votre identifiant de compte PMS";
$apiKey = "Votre clé API";
$url = "https://compte.pms1.net/edi/api";
$data = array ( "xml_feed" => $xml_string );
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_VERBOSE => true,
CURLOPT_HEADER => false,
CURLOPT_POST => true,
CURLOPT_POSTREDIR => true,
CURLOPT_POSTFIELDS => $data,
));
$reply = curl_exec ($ch);
curl_close($ch);
Lire la réponse XML avec la classe SimpleXMLElement:
$xml = new SimpleXMLElement($reply);
if ($xml->getName() == "response")
{
$nouveau_statut = $xml->order->statut;
if ($nouveau_statut==90)
{
/* action à effectuer */
}
}
Syntaxe XML
Certains caractères sont réservés à la syntaxe XML et doivent être échappés s'ils apparaissent dans les données : "<", ">", "&", "%"...
Il est possible également de protéger les données en les enveloppant avec DATA:
<company><![CDATA[Ashton & Cie]]></company>