كيفية الوصول إلى أسعار شركات الشحن المتعددة من خلال واجهة برمجة تطبيقات واحدة (مع واجهة برمجة تطبيقات الشحن المجاني)
نشرت: 2017-02-27
آخر تحديث - 24 فبراير 2020
في هذه المقالة ، سوف تفهم كيفية الوصول إلى واجهة برمجة التطبيقات هذه والحصول على أسعار محلية ودولية لحزمتك من شركات شحن مختلفة مثل FedEx و UPS و USPS. عليك فقط تحديد عنوان الشاحن وعنوان المستلم ونوع الخدمة وتفاصيل التفويض للناقل المحدد كبيانات JSON مشفرة.
لاستخدام واجهة برمجة التطبيقات هذه ، تحتاج إلى التسجيل في http://shippingapi.storep.com والحصول على مفتاح API مجاني في بريدك الإلكتروني ، ما عليك سوى تقديم معرف البريد الإلكتروني الخاص بك أثناء التسجيل.
احصل على: قائمة الخدمات المتاحة
1: احصل على جميع خدمات FedEx المتاحة:
Comand : 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 المتاحة:
Comand : 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 المتاحة:
Comand : 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
لاستخدام معدلات API ، نحتاج أولاً إلى فهم بنية طلب واجهة برمجة التطبيقات هذا
اسم | وصف |
---|---|
Common_Params | يحتوي على عناصر داخلية مشتركة بين جميع شركات الشحن |
Common_Params > البيئة | لوضع الاختبار: وضع الحماية ، لوضع الإنتاج: مباشر |
Common_Params > معرف البريد الإلكتروني | معرف البريد الإلكتروني المسجل لهذا API |
Common_Params > مفتاح | تم استلام مفتاح API أثناء التسجيل |
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 | كلمة مرور 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 )
اسم | وصف |
---|---|
طلب | يحتوي على عناصر داخلية مشتركة بين جميع شركات النقل (شركات الشحن) |
طلب > معرف | أي معرف فريد لتعريف هذه الحزمة (معرف عنصر المصفوفة هذا) |
طلب > شركة | اسم شركة الشحن (على سبيل المثال: "fedex" ، "ups" ، "usps") للحصول على أسعار من هذه الشركات لهذه الحزمة |
طلب > الوزن_الوحدات | وحدة الوزن (حاليًا يتم دعم "LB" فقط) |
طلب > نوع الخدمة | رمز الخدمة الخاص بخدمة شركة النقل المحددة المطلوب سعرها. الرجوع إلى وثائق API للناقلين. |
طلب > RateRequestTypes | "لا شيء" للأسعار المحددة للحساب و "LIST" لأسعار التجزئة |
طلب > حزم |
نموذج JSON (قبل التشفير) :
{ "Common_Params": { "البيئة": "وضع الحماية" ، "معرف البريد الإلكتروني": "[email protected]" ، "المفتاح": "b52ee1f3ab8454589d6a9bd5018d60be" ، "host": "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": "SILK BOARD" ، "Shipper_Address_City": "COLUMBUS" ، "Shipper_Address_StateOrProvinceCode": "OH" ، "Shipper_Address_PostalCode": "43218" ، "Shipper_Address_CountryCode": "US"، "Recipient_PersonName": "اسم المستلم" ، "Recipient_CompanyName": "XYZ" ، "Recipient_PhoneNumber": "0123456789"، "Recipient_Address_StreetLines": "123، XYZ ROAD"، "Recipient_Address_City": ""، "Recipient_Address_StateOrProvinceCode": "WA" ، "Recipient_Address_PostalCode": "98503" ، "Recipient_Address_CountryCode": "US"، "Recipient_Address_CountryName": "الولايات المتحدة (الولايات المتحدة)" ، "Recipient_Address_Residential": "false"، "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": [ { "المعرف": "53: 1"، "شركة": [ "USPS" ] ، "الوزن_الوحدات": "رطل" ، "نوع الخدمة": "الأولوية" ، "RateRequestTypes": "NONE"، "الحزم": [ { "الوزن": 2 ، "الوحدة": "LBS"، "الوصف": "الحزمة الخاصة بي" ، "no_of_packages": 1 ، "رقم التسلسل": 1 } ] } ، { "المعرف": "53،37: 1"، "شركة": [ "فيديكس" ] ، "الوزن_الوحدات": "رطل" ، "نوع الخدمة": "FEDEX_GROUND" ، "RateRequestTypes": "NONE"، "الحزم": [ { "الوزن": 1.5 ، "الوحدة": "LBS"، "الوصف": "الحزمة الخاصة بي" ، "no_of_packages": 1 ، "رقم التسلسل": 3 } ] } ] }
بعد إنشاء مثل هذا الكائن JSON ، تحتاج إلى تشفير هذا الكائن باستخدام مفتاح API الفريد الخاص بك. نحن نقدم خوارزمية التشفير أدناه ، حتى يسهل عليك المتابعة.
دالة PHP لتشفير طلب JSON هذا
<؟ php ترميز الوظيفة ($ key، $ data) { $ cipher = mcrypt_module_open (MCRYPT_RIJNDAEL_128، ''، MCRYPT_MODE_CBC، '') ؛ $ key256 = $ key؛ $ الرابع = '1156651 @ Xadapter' ؛ mcrypt_generic_init ($ cipher ، $ key256 ، $ iv) ؛ $ cipherText256 = mcrypt_generic ($ cipher، $ data)؛ mcrypt_generic_deinit (تشفير $) ؛ $ cipherHexText256 = bin2hex ($ cipherText256) ؛ إرجاع $ cipherHexText256 ؛ } ؟>
بعد ذلك ، ضع هذا الكائن المشفر في كائن JSON آخر (مع عنصرين ، "معرف البريد الإلكتروني" و "البيانات") وأرسله إلى الخادم.
<؟ php req = مجموعة () ؛ $ req ['emailid'] = '[email protected]'؛ معرف البريد الإلكتروني المسجل في API الخاص بك $ apikey = 'b52ee1f3ab8454589d6a9bd5018d60be' ؛ API المسجل الخاص بك KEY $ req ['data'] = $ this-> encode ($ apikey، $ JSON_Req)؛ المحتوى $ = json_encode ($ req) ؛ ؟>
يبدو طلب JSON النهائي كما يلي:
{"معرف البريد الإلكتروني": "[email protected]"، "بيانات":"" }
أرسل كائن JSON هذا إلى الخادم.
ألق نظرة على المثال أدناه لفهم كيفية إرسال الطلب في PHP:
$ curl = curl_init ("http://shippingapi.storep.com/api/shippings/rates") ؛
curl_setopt ($ curl، CURLOPT_HEADER، false) ؛
curl_setopt ($ curl، CURLOPT_RETURNTRANSFER، true) ؛
curl_setopt ($ curl، CURLOPT_HTTPHEADER، مجموعة ("نوع المحتوى: تطبيق / json")) ؛
curl_setopt ($ curl، CURLOPT_SSL_VERIFYPEER، false) ؛
curl_setopt ($ curl، CURLOPT_SSL_VERIFYHOST، false) ؛
curl_setopt ($ curl، CURLOPT_POST، صحيح) ؛
curl_setopt ($ curl ، CURLOPT_POSTFIELDS ، $ content ) ؛ // هذا هو المحتوى $ الذي أنشأناه في الكود أعلاه
$ json_response = curl_exec ($ curl) ؛
حالة $ = curl_getinfo ($ curl، CURLINFO_HTTP_CODE) ؛
curl_close ($ curl) ؛
الاستجابة $ = json_decode ($ json_response، true) ؛
print_r (استجابة $) ؛