如何通过单个 API 访问多个运输公司的费率(使用免费运输 API)
已发表: 2017-02-27
最后更新 - 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);