Comment accéder aux tarifs de plusieurs transporteurs via une seule API (avec l'API de livraison gratuite)
Publié: 2017-02-27
Dernière mise à jour - 24 février 2020
Dans cet article, vous comprendrez comment accéder à cette API et obtenir des tarifs nationaux et internationaux pour votre colis auprès de différents transporteurs comme FedEx, UPS et USPS. Il vous suffit de spécifier l'adresse de l'expéditeur, l'adresse du destinataire, le type de service et les détails d'autorisation pour le transporteur spécifique sous forme de données JSON cryptées.
Pour utiliser cette API, vous devez vous inscrire sur http://shippingapi.storepep.com et obtenir une clé API gratuite dans votre e-mail, il vous suffit de fournir votre identifiant e-mail lors de l'inscription.
GET : Liste des services disponibles
1 : Obtenez tous les services FedEx disponibles :
Commande : curl http://shippingapi.storepep.com/api/shippings/fedex-services
Sortie :
{
"FEDEX_1_DAY_FREIGHT":"FEDEX 1 DAY FREIGHT",
"FEDEX_2_DAY":"FEDEX 2 DAY",
"FEDEX_2_DAY_AM":"FEDEX 2 DAY AM",
"FEDEX_2_DAY_FREIGHT":"FEDEX 2 DAY FREIGHT",
"FEDEX_3_DAY_FREIGHT":"FEDEX 3 DAY FREIGHT",
"FEDEX_DISTANCE_DEFERRED":"FEDEX DISTANCE DEFERRED",
"FEDEX_EXPRESS_SAVER":"FEDEX EXPRESS SAVER",
"FEDEX_FIRST_FREIGHT":"FEDEX FIRST FREIGHT",
"FEDEX_FREIGHT_ECONOMY":"FEDEX FREIGHT ECONOMY",
"FEDEX_FREIGHT_PRIORITY":"FEDEX FREIGHT PRIORITY",
"FEDEX_GROUND":"FEDEX GROUND",
"FEDEX_NEXT_DAY_AFTERNOON":"FEDEX NEXT DAY AFTERNOON",
"FEDEX_NEXT_DAY_EARLY_MORNING":"FEDEX NEXT DAY EARLY MORNING",
"FEDEX_NEXT_DAY_END_OF_DAY":"FEDEX NEXT DAY END OF DAY",
"FEDEX_NEXT_DAY_FREIGHT":"FEDEX NEXT DAY FREIGHT",
"FEDEX_NEXT_DAY_MID_MORNING":"FEDEX NEXT DAY MID MORNING",
"FIRST_OVERNIGHT":"FIRST OVERNIGHT",
"GROUND_HOME_DELIVERY":"GROUND HOME DELIVERY",
"EUROPE_FIRST_INTERNATIONAL_PRIORITY":"EUROPE FIRST INTERNATIONAL PRIORITY",
"INTERNATIONAL_ECONOMY":"INTERNATIONAL ECONOMY",
"INTERNATIONAL_ECONOMY_FREIGHT":"INTERNATIONAL ECONOMY FREIGHT",
"INTERNATIONAL_FIRST":"INTERNATIONAL FIRST",
"INTERNATIONAL_PRIORITY":"INTERNATIONAL PRIORITY",
"INTERNATIONAL_PRIORITY_FREIGHT":"INTERNATIONAL PRIORITY FREIGHT",
"PRIORITY_OVERNIGHT":"PRIORITY OVERNIGHT",
"SAME_DAY":"SAME DAY",
"SAME_DAY_CITY":"SAME DAY CITY",
"SMART_POST":"SMART POST",
"STANDARD_OVERNIGHT":"STANDARD OVERNIGHT"
}
2 : Obtenez tous les services UPS disponibles :
Commande : curl http://shippingapi.storepep.com/api/shippings/ups-services
Sortie :
{
'01': 'UPS Next Day Air',
'02': 'UPS Second Day Air',
'03': 'UPS Ground',
'07': 'UPS Worldwide Express',
'08': 'UPS Worldwide Expedited',
'11': 'UPS Standard',
'12': 'UPS Three-Day Select',
'13': 'UPS Next Day Air Saver',
'14': 'UPS Next Day Air Early AM',
'54': 'UPS Worldwide Express Plus',
'59': 'UPS Second Day Air AM',
'65': 'UPS Saver',
'82': 'UPS Today Standard',
'83': 'UPS Today Dedicated Courier',
'84': 'UPS Today Intercity',
'85': 'UPS Today Express',
'86': 'UPS Today Express Saver',
'92': 'UPS SurePost (USPS) < 1lb', '93': 'UPS SurePost (USPS) > 1lb',
'94': 'UPS SurePost (USPS) BPM',
'95': 'UPS SurePost (USPS) Media'
}
3 : Obtenez tous les services USPS disponibles :
Commande : curl http://shippingapi.storepep.com/api/shippings/usps-services
Sortie :
{
'First Class>LETTER':'First Class>LETTER',
'First Class>FLAT':'First Class>FLAT',
'First Class>PARCEL':'First Class>PARCEL',
'First Class>POSTCARD':'First Class>POSTCARD',
'First Class>PACKAGE SERVICE':'First Class>PACKAGE SERVICE',
'First Class Commercial>PACKAGE SERVICE':'First Class Commercial>PACKAGE SERVICE',
'First Class HFP Commercial>PACKAGE SERVICE':'First Class HFP Commercial>PACKAGE SERVICE',
'Priority':'Priority',
'Priority Commercial':'Priority Commercial',
'Priority Cpp':'Priority Cpp',
'Priority HFP Commercial':'Priority HFP Commercial',
'Priority HFP Cpp':'Priority HFP Cpp',
'Priority Mail Express':'Priority Mail Express',
'Priority Mail Express Commercial':'Priority Mail Express Commercial',
'Priority Mail Express Cpp':'Priority Mail Express Cpp',
'Priority Mail Express HFP':'Priority Mail Express HFP',
'Priority Mail Express HFP Commercial':'Priority Mail Express HFP Commercial',
'Standard Post':'Standard Post',
'Retail Ground':'Retail Ground',
'Media':'Media',
'Library':'Library',
'Online Plus':'Online Plus',
'12':'Global Express Guaranteed',
'1':'Priority Mail Express International',
'2':'Priority Mail International',
'9':'Priority Mail International Medium Flat Rate Box',
'11':'Priority Mail International Large Flat Rate Box',
'16':'Priority Mail International Small Flat Rate Box',
'15':'First Class Package International Service'
}
POST : API des tarifs
Pour utiliser l'API Rates, nous devons d'abord comprendre la structure de cette demande d'API
Nom | La description |
---|---|
Common_Params | Contient des éléments internes communs à toutes les compagnies maritimes |
Common_Params > environnement | pour le mode test : sandbox, pour le mode production : live |
Common_Params > identifiant de messagerie | Identifiant de messagerie enregistré pour cette API |
Common_Params >clé | Clé API reçue lors de l'inscription |
Common_Params > hôte | Facultatif (votre nom d'hôte) |
Common_Params >os | Facultatif (les détails de votre système d'exploitation) |
Common_Params >Expéditeur_PersonName | Nom de l'expéditeur |
Common_Params >Shipper_CompanyName | Société de l'expéditeur |
Common_Params > Shipper_PhoneNumber | Numéro de téléphone de l'expéditeur |
Common_Params >Expéditeur_Address_StreetLines | Adresse municipale de l'expéditeur |
Common_Params >Shipper_Address_City | Ville de l'expéditeur |
Common_Params >Shipper_Address_StateOrProvinceCode | Code d'état/province de l'expéditeur (*pas plus de deux lettres) |
Common_Params > Shipper_Address_PostalCode | Code postal de l'expéditeur |
Common_Params > Shipper_Address_CountryCode | Code pays de l'expéditeur (*uniquement code à deux lettres) |
Common_Params > Recipient_PersonName | Nom du destinataire |
Common_Params >Recipient_CompanyName | Entreprise du destinataire |
Common_Params >Recipient_PhoneNumber | Numéro de téléphone du destinataire |
Common_Params >Recipient_Address_StreetLines | Adresse municipale du destinataire |
Common_Params > Recipient_Address_City | Ville du destinataire |
Common_Params >Recipient_Address_StateOrProvinceCode | Code d'état/province du destinataire () |
Common_Params >Recipient_Address_PostalCode | Code postal du destinataire |
Common_Params >Recipient_Address_CountryCode | Code pays du destinataire |
Common_Params >Recipient_Address_CountryName | Nom du pays du destinataire |
Common_Params >Recipient_Address_Residential | Vrai/Faux (est l'adresse résidentielle du destinataire) |
Common_Params > clé_fedex | Clé reçue de FedEx |
Common_Params > mot de passe_fedex | Mot de passe Fedex |
Common_Params > numéro_de_compte_fedex | Numéro de compte FedEx |
Common_Params > fedex_meter_number | Numéro de compteur FedEx |
Common_Params > ups_key | Clé reçue d'UPS |
Common_Params > ups_password | Mot de passe de l'onduleur |
Common_Params > ups_account_number | Numéro de compte UPS |
Common_Params >ups_username | Nom d'utilisateur reçu d'UPS |
Common_Params > usps_username | Nom d'utilisateur USPS |
Request_Array | Cet objet contient des demandes pour plusieurs entreprises et plusieurs packages |
Request_Array > Tableau de requêtes | Plusieurs requêtes passées dans un tableau |

Structure de la requête (comme dans Request_Array )
Nom | La description |
---|---|
Demande | Contient des éléments internes communs à tous les transporteurs (compagnies maritimes) |
Requête > identifiant | Tout ID unique pour identifier ce package (ID de cet élément de tableau) |
Demande >entreprise | Nom du transporteur (par exemple : 'fedex', 'ups', 'usps') pour obtenir les tarifs de ces sociétés pour ce colis |
Requête > Unités_de_poids | Unité de poids (actuellement, seul "LB" est pris en charge) |
Requête > Type de service | Code de service pour le service de transporteur spécifique pour lequel le tarif est requis. Reportez-vous à la documentation API des opérateurs. |
Demande > Types de demande de taux | 'NONE' pour les tarifs spécifiques au compte et 'LIST' pour les tarifs de détail |
Demande >forfaits |
Exemple de JSON (avant chiffrement) :
{ "Common_Params": { "environnement": "bac à sable", "emailid": "[email protected]", "clé": "b52ee1f3ab8454589d6a9bd5018d60be", "hébergeur": "www.storepep.com", "os": "Windows NT 6.3 version 9600 (Windows 8.1 Famille) i586", "Shipper_PersonName": "JOE CHRIST", "Shipper_CompanyName": "MON ENTREPRISE", "Shipper_PhoneNumber": "0123456789", "Shipper_Address_StreetLines": "TABLEAU DE SOIE", "Shipper_Address_City": "COLUMBUS", "Shipper_Address_StateOrProvinceCode": "OH", "Shipper_Address_PostalCode": "43218", "Shipper_Address_CountryCode": "États-Unis", "Recipient_PersonName": "Nom du destinataire", "Recipient_CompanyName": "XYZ", "Recipient_PhoneNumber": "0123456789", "Recipient_Address_StreetLines": "123 , ROUTE XYZ", "Recipient_Address_City": "", "Recipient_Address_StateOrProvinceCode": "WA", "Recipient_Address_PostalCode": "98503", "Recipient_Address_CountryCode": "États-Unis", "Recipient_Address_CountryName": "États-Unis (US)", "Recipient_Address_Residential": "faux", "fedex_key": "UzxdpT3cy7UDF3Vl", "fedex_password": "I1IWFyvBz34QnJOwqZyBn9oll", "fedex_account_number": "110087444", "fedex_meter_number": "128768444", "ups_key": "DCEF2E428E10BBB7", "ups_password": "Q1w2e3r4t5o5", "ups_account_number": "189Y5A", "ups_username": "iahtai21", "usps_username": "806XDDAP3116", "usps_password": "516GD04CJ256" }, "Request_Array": [ { "id": "53:1", "compagnie": [ "usps" ], "Poids_Unités": "LB", "ServiceType": "Priorité", "RateRequestTypes": "AUCUN", "paquets": [ { "poids": 2, "unité": "LBS", "Description": "Mon forfait", "no_of_packages": 1, "Numéro de séquence": 1 } ] }, { "id": "53,37:1", "compagnie": [ "fedex" ], "Poids_Unités": "LB", "ServiceType": "FEDEX_GROUND", "RateRequestTypes": "AUCUN", "paquets": [ { "poids": 1,5, "unité": "LBS", "Description": "Mon forfait", "no_of_packages": 1, "Numéro de séquence": 3 } ] } ] }
Après avoir généré un tel objet JSON, vous devez encoder cet objet à l'aide de votre clé API unique. Nous fournissons l'algorithme de codage ci-dessous, afin qu'il vous soit facile de continuer.
Fonction PHP pour encoder cette requête JSON
<?php fonction encode($key,$data) { $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $key256 = $key; $iv = '1156651@Xadapter' ; mcrypt_generic_init($cipher, $key256, $iv); $cipherText256 = mcrypt_generic($cipher,$data ); mcrypt_generic_deinit($cipher); $cipherHexText256 =bin2hex($cipherText256); retourner $cipherHexText256 ; } ?>
Ensuite, placez cet objet encodé dans un autre objet JSON (avec deux éléments, 'emailid' et 'data') et envoyez-le au serveur.
<?php $req=tableau(); $req['emailid']='[email protected]' ; Votre identifiant de messagerie enregistré API $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; Votre clé API enregistrée $req['data']=$this->encode($apikey,$JSON_Req); $content =json_encode($req); ?>
La requête JSON finale ressemble à ceci :
{"emailid":"[email protected]", "Les données":"" }
Envoyez cet objet JSON au serveur.
Jetez un œil à l'exemple ci-dessous pour comprendre comment envoyer une requête en PHP :
$curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
curl_setopt($curl, CURLOPT_HEADER, faux);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, vrai);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, faux);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, faux);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content ); // c'est le $content que nous avons créé dans le code ci-dessus
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$response = json_decode($json_response, true);
print_r($réponse);