Zugriff auf Tarife mehrerer Spediteure über eine einzige API (mit kostenloser Versand-API)

Veröffentlicht: 2017-02-27
Multi Carrier

Zuletzt aktualisiert - 24. Februar 2020

In diesem Artikel erfahren Sie, wie Sie auf diese API zugreifen und nationale und internationale Tarife für Ihr Paket von verschiedenen Versanddienstleistern wie FedEx, UPS und USPS erhalten. Sie müssen lediglich die Absenderadresse, die Empfängeradresse, die Art des Dienstes und die Autorisierungsdetails für den jeweiligen Spediteur als verschlüsselte JSON-Daten angeben.

Um diese API zu verwenden, müssen Sie sich auf http://shippingapi.storepep.com registrieren und erhalten einen kostenlosen API-Schlüssel in Ihrer E-Mail. Sie müssen nur Ihre E-Mail-ID bei der Anmeldung angeben.

GET : Liste der verfügbaren Dienste

1: Holen Sie sich alle verfügbaren FedExServices:
Befehl : curl http://shippingapi.storepep.com/api/shippings/fedex-services

Ausgang :
{
"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: Holen Sie sich alle verfügbaren UPS Services:
Befehl : curl http://shippingapi.storepep.com/api/shippings/ups-services
Ausgang :

{
'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: Holen Sie sich alle verfügbaren USPS-Dienste:
Befehl : curl http://shippingapi.storepep.com/api/shippings/usps-services
Ausgang :

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

Um die Rates API verwenden zu können, müssen wir zuerst die Struktur dieser API-Anforderung verstehen

Name Beschreibung
Common_Params Enthält innere Elemente, die allen Reedereien gemeinsam sind
Common_Params > Umgebung für Testmodus: Sandbox, für Produktionsmodus: Live
Common_Params >E-Mail-ID Für diese API registrierte E-Mail-ID
Common_Params >Schlüssel API-Schlüssel, den Sie während der Registrierung erhalten haben
Common_Params >host Optional (Ihr Hostname)
Common_Params >os Optional (Ihre Betriebssystemdetails)
Common_Params >Shipper_PersonName Name des Absenders
Common_Params >Shipper_CompanyName Firma des Absenders
Common_Params >Shipper_PhoneNumber Telefonnummer des Absenders
Common_Params >Shipper_Address_StreetLines Adresse des Absenders
Common_Params >Shipper_Address_City Stadt des Absenders
Common_Params >Shipper_Address_StateOrProvinceCode Bundesland-/Provinzcode des Absenders (*nicht mehr als zwei Buchstaben)
Common_Params >Shipper_Address_PostalCode Postleitzahl des Absenders
Common_Params >Shipper_Address_CountryCode Ländercode des Absenders (*nur zweistelliger Code)
Common_Params >Empfänger_PersonName Name des Empfängers
Common_Params >Name des Empfängerunternehmens Firma des Empfängers
Common_Params >Recipient_PhoneNumber Telefonnummer des Empfängers
Common_Params >Recipient_Address_StreetLines Adresse des Empfängers
Common_Params >Recipient_Address_City Stadt des Empfängers
Common_Params >Recipient_Address_StateOrProvinceCode Bundesland/Provinzcode des Empfängers ()
Common_Params >Recipient_Address_PostalCode Postleitzahl des Empfängers
Common_Params >Recipient_Address_CountryCode Ländercode des Empfängers
Common_Params >Recipient_Address_CountryName Ländername des Empfängers
Common_Params >Recipient_Address_Residential Richtig/Falsch (ist die Wohnadresse des Empfängers)
Common_Params >fedex_key Schlüssel von FedEx erhalten
Common_Params >fedex_passwort FedEx-Passwort
Common_Params >fedex_account_number FedEx-Kontonummer
Common_Params >fedex_meter_number FedEx Zählernummer
Common_Params >ups_key Schlüssel von UPS erhalten
Common_Params >ups_passwort USV-Passwort
Common_Params >ups_account_number UPS Kundennummer
Common_Params >ups_Benutzername Von UPS erhaltener Benutzername
Common_Params > usps_Benutzername USPS-Benutzername
Request_Array Dieses Objekt enthält Anforderungen für mehrere Unternehmen und mehrere Pakete
Request_Array > Array der Anfrage Mehrere Anforderungen werden in einem Array übergeben

Struktur der Anfrage (wie in Request_Array )

Name Beschreibung
Anfrage Enthält innere Elemente, die allen Spediteuren (Reedereien) gemeinsam sind
Anfrage >id Jede eindeutige ID zur Identifizierung dieses Pakets (ID dieses Array-Elements)
Anfrage >Firma Name des Spediteurs (z. B. „fedex“, „ups“, „usps“), um Preise von diesen Unternehmen für dieses Paket zu erhalten
Anfrage >Weight_Units Gewichtseinheit (derzeit wird nur 'LB' unterstützt)
Anforderung > Diensttyp Dienstcode für den spezifischen Dienst des Spediteurs, für den der Tarif erforderlich ist. Siehe die API-Dokumentation der Transportunternehmen.
Anfrage >RateRequestTypes „NONE“ für kontospezifische Tarife und „LIST“ für Einzelhandelstarife
>Pakete anfordern

Beispiel-JSON (vor der Verschlüsselung) :
 {
	"Common_Params": {
		"Umgebung": "Sandkasten",
		"emailid": "[email protected]",
		"Schlüssel": "b52ee1f3ab8454589d6a9bd5018d60be",
		"host": "www.storepep.com",
		"os": "Windows NT 6.3 Build 9600 (Windows 8.1 Home) i586",
		"Shipper_PersonName": "JOE CHRIST",
		"Shipper_CompanyName": "MEIN UNTERNEHMEN",
		"Shipper_PhoneNumber": "0123456789",
		"Shipper_Address_StreetLines": "Seidenkarton",
		"Shipper_Address_City": "COLUMBUS",
		"Shipper_Address_StateOrProvinceCode": "OH",
		"Shipper_Address_PostalCode": "43218",
		"Shipper_Address_CountryCode": "USA",
		"Recipient_PersonName": "Name des Empfängers",
		"Recipient_CompanyName": "XYZ",
		"Recipient_PhoneNumber": "0123456789",
		"Recipient_Address_StreetLines": "123 , XYZ-STRASSE",
		"Empfänger_Adresse_Stadt": "",
		"Recipient_Address_StateOrProvinceCode": "WA",
		"Recipient_Address_PostalCode": "98503",
		"Recipient_Address_CountryCode": "USA",
		"Recipient_Address_CountryName": "Vereinigte Staaten (USA)",
		"Recipient_Address_Residential": "falsch",
		"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"
	},
	"Anfrage_Array": [
		{
			"id": "53:1",
			"Gesellschaft": [
				"usps"
			],
			"Weight_Units": "LB",
			"ServiceType": "Priorität",
			"RateRequestTypes": "NONE",
			"Pakete": [
				{
					"Gewicht": 2,
					"Einheit": "LBS",
					"Beschreibung": "Mein Paket",
					"no_of_packages": 1,
					"Sequenznummer": 1
				}
			]
		},
		{
			"id": "53,37:1",
			"Gesellschaft": [
				"fedex"
			],
			"Weight_Units": "LB",
			"ServiceType": "FEDEX_GROUND",
			"RateRequestTypes": "NONE",
			"Pakete": [
				{
					"Gewicht": 1,5,
					"Einheit": "LBS",
					"Beschreibung": "Mein Paket",
					"no_of_packages": 1,
					"Sequenznummer": 3
				}
			]
		}
	]
}

Nachdem Sie ein solches JSON-Objekt generiert haben, müssen Sie dieses Objekt mit Ihrem eindeutigen API-Schlüssel codieren. Wir stellen den Codierungsalgorithmus unten bereit, damit Sie leicht fortfahren können.

PHP-Funktion zum Codieren dieser JSON-Anfrage

 <?php
    Funktion encode($key,$data)
    {
     $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
     $key256 = $schlüssel;
     $iv = '1156651@Xadapter';
     mcrypt_generic_init($chiffre, $key256, $iv);
     $cipherText256 = mcrypt_generic($cipher,$data);
     mcrypt_generic_deinit($chiffre);
     $cipherHexText256 =bin2hex($cipherText256);
     gebe $cipherHexText256 zurück;
    }
?>

Fügen Sie als Nächstes dieses codierte Objekt in ein anderes JSON-Objekt (mit zwei Elementen, „emailid“ und „data“) ein und senden Sie es an den Server.

 <?php
  $req=array();
  $req['emailid']='[email protected]'; Ihre API-registrierte E-Mail-ID
  $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; Ihr API-registrierter SCHLÜSSEL
  $req['data']=$this->encode($apikey,$JSON_Req);
  $content =json_encode($req);
?>

Die endgültige JSON-Anforderung sieht folgendermaßen aus:

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

Senden Sie dieses JSON-Objekt an den Server.

Sehen Sie sich das folgende Beispiel an, um zu verstehen, wie eine Anfrage in PHP gesendet wird:

 $curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
                curl_setopt($curl, CURLOPT_HEADER, falsch);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, wahr);
                curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
                curl_setopt($curl, CURLOPT_POST, wahr);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $content ); // Dies ist der $content, den wir oben im Code erstellt haben
                $json_response = curl_exec($curl);
                $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
                curl_close($locke);
                $response = json_decode($json_response, true);
                print_r($antwort);