如何通過單個 API 訪問多個運輸公司的費率(使用免費運輸 API)

已發表: 2017-02-27
Multi Carrier

最後更新 - 2020 年 2 月 24 日

在本文中,您將了解如何訪問此 API 並從 FedEx、UPS 和 USPS 等不同的運輸公司獲取您的包裹的國內和國際費率。 您只需將特定承運人的發件人地址、收件人地址、服務類型和授權詳細信息指定為加密的 JSON 數據。

要使用此 API,您需要在 http://shippingapi.storepep.com 上註冊並在您的電子郵件中獲取免費的 API 密鑰,您只需在註冊時提供您的電子郵件 ID。

GET : 可用服務列表

1:獲取所有可用的 FedExServices:
命令: curl http://shippingapi.storepep.com/api/shippings/fedex-services

輸出
{
"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:獲取所有可用的 UPS 服務:
命令: curl http://shippingapi.storepep.com/api/shippings/ups-services
輸出

{
'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:獲取所有可用的 USPS 服務:
命令: curl http://shippingapi.storepep.com/api/shippings/usps-services
輸出

{
'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

要使用 Rates API 首先我們需要了解這個 API 請求的結構

姓名描述
Common_Params 包含所有航運公司共有的內部元素
Common_Params >環境測試模式:沙盒,生產模式:live
Common_Params >emailid 為此 API 註冊的電子郵件 ID
Common_Params >key 註冊時收到的 API Key
Common_Params >主機可選(您的主機名)
Common_Params >os 可選(您的操作系統詳細信息)
Common_Params >Shipper_PersonName 發信人的姓名
Common_Params >Shipper_CompanyName 發件人公司
Common_Params >Shipper_PhoneNumber 發件人的電話號碼
Common_Params >Shipper_Address_StreetLines 發件人的街道地址
Common_Params >Shipper_Address_City 發件人所在城市
Common_Params >Shipper_Address_StateOrProvinceCode 發件人的州/省代碼(*不超過兩個字母)
Common_Params >Shipper_Address_PostalCode 發件人的郵政編碼
Common_Params >Shipper_Address_CountryCode 發件人的國家代碼(*只有兩個字母代碼)
Common_Params >Recipient_PersonName 收件人的姓名
Common_Params >Recipient_CompanyName 收款人公司
Common_Params >Recipient_PhoneNumber 收件人的電話號碼
Common_Params >Recipient_Address_StreetLines 收件人的街道地址
Common_Params >Recipient_Address_City 收件人所在城市
Common_Params >Recipient_Address_StateOrProvinceCode 收件人的州/省代碼()
Common_Params >Recipient_Address_PostalCode 收件人的郵政編碼
Common_Params >Recipient_Address_CountryCode 收款人的國家代碼
Common_Params >Recipient_Address_CountryName 收件人的國家名稱
Common_Params >Recipient_Address_Residential 真/假(是收件人的住址)
Common_Params >fedex_key 從 FedEx 收到的密鑰
Common_Params >fedex_password 聯邦快遞密碼
Common_Params >fedex_account_number 聯邦快遞帳號
Common_Params >fedex_meter_number FedEx 米數
Common_Params >ups_key 從 UPS 收到的密鑰
Common_Params >ups_password UPS密碼
Common_Params >ups_account_number UPS 帳號
Common_Params >ups_username 從 UPS 收到的用戶名
Common_Params >usps_username USPS 用戶名
請求數組此對象包含對多個公司和多個包的請求
Request_Array >請求數組在一個數組中傳遞多個請求

請求的結構(如Request_Array

姓名描述
要求包含所有承運人(船公司)共有的內部元素
請求>id 用於標識此包的任何唯一 ID(此數組元素的 ID)
要求>公司運輸承運人的名稱(例如:“fedex”、“ups”、“usps”)以從這些公司獲取此包裹的費率
請求>Weight_Units 重量單位(目前僅支持“LB”)
請求>服務類型需要費率的特定運營商服務的服務代碼。 請參閱運營商的 API 文檔。
請求>RateRequestTypes 'NONE' 代表賬戶特定利率,'LIST' 代表零售利率
請求> 包裹

示例 JSON(加密前)
 {
	“Common_Params”:{
		“環境”:“沙盒”,
		"emailid": "[email protected]",
		“關鍵”:“b52ee1f3ab8454589d6a9bd5018d60be”,
		“主機”:“www.storepep.com”,
		"os": "Windows NT 6.3 build 9600 (Windows 8.1 Home) i586",
		"Shipper_PersonName": "JOE CHRIST",
		"Shipper_CompanyName": "我的公司",
		"Shipper_PhoneNumber": "0123456789",
		"Shipper_Address_StreetLines": "絲綢板",
		"Shipper_Address_City": "哥倫布",
		"Shipper_Address_StateOrProvinceCode": "OH",
		"Shipper_Address_PostalCode": "43218",
		"Shipper_Address_CountryCode": "美國",
		"Recipient_PersonName": "收件人姓名",
		"Recipient_CompanyName": "XYZ",
		"Recipient_PhoneNumber": "0123456789",
		"Recipient_Address_StreetLines": "123 , XYZ ROAD",
		“收件人地址城市”:“”,
		"Recipient_Address_StateOrProvinceCode": "WA",
		"Recipient_Address_PostalCode": "98503",
		"Recipient_Address_CountryCode": "美國",
		"Recipient_Address_CountryName": "美國 (US)",
		“收件人地址_住宅”:“假”,
		"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”
	},
	“請求數組”:[
		{
			"id": "53:1",
			“公司”: [
				“美國郵政”
			],
			“重量單位”:“磅”,
			“服務類型”:“優先級”,
			“RateRequestTypes”:“無”,
			“包”:[
				{
					“重量”:2,
					“單位”:“磅”,
					“描述”:“我的包裹”,
					“no_of_packages”:1,
					“序列號”:1
				}
			]
		},
		{
			"id": "53,37:1",
			“公司”: [
				“聯邦快遞”
			],
			“重量單位”:“磅”,
			“服務類型”:“FEDEX_GROUND”,
			“RateRequestTypes”:“無”,
			“包”:[
				{
					“重量”:1.5,
					“單位”:“磅”,
					“描述”:“我的包裹”,
					“no_of_packages”:1,
					“序列號”:3
				}
			]
		}
	]
}

生成這樣的 JSON 對像後,您需要使用您唯一的 API 密鑰對該對象進行編碼。 我們在下面提供編碼算法,以便您輕鬆進行。

用於編碼此 JSON 請求的 PHP 函數

<?php
    函數編碼($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);
     返回 $cipherHexText256;
    }
?>

接下來,將此編碼對象放入另一個 JSON 對象(包含兩個元素,“emailid”和“data”)並將其發送到服務器。

 <?php
  $req=數組();
  $req['emailid']='[email protected]'; 您的 API 註冊電子郵件 ID
  $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; 您的 API 註冊密鑰
  $req['data']=$this->encode($apikey,$JSON_Req)​​;
  $content =json_encode($req);
?>

最終的 JSON 請求如下所示:

 {"emailid":"[email protected]",
    “數據”:””
   }

將此 JSON 對象發送到服務器。

查看以下示例以了解如何在 PHP 中發送請求:

 $curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
                curl_setopt($curl, CURLOPT_HEADER, false);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                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, true);
                curl_setopt($curl, CURLOPT_POSTFIELDS, $content ); // 這是我們在上面的代碼中創建的 $content
                $json_response = curl_exec($curl);
                $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
                curl_close($curl);
                $response = json_decode($json_response, true);
                print_r($response);