วิธีเข้าถึงอัตราของผู้ให้บริการจัดส่งหลายรายผ่าน API เดียว (พร้อม API การจัดส่งฟรี)
เผยแพร่แล้ว: 2017-02-27
ปรับปรุงล่าสุด - 24 กุมภาพันธ์ 2020
ในบทความนี้ คุณจะเข้าใจวิธีเข้าถึง API นี้และรับอัตราค่าบริการในและต่างประเทศสำหรับแพ็คเกจของคุณจากผู้ให้บริการจัดส่งต่างๆ เช่น FedEx, UPS และ USPS คุณเพียงแค่ต้องระบุที่อยู่ผู้จัดส่ง ที่อยู่ผู้รับ ประเภทบริการ และรายละเอียดการอนุญาตสำหรับผู้ให้บริการรายใดรายหนึ่งเป็นข้อมูล JSON ที่เข้ารหัส
หากต้องการใช้ API นี้ คุณต้องลงทะเบียนบน http://shippingapi.storepep.com และรับคีย์ API ฟรีในอีเมลของคุณ คุณเพียงแค่ระบุ ID อีเมลของคุณระหว่างการสมัคร
GET : รายการบริการที่มีอยู่
1: รับบริการ FedEx ที่มีอยู่ทั้งหมด:
คำสั่ง : 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'
}
โพสต์: อัตรา API
ในการใช้ Rates API ก่อนอื่น เราต้องเข้าใจโครงสร้างของคำขอ API นี้ก่อน
| ชื่อ | คำอธิบาย |
|---|---|
| Common_Params | ประกอบด้วยองค์ประกอบภายในทั่วไปสำหรับบริษัทขนส่งทั้งหมด |
| Common_Params >สภาพแวดล้อม | สำหรับโหมดทดสอบ: sandbox สำหรับโหมดการผลิต: live |
| Common_Params >emailid | รหัสอีเมลที่ลงทะเบียนสำหรับ API นี้ |
| Common_Params >คีย์ | ได้รับคีย์ API ระหว่างการลงทะเบียน |
| Common_Params >host | ไม่บังคับ (ชื่อโฮสต์ของคุณ) |
| Common_Params >os | ไม่บังคับ (รายละเอียดระบบปฏิบัติการของคุณ) |
| Common_Params >ผู้ส่ง_PersonName | ชื่อผู้ส่ง |
| Common_Params > Shipper_CompanyName | บริษัทผู้ส่ง |
| Common_Params > Shipper_PhoneNumber | หมายเลขโทรศัพท์ของผู้ส่ง |
| Common_Params > Shipper_Address_StreetLines | ที่อยู่ผู้ส่ง |
| Common_Params > Shipper_Address_City | เมืองของผู้ส่ง |
| Common_Params >Shipper_Address_StateOrProvinceCode | รหัสรัฐ/จังหวัดของผู้ส่ง (*ไม่เกิน 2 ตัวอักษร) |
| Common_Params > Shipper_Address_PostalCode | รหัสไปรษณีย์ของผู้ส่ง |
| Common_Params > Shipper_Address_CountryCode | รหัสประเทศของผู้ส่ง (*เฉพาะรหัสสองตัวอักษร) |
| Common_Params >ผู้รับ_PersonName | ชื่อผู้รับ |
| Common_Params >Recipient_CompanyName | บริษัทผู้รับ |
| Common_Params >Recipient_PhoneNumber | หมายเลขโทรศัพท์ของผู้รับ |
| Common_Params >Recipient_Address_StreetLines | ที่อยู่ผู้รับ |
| Common_Params >ผู้รับ_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 | รหัสผ่าน FedEx |
| Common_Params >fedex_account_number | เลขที่บัญชีเฟดเอ็กซ์ |
| Common_Params >fedex_meter_number | หมายเลขมิเตอร์ของเฟดเอ็กซ์ |
| 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 > อาร์เรย์ของ คำขอ | ส่งคำขอหลายรายการในอาร์เรย์เดียว |

