Come accedere alle tariffe di più corrieri di spedizione tramite un'unica API (con API di spedizione gratuita)

Pubblicato: 2017-02-27
Multi Carrier

Ultimo aggiornamento - 24 febbraio 2020

In questo articolo, imparerai come accedere a questa API e ottenere tariffe nazionali e internazionali per il tuo pacco da diversi corrieri come FedEx, UPS e USPS. Devi solo specificare l'indirizzo del mittente, l'indirizzo del destinatario, il tipo di servizio e i dettagli di autorizzazione per il corriere specifico come dati JSON crittografati.

Per utilizzare questa API, devi registrarti su http://shippingapi.storepep.com e ottenere una chiave API gratuita nella tua e-mail, devi solo fornire il tuo ID e-mail durante la registrazione.

GET : Elenco dei servizi disponibili

1: Ottieni tutti i servizi FedEx disponibili:
Comando : curl http://shippingapi.storepep.com/api/shippings/fedex-services

Uscita :
{
"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: Ottieni tutti i servizi UPS disponibili:
Comando : curl http://shippingapi.storepep.com/api/shippings/ups-services
Uscita :

{
'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: Ottieni tutti i servizi USPS disponibili:
Comando : curl http://shippingapi.storepep.com/api/shippings/usps-services
Uscita :

{
'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: Tariffe API

Per utilizzare l'API Rates prima dobbiamo comprendere la struttura di questa richiesta API

Nome Descrizione
Common_Params Contiene elementi interni comuni a tutte le compagnie di navigazione
Common_Params >ambiente per modalità test: sandbox, per modalità produzione: live
Common_Params >emailid ID e-mail registrato per questa API
Common_Params >chiave Chiave API ricevuta durante la registrazione
Common_Params >host Facoltativo (il tuo nome host)
Common_Params >os Opzionale (i dettagli del tuo sistema operativo)
Common_Params >Shipper_PersonName Nome del mittente
Common_Params >Shipper_CompanyName Compagnia del mittente
Common_Params >Shipper_PhoneNumber Numero di telefono del mittente
Common_Params >Shipper_Address_StreetLines Indirizzo del mittente
Common_Params >Shipper_Address_City Città del mittente
Common_Params >Shipper_Address_StateOrProvinceCode Codice provincia/stato mittente (*non più di due lettere)
Common_Params >Shipper_Address_PostalCode Codice postale del mittente
Common_Params >Shipper_Address_CountryCode Prefisso del mittente (*solo codice di due lettere)
Common_Params >Destinatario_PersonName Nome del destinatario
Common_Params >Destinatario_CompanyName Società del destinatario
Common_Params >Recipient_PhoneNumber Numero di telefono del destinatario
Common_Params >Indirizzo_destinatario_StreetLines Indirizzo del destinatario
Common_Params >Indirizzo_destinatario_Città Città del destinatario
Common_Params >Indirizzo_destinatario_Stato o codice provincia Codice stato/provincia del destinatario ()
Common_Params >Indirizzo_destinatario_Codice postale Codice postale del destinatario
Common_Params >Indirizzo_destinatario_Codice Paese Prefisso internazionale del destinatario
Common_Params >Indirizzo_destinatario_nome Paese Nome del paese del destinatario
Common_Params >Indirizzo_destinatario_Residenziale Vero/Falso (è l'indirizzo di residenza del destinatario)
Common_Params >fedex_key Chiave ricevuta da FedEx
Common_Params >fedex_password Password Fedex
Common_Params >fedex_account_number Numero di conto FedEx
Common_Params >fedex_meter_number Numero del contatore FedEx
Common_Params >ups_key Chiave ricevuta da UPS
Common_Params >ups_password Password dell'UPS
Common_Params >ups_account_number Numero di conto UPS
Common_Params >ups_username Nome utente ricevuto da UPS
Common_Params >usps_username Nome utente USPS
Richiesta_array Questo oggetto contiene richieste per più aziende e più pacchetti
Request_Array > Array di richiesta Richieste multiple passate in un array

Struttura della richiesta (come in Request_Array )

Nome Descrizione
Richiesta Contiene elementi interni comuni a tutti i vettori (compagnie di navigazione)
Richiedi >id Qualsiasi ID univoco per identificare questo pacchetto (ID di questo elemento dell'array)
Richiedi >azienda Nome del vettore di spedizione (es: 'fedex', 'ups', 'usps') per ottenere le tariffe da queste compagnie per questo pacchetto
Richiedi >Unità_peso Unità di peso (attualmente è supportato solo 'LB')
Richiedi >TipoServizio Codice di servizio per il servizio di corriere specifico per il quale è richiesta la tariffa. Fare riferimento alla documentazione dell'API dei vettori.
Richiedi >Tipi di richiesta tariffa "NESSUNO" per le tariffe specifiche dell'account e "LISTA" per le tariffe al dettaglio
Richiedi >pacchetti

Esempio JSON (prima della crittografia) :
 {
	"Common_Params": {
		"ambiente": "sabbiera",
		"emailid": "[email protected]",
		"chiave": "b52ee1f3ab8454589d6a9bd5018d60be",
		"host": "www.storepep.com",
		"os": "Windows NT 6.3 build 9600 (Windows 8.1 Home) i586",
		"Shipper_PersonName": "JOE CHRIST",
		"Shipper_CompanyName": "LA MIA AZIENDA",
		"Shipper_PhoneNumber": "0123456789",
		"Indirizzo_Shipper_StreetLines": "TRONCHETTO IN SETA",
		"Shipper_Address_City": "COLUMBUS",
		"Shipper_Address_StateOrProvinceCode": "OH",
		"Shipper_Address_PostalCode": "43218",
		"Shipper_Address_CountryCode": "USA",
		"Recipient_PersonName": "Nome destinatario",
		"Recipient_CompanyName": "XYZ",
		"Numero_telefono_destinatario": "0123456789",
		"Indirizzo_destinatario_StreetLines": "123 , XYZ ROAD",
		"Indirizzo_destinatario_città": "",
		"Recipient_Address_StateOrProvinceCode": "WA",
		"Recipient_Address_PostalCode": "98503",
		"Recipient_Address_CountryCode": "USA",
		"Recipient_Address_CountryName": "Stati Uniti (USA)",
		"Indirizzo_destinatario_residenziale": "falso",
		"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"
	},
	"Richiesta_array": [
		{
			"id": "53:1",
			"azienda": [
				"usp"
			],
			"Unità_peso": "LB",
			"ServiceType": "Priorità",
			"RateRequestTypes": "NESSUNO",
			"pacchi": [
				{
					"peso": 2,
					"unità": "LBS",
					"Descrizione": "Il mio pacchetto",
					"nessun_di_pacchetti": 1,
					"Numero di sequenza": 1
				}
			]
		},
		{
			"id": "53,37:1",
			"azienda": [
				"fede"
			],
			"Unità_peso": "LB",
			"ServiceType": "FEDEX_GROUND",
			"RateRequestTypes": "NESSUNO",
			"pacchi": [
				{
					"peso": 1,5,
					"unità": "LBS",
					"Descrizione": "Il mio pacchetto",
					"nessun_di_pacchetti": 1,
					"Numero di sequenza": 3
				}
			]
		}
	]
}

Dopo aver generato un tale oggetto JSON, devi codificare questo oggetto utilizzando la tua chiave API univoca. Stiamo fornendo l'algoritmo di codifica di seguito, in modo che sia facile per te procedere.

Funzione PHP per codificare questa richiesta JSON

 <?php
    codifica della funzione($chiave,$dati)
    {
     $ cifra = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
     $chiave256 = $chiave;
     $iv = '1156651@Xadapter';
     mcrypt_generic_init($cifra, $chiave256, $iv);
     $cipherText256 = mcrypt_generic($cifra,$dati);
     mcrypt_generic_deinit($cifra);
     $cipherHexText256 =bin2hex($cipherText256);
     restituisce $cipherHexText256;
    }
?>

Quindi, inserisci questo oggetto codificato in un altro oggetto JSON (con due elementi, 'emailid' e 'data') e invialo al server.

 <?php
  $richiesta=array();
  $req['emailid']='[email protected]'; Il tuo ID e-mail registrato API
  $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; La tua chiave API registrata
  $req['data']=$this->encode($apikey,$JSON_Req);
  $contenuto =json_encode($req);
?>

La richiesta JSON finale ha questo aspetto:

 {"emailid":"[email protected]",
    "dati":""
   }

Invia questo oggetto JSON al server.

Dai un'occhiata all'esempio seguente per capire come inviare una richiesta in PHP:

 $ curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
                curl_setopt($ricciolo, CURLOPT_HEADER, falso);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl, CURLOPT_HTTPHEADER, array("Tipo di contenuto: applicazione/json"));
                curl_setopt($ricciolo, CURLOPT_SSL_VERIFYPEER, falso);
                curl_setopt($ricciolo, CURLOPT_SSL_VERIFYHOST, falso);
                curl_setopt($ricciolo, CURLOPT_POST, vero);
                curl_setopt($ricciolo, CURLOPT_POSTFIELDS, $contenuto ); // questo è il contenuto $ che abbiamo creato nel codice sopra
                $json_response = curl_exec($ricciolo);
                $stato = curl_getinfo($ricciolo, CURLINFO_HTTP_CODE);
                curl_close($ricciolo);
                $risposta = json_decode($json_response, vero);
                print_r($risposta);