API COMMANDE COURSIER.FR V3

08/06/2020 logo_coursier.png 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}