โครงสร้างคำขอ (เช่นใน Request_Array )
| ชื่อ | คำอธิบาย |
|---|---|
| ขอ | มีองค์ประกอบภายในทั่วไปสำหรับผู้ขนส่งทั้งหมด (บริษัทขนส่ง) |
| ขอ >id | ID ที่ไม่ซ้ำเพื่อระบุแพ็คเกจนี้ (ID ขององค์ประกอบอาร์เรย์นี้) |
| คำขอ >บริษัท | ชื่อของผู้ให้บริการจัดส่ง (เช่น 'fedex', 'ups', 'usps') เพื่อรับอัตราจากบริษัทเหล่านี้สำหรับแพ็คเกจนี้ |
| คำขอ >น้ำหนัก_หน่วย | หน่วยของน้ำหนัก (ปัจจุบันรองรับเฉพาะ 'LB') |
| คำขอ >ประเภทบริการ | รหัสบริการสำหรับบริการของผู้ให้บริการขนส่งเฉพาะที่ต้องการอัตรา อ้างถึงเอกสาร API ของผู้ให้บริการ |
| คำขอ >RateRequestTypes | 'NONE' สำหรับอัตราเฉพาะบัญชีและ 'LIST' สำหรับราคาขายปลีก |
| ขอ >แพ็คเกจ |
ตัวอย่าง JSON (ก่อนการเข้ารหัส) :
{
"Common_Params": {
"สภาพแวดล้อม": "แซนด์บ็อกซ์",
"emailid": "[email protected]",
"กุญแจ": "b52ee1f3ab8454589d6a9bd5018d60be",
"host": "www.storepep.com",
"os": "Windows NT 6.3 build 9600 (Windows 8.1 Home) i586",
"Shipper_PersonName": "พระเยซูคริสต์",
"Shipper_CompanyName": "บริษัทของฉัน",
"Shipper_PhoneNumber": "0123456789",
"Shipper_Address_StreetLines": "กระดานไหม",
"Shipper_Address_City": "COLUMBUS",
"Shipper_Address_StateOrProvinceCode": "OH",
"Shipper_Address_PostalCode": "43218",
"Shipper_Address_CountryCode": "สหรัฐฯ",
"Recipient_PersonName": "ชื่อผู้รับ",
"Recipient_CompanyName": "XYZ",
"Recipient_PhoneNumber": "0123456789",
"Recipient_Address_StreetLines": "123 , ถนน XYZ",
"Recipient_Address_City": "",
"Recipient_Address_StateOrProvinceCode": "WA",
"Recipient_Address_PostalCode": "98503",
"Recipient_Address_CountryCode": "สหรัฐฯ",
"Recipient_Address_CountryName": "สหรัฐอเมริกา (US)",
"Recipient_Address_Residential": "เท็จ",
"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",
"บริษัท": [
"อุ๊ปส์"
],
"Weight_Units": "LB",
"ServiceType": "ลำดับความสำคัญ",
"RateRequestTypes": "ไม่มี",
"แพ็คเกจ": [
{
"น้ำหนัก": 2,
"หน่วย": "ปอนด์",
"Description": "แพ็คเกจของฉัน",
"no_of_packages": 1,
"SequenceNumber": 1
}
]
},
{
"id": "53,37:1",
"บริษัท": [
"เฟดเอ็กซ์"
],
"Weight_Units": "LB",
"ServiceType": "FEDEX_GROUND",
"RateRequestTypes": "ไม่มี",
"แพ็คเกจ": [
{
"น้ำหนัก": 1.5,
"หน่วย": "ปอนด์",
"Description": "แพ็คเกจของฉัน",
"no_of_packages": 1,
"SequenceNumber": 3
}
]
}
]
}
หลังจากสร้างวัตถุ JSON ดังกล่าวแล้ว คุณต้องเข้ารหัสวัตถุนี้โดยใช้คีย์ API เฉพาะของคุณ เราจัดเตรียมอัลกอริทึมการเข้ารหัสไว้ด้านล่าง เพื่อให้คุณดำเนินการต่อไปได้ง่าย
ฟังก์ชัน PHP เพื่อเข้ารหัสคำขอ JSON นี้
<?php
ฟังก์ชั่นเข้ารหัส($คีย์,$ข้อมูล)
{
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$key256 = $คีย์;
$iv = '1156651@Xadapter';
mcrypt_generic_init($cipher, $key256, $iv);
$cipherText256 = mcrypt_generic($cipher,$data );
mcrypt_generic_deinit($cipher);
$cipherHexText256 =bin2hex($cipherText256); $cipherHexText256;
ส่งคืน $cipherHexText256;
}
?>ถัดไป วางอ็อบเจ็กต์ที่เข้ารหัสนี้ลงในออบเจ็กต์ JSON อื่น (ที่มีสององค์ประกอบคือ 'emailid' และ 'data') และส่งไปยังเซิร์ฟเวอร์
<?php $req=array(); $req['emailid']='[email protected]'; ID อีเมลที่ลงทะเบียน API ของคุณ $apikey='b52ee1f3ab8454589d6a9bd5018d60be'; API ของคุณที่ลงทะเบียน KEY $req['data']=$this->เข้ารหัส($apikey,$JSON_Req); $เนื้อหา =json_encode($req); ?>
คำขอ JSON สุดท้ายมีลักษณะดังนี้:
{"emailid":"[email protected]",
"ข้อมูล":""
}ส่งวัตถุ JSON นี้ไปยังเซิร์ฟเวอร์
ดูตัวอย่างด้านล่างเพื่อทำความเข้าใจวิธีส่งคำขอใน PHP:
$curl = curl_init("http://shippingapi.storepep.com/api/shippings/rates");
curl_setopt($curl, CURLOPT_HEADER, เท็จ);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, จริง);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("ประเภทเนื้อหา: แอปพลิเคชัน/json"));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, เท็จ);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, เท็จ);
curl_setopt($curl, CURLOPT_POST, จริง);
curl_setopt($curl, CURLOPT_POSTFIELDS, $เนื้อหา ); // นี่คือเนื้อหา $ ที่เราสร้างในโค้ดด้านบน
$json_response = curl_exec($curl);
สถานะ $ = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($ขด);
$response = json_decode($json_response, จริง);
print_r($ ตอบกลับ);
