API COMMANDE COURSIER.FR V3
| 08/06/2020 | ![]() |
Version 3.1 |
Objectif
Pouvoir commander un coursier directement depuis un site internet, un intranet ou toute autre application d’un partenaire. L’API permet de spécifier l’adresse d’enlèvement, de destination, le colisage, le niveau de prestation et des références client. Elle peut être appelée directement sans appeler l'API devis au préalable si vous connaissez le service à utiliser.
Protocole
Les requests se font en mode https à l’url api.coursier.fr/v3/order.php, on récupère un accusé de la commande, un id et les engagements horaires.
Authentification
L'authentification se fait à l'aide d'une apikey associée à votre user coursier.fr, vous pouvez trouver ces informations dans votre espace client. Vous devez disposez d'un compte en facturation mensuelle, si ce n'est pas encore le cas vous pouvez contacter un commercial à l'adresse commercial@coursier.fr. Vous devez passer en paramètre l'apikey, le user et le compte client utilisé, un même user pouvant être rattaché à plusieurs comptes client.
Afin de tester nos apis, vous pouvez utiliser le compte de test suivant pour réaliser vos développements dès à présent en attendant d'avoir vos accès définitifs :
User : test@apicfr.fr
Pass : T3stCFR*
ClientId : 7055339
Apikey : e1ab1411d66765e73cf4b068d39cda8a
Paramètres
Les paramètres sont à passer en POST sous forme d’un tableau json.
|
NOM |
REQUIS |
TYPE |
DESCRIPTIF |
|
User |
O |
Varchar(180) |
User d'accès aux interfaces coursier.fr |
|
Apikey |
O |
Varchar(32) |
Apikey liée à votre user d'accès aux interfaces coursier.fr |
|
ClientId |
O |
int |
Numéro de compte client |
|
FromAddress.Company |
O |
Varchar(50) |
Nom de l'Entreprise d'enlèvement dans le cas d'une société |
|
FromAddress.Address |
O |
Varchar(120) |
Numéro et rue de l'adresse d'enlèvement |
|
FromAddress.PostalCode |
O |
Varchar(10) |
Code Postal de l’adresse d’enlèvement |
|
FromAddress.City |
O |
Varchar(50) |
Ville d’enlèvement |
|
FromAddress.Country |
O |
Varchar(50) |
Pays d’enlèvement (exemple : France) |
|
FromAddress.Contact |
O |
Varchar(50) |
Contact d’enlèvement |
|
FromAddress.Email |
N |
Varchar(100) |
Email d’enlèvement |
|
FromAddress.PhoneNumber |
O |
Varchar(30) |
Téléphone d’enlèvement |
|
FromAddress.Comment |
N |
Varchar(100) |
Précision enlèvement. L'information est enregistrée avec le contact créé, elle doit donc être liée à l'adresse ou le contact comme un code porte, une consigne (ne pas mettre un numéro de colis par exemple) |
|
ToAddress.Company |
N |
Varchar(50) |
Nom de l'Entreprise à livrer dans le cas d'une société |
|
ToAddress.Address |
O |
Varchar(120) |
Numéro et rue de l’adresse de livraison |
|
ToAddress.PostalCode |
O |
Varchar(10) |
Code Postal de l’adresse de livraison |
|
ToAddress.City |
O |
Varchar(50) |
Ville de livraison |
|
ToAddress.Country |
O |
Varchar(50) |
Pays de livraison (exemple : France) |
|
ToAddress.Contact |
O |
Varchar(50) |
Contact de livraison |
|
ToAddress.Email |
N |
Varchar(100) |
Email de livraison |
|
ToAddress.PhoneNumber |
O |
Varchar(30) |
Téléphone de livraison |
|
ToAddress.Comment |
N |
Varchar(100) |
Précision livraison. L'information est enregistrée avec le contact créé, elle doit donc être liée à l'adresse ou le contact comme un code porte, une consigne (ne pas mettre un numéro de colis par exemple) |
|
ServiceId |
O |
int |
Nature de la prestation sous forme d'Id en fonction des accord contractuels. Ces codes vous sont données à la création du compte et vous pouvez également les récupérer en temps réel en appelant l'API devis qui vous donnera les services disponibles pour votre compte pour la date choisie. Pour tester (1=course en Normal, 2=course en Exclu, 3=course en double Exclu, 10=sur créneau 2h) |
|
StartDate |
N |
DateHeure |
Par défaut égale à maintenant, permet de spécifier une date en différé par exemple pour tenir compte d'un cutoff. Format « YYYY-MM-DD HH:MM:SS ». Dans le cas d'un créneau, il s'agit de la date de début du créneau. |
|
Reference1 |
N |
Varchar(50) |
Référence interne du client, nous pouvons sur simple demande splitter ou regrouper vos factures par Reference1 |
|
Reference2 |
N |
Varchar(50) |
Référence interne du client, nous pouvons sur simple demande splitter ou regrouper vos factures par Reference2 |
|
Reference3 |
N |
Varchar(50) |
Référence interne du client, nous pouvons sur simple demande splitter ou regrouper vos factures par Reference3 |
|
Packages |
O |
Array() |
Tableau des colis |
Packages :
|
NOM |
REQUIS |
TYPE |
DESCRIPTIF |
|
Name |
O |
Varchar(32) |
Texte libre : nature du colis (Pli, Colis, Sac, Palette...) Pour des raisons de sécurité, éviter de préciser une nature d'objet dans le cas de marchandise à forte valeur (montre, bijou...) |
|
NumberOfPackage |
O |
Int |
Nombre de colis similaires |
|
Weight |
O |
double |
Poids en kilos |
|
Length |
O |
Double |
Longueur en cm |
|
Width |
O |
double |
Largeur en cm |
|
Height |
O |
Double |
Hauteur en cm |
Si vous ne disposez pas des mesures précises de vos envois, vous pouvez vous référer à la grille standard ci dessous
| Name | Weight | Length | Width | Height | Exemple |
| XS | 1 | 30 | 20 | 5 | Pli |
| S | 3 | 30 | 25 | 25 | Petit Colis |
| M | 5 | 40 | 30 | 30 | Moyen colis |
| L | 15 | 60 | 40 | 40 | Gand Colis |
| XL | 100 | 80 | 60 | 100 | Demi Palette |
| XXL | 250 | 80 | 120 | 100 | Palette |
Les colisages erronées peuvent entrainer un supplément et un retard de livraison
Réponse JSON
La réponse contient le détail de la course enregistrée ainsi que son Id permettant par la suite d'en faire le suivi. En cas de rupture de charge, deux courses avec le même numéro seront créées et visibles par l'API de tracking pour suivre chacun des deux trajets. En cas d'erreur, l'api répond un json contenant un champ Message précisant la nature de l'erreur.
|
NOM |
Taille |
DESCRIPTIF |
|
MissionNumber |
int |
Numéro de la course, c'est ce numéro qui permet de dialoguer avec notre coursier, le service client et l'API de tracking |
|
PickupStartDate |
Datetime |
Début du créneau d’enlèvement |
|
PickupEndDate |
Datetime |
Fin du créneau d’enlèvement |
|
DeliveryStartDate |
Datetime |
Début du créneau de livraison |
|
DeliveryEndDate |
Datetime |
Fin du créneau de livraison |
|
price |
Float |
Prix HT de la prestation |
|
CO2 |
Float |
Emissions de CO2 générées pour faire cette prestation (en kg) |
Exemple d'appel
<?php
$url = "https://api.coursier.fr/v3/order.php";
$data = array('User' => 'test@apicfr.fr',
'Apikey' => 'e1ab1411d66765e73cf4b068d39cda8a',
'ClientId' => '7055339',
'ServiceId' => 10, //Correspond à un service de créneau
'StartDate' => '2020-07-01 10:00:00', //Mettre un début de créneau valide
'FromAddress' => array('Company' => 'Worldcompany',
'Address' => '45 Rue la Boétie',
'PostalCode' => '75008',
'City' => 'Paris',
'Country' => 'France',
'Contact' => 'Yann Thebault',
'PhoneNumber' => '0602030405',
'Email' => 'yt@test.com',
'Comment' => '5ème étage à gauche'),
'ToAddress' => array('Company' => 'Coursier.fr',
'Address' => '50 Rue Maurice Arnoux',
'PostalCode' => '92120',
'City' => 'Montrouge',
'Country' => 'France',
'Contact' => 'Sophie Mayeux',
'PhoneNumber' => '0605040302',
'Email' => 'sma@test.com',
'Comment' => 'Déposer le colis à l\'accueil'),
'Packages' => array(array('Name' => 'M', 'NumberOfPackage' => 1, 'Weight' =>5, 'Length' => '40', 'Width' => '30', 'Height' => '30')),
'Reference1' => 'Your internal data',
'Reference2' => 'Your internal data',
'Reference3' => 'Your internal data',
'Lang' => 'FR',
);
$datajson = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
var_dump($res);
?>
Exemple de réponse
{"MissionNumber":"9999999","PickupStartDate":"2020-06-22 18:20:09","PickupEndDate":"2020-06-22 19:20:09","DeliveryStartDate":"2020-06-22 19:20:09","DeliveryEndDate":"2020-06-22 21:20:09","price":99.99,"CO2":2.5}

No Comments