FedEx API-k integrációja – bevált gyakorlat
Ennek a rövid hivatkozási útmutatónak az a célja, hogy segítsen megérteni az API-kat használó fejlesztőknek, miként szerezhetnek jobb tapasztalatokat a FedEx-szel való integráció során, és hogy biztosítsa az integrációs megoldások minőségét a tervezés, a sebesség és a biztonság vonatkozásában.
Hogy hatékony lehessen a FedEx API-kkal való integráció, a fejlesztőknek követniük kell az alábbi bevált gyakorlatokat:
API URI-k
- Külön API URI-k állnak rendelkezésre a tesztelési és a termelési környezethez.
- A fejlesztőknek a tesztelési URI-kat kell használniuk fejlesztéshez és integrációs teszteléshez, a termelési URI-k a termelési környezetben történő használatra valók.
Az API URI-k listája itt található:
Tesztelési: https://apis-sandbox.fedex.com/
Termelési: https://apis.fedex.com/
Hitelesítési adatok kezelése
API-kulcs és titkos kulcs
- Az Ön API-kulcsa és titkos kulcsa alkalmazásának azonosítására szolgál, és az OAuth lexikális elem (token) lekérésekor kell használni őket.
- Az API-kulcsot és a titkos kulcsot szigorúan titokban kell tartani. Ne terjessze az API-kulcsot vagy a titkos kulcsot e-mailben vagy elosztott kódban, ideértve az ügyfél oldali JavaScriptet is!
- Veszélybe kerülhet az alkalmazása, ha ellopják az API-kulcsát vagy a titkos kulcsát. Ha azt gyanítja, hogy hitelesítési adatait ellopták vagy veszélyeztetik, azonnal hozza létre újra a titkos kulcsot!
- Ne naplózza az érzékeny adatokat, például a titkos kulcsot!
- Ne írja bele közvetlenül se az API-kulcsot, se a titkos kulcsot a kódjába!
- Alkalmazásának képesnek kell lennie arra, hogy dinamikusan frissítse az API-kulcsot és a titkos kulcsot.
- Az ügyfélhitelesítő adatokat széfben vagy biztonságos helyen kell tárolni úgy, hogy ne kerülhessenek veszélybe.
Az OAuth lexikális elem (token)
- A hozzáférési lexikális elem csak a webalkalmazás-kiszolgálón tárolandó, a böngésző számára nem szabad elérhetővé tenni.
- Ne írja bele közvetlenül a lexikális elemet az alkalmazásaiba!
- Védje a hozzáférési lexikális elemeket, hogy ne kerülhessenek veszélybe, ne sérülhessenek meg!
- Ne hívja meg többször az OAuth lexikális elem API-t, hogy új hozzáférési lexikális elemet kapjon! Javasolt a hozzáférési lexikális elemet gyorsítótárazni, amíg elő nem fordul a 401-es HTTP-hiba. Ekkor állítsa elő újra az OAuth lexikális elemet!
- Ne tegye a lexikális elemet elérhetővé a végfelhasználó vagy az alkalmazás számára!
- Minden API-tranzakció esetén HTTPS protokollt használjon!
Kódolási gyakorlatok
- Hogy megfeleljen a legújabb és legbiztonságosabb adattitkosítási kommunikációs protokollnak, javasoljuk, hogy a TLS (Transport Layer Security) 1.2-es vagy újabb verzióját használja.
- Ne feledje el beállítani az egyes API-kérésekhez szükséges megfelelő API-fejléceket! A fejlécekre vonatkozó információkat az egyes API-k dokumentációs oldalán találja.
- A HTTP POST-ban a „Content-Type”-nak „application/json”-nak kell lennie.
- Amikor használni kezd egy-egy API-t, nézze meg a mintakódot. Minden API végponthoz több olyan minta tartozik, amelynek segítségével megértheti a szükséges elemeket, formátumokat és egyéb részleteket.
- Szokatlan hibák fordulhatnak elő, amikor a felhasználók vagy a fejlesztők túl sok tizedes jegyet használnak az értékekben. A tömeg és a pénznem értékénél csak két kifejezett tizedes jegy megengedett. A méretek – így a hosszúság, a szélesség és a magasság – nem támogatják a tizedes jegyeket.
- Ne küldjön el üres elemeket!
- Csak a kérés feldolgozásához szükséges adatokat küldjön!
- Fejlesztéskor adja meg, hogyan kell reagálni, ha egy nem kötelező válaszelemet, például egy tarifaértéket nem kap vissza! Az adatok felhasználása előtt elemezze ki a tranzakció válaszát, és állapítsa meg, nem hiányoznak-e belőle elemek!
- Általában kerülje a FedEx API integrációtól való erős függőséget!
- A késés csökkentése és a pontosabb eredmények érdekében a következőket kell használni:
- Szűrés – Akkor használja, ha a keresett paraméterek segítségével le kívánja szűkíteni a keresést.
- Rendezés – Akkor használja, ha a találatokat bizonyos paraméter szerint növekvő vagy csökkenő sorrendbe szeretné állítani.
- A tranzakció elküldése előtt ellenőrizze, hogy a kötelezően kitöltendő mezőkben van-e adat – például meg van-e adva a címzett irányítószáma vagy a csomag tömege! Ellenőrizze, hogy a megadott adat megfelelő-e a kérdéses mező esetén! Ezzel minimalizálhatja a tranzakciók hibáit.
- A FedEx rendszerének elérhetőségére és megbízhatóságára gyakorolt nemkívánatos hatás elkerülése érdekében:
- Ne végezzen teljesítménytesztelést se a tesztelési, se a termelési környezetben!
- Alkalmazzon olyan kódolási logikát, amely nem engedi meg, hogy ugyanaz a tranzakció ismételten sikertelen legyen!
- A szabályozásra vonatkozó korlát: 1400 tranzakció 10 másodpercenként. Amennyiben a tranzakciók száma már az első néhány másodpercben eléri ezt a korlátot, akkor a rendszer 429 Too many requests (Túl sok kérés) HTTP-hibakódot küld, és nem hajt végre tranzakciókat a 10 másodperces időintervallum fennmaradó részében, majd folytatja a tranzakciók végrehajtását.
- Ne írja bele közvetlenül a kódba a küldeményekre vonatkozó üzleti szabályokat, például a szolgáltatásfajtákat, csomagolásfajtákat, tömegre vonatkozó korlátokat stb., mert az ilyen szabályok változhatnak.
Példa: Tömeg: 45,26, pénznem értéke/összege: 100,52, hosszúság: 10, szélesség: 25, magasság: 15.
Példa: „Streetlines”:„”
USA-beli belföldi küldemények esetében például ne küldje el a kereskedelmi számlát, és ne küldjön árucikkekre vonatkozó olyan adatokat, amelyekre csak nemzetközi küldemények esetében van szükség!
Egy csomagot például fel lehet adni, ha nem működik a tarifamegállapítás. Az adatok felhasználása előtt tesztelje a tranzakció válaszát, hogy megállapíthassa, nem hiányoznak-e belőle elemek!
Az USA-beli irányítószámok esetén például ellenőrizze, hogy a mezőben csak számjegyek vannak-e, és hogy 5 számjegyű vagy ZIP+4 irányítószám-formátumú-e!
Ha például az első négy másodpercben 1400 kérés érkezik, akkor megjelenik a 429 Too many requests (Túl sok kérés) – „Rövid idő alatt túl sok kérés érkezett. Várjon egy kicsit, és próbálja meg újra.” HTTP-hibakód, és a következő hat másodpercre a rendszer felfüggeszti a tranzakciók végrehajtását, majd annak letelte után folytatja.
Hibakezelés
Minden API-válasz tartalmaz egy HTTP állapotkódot és választerhelést. Egyes válaszokhoz hiba, figyelmeztetés, illetve megjegyzés társul. A figyelmeztetések és a megjegyzések nem utalnak hibára, a hiba- vagy figyelmeztető üzeneteket azonban naplózni kell és meg kell vizsgálni. A megfelelő hibakezelés biztosítja, hogy a FedEx-szel való integrációja zökkenőmentesen haladjon, és segíthet elkerülni a leállást is.
HTTP állapotkódok
200 OK
Kérésének feldolgozása sikeresen megtörtént. Ez a sikeres HTTP-kérések esetén adott szabványos válasz.
- Megjegyzés: Az API-válasz tartalmazhat informatív tartalmú megjegyzéseket és figyelmeztetéseket. Feltétlenül naplózza és elemezze ki az üzeneteket!
400 Bad request (Rossz kérés)
Olyan rossz kérést kaptunk, amelyet nem tudunk feldolgozni. Módosítsa a kérést, és próbálja meg újra!
- Megjegyzés: A kérés kijavításához nézze meg a hibakódot és a hibaüzenetet, és próbálja meg újra! A kódban csak a hibakódokat használja, a hibaüzeneteket ne, mert a hibaüzenetek jelentősen megváltozhatnak!
401 Unauthorized
(Illetéktelen/Nem hitelesített) Nem sikerült hitelesítenünk hitelesítési adatait. Ellenőrizze újra API-kulcsait, és próbálja meg újra!
Forbidden (Tiltott)
Nem tudtuk engedélyezni hitelesítő adatait. Ellenőrizze jogosultságait, és próbálja meg újra!
404 Not found (Nem található)
A kért erőforrás már nem érhető el. Módosítsa a kérést, és próbálja meg újra!
405 Method not allowed
(Nem megengedett metódus) Nem támogatott metódusra érkezett kérés. Csak az egyes végpontokhoz biztosított metódusokat használja!
Egy küldemény létrehozásához például a POST metódust kell használni az API dokumentációjában leírt módon.
409 Conflict
(Ütközés) – {provide reason of conflict}. Módosítsa a kérést, és próbálja meg újra!
415 Unsupported media type
(Nem támogatott hordozótípus) Nem támogatjuk a kérésben szereplő tartalomtípust. Módosítsa a formátumot, és próbálja meg újra!
422 Unprocessable entity
(Fel nem dolgozható entitás) Megértettük kérésnek formátumát, de nem tudtuk feldolgozni az entitást. Módosítsa a kérést, és próbálja meg újra!
429 Too many requests (Túl sok kérés)
Rövid idő alatt túl sok kérés érkezett. Feltétlenül nézze meg a Tranzakciós kvóták és díjkorlátok szakaszt.
500 Failure
(Sikertelen) Nem várt hiba következett be, és dolgozunk a probléma megoldásán. Elnézést kérünk a kényelmetlenségért. Kérjük, térjen vissza később, és figyelje a FedEx-től érkező tájékoztatásokat!
503 Service unavailable
(A szolgáltatás nem érhető el) A szolgáltatás jelenleg nem érhető el, és dolgozunk a probléma megoldásán. Elnézést kérünk a kényelmetlenségért. Kérjük, térjen vissza később, és figyelje a FedEx-től érkező tájékoztatásokat!
Tarifa
- Árajánlat kétféleképp kérhető:
- Tarifa egy konkrét serviceType szolgáltatásfajtára – A találatokat a rendszer a serviceType jelzett értéke szerint szűri. Ezzel csökkenti a válasz méretét és a tranzakció válaszidejét.
Példa: STANDARD_OVERNIGHT
- Minden tarifa – Ha nincs megjelölve serviceType szolgáltatásfajta, akkor a rendszer az összes vonatkozó szolgáltatást és a hozzá tartozó tarifát visszaadja.
- Tarifa egy konkrét serviceType szolgáltatásfajtára – A találatokat a rendszer a serviceType jelzett értéke szerint szűri. Ezzel csökkenti a válasz méretét és a tranzakció válaszidejét.
- A Szolgáltatás elérhetősége API segítségével határozható meg, hogy mely szolgáltatások, csomagolási lehetőségek és különleges szolgáltatások érhetőek el egy adott származási hely–rendeltetési hely pár esetén, és ennek segítségével adható át a serviceType szolgáltatásfajta és a csomagolási lehetőség az árajánlatkérésben.
A STANDARD_OVERNIGHT (többek között) például nem érhető el miden irányítószám-kombináció esetén.
- Ha különleges szolgáltatást szeretne alkalmazni egy küldeményre, akkor a különleges szolgáltatás típusát és részletes adatait is meg kell adnia.
- Megjegyzés: Egyes különleges szolgáltatások nem rendelkeznek részletes adatokkal.
- Nézze meg a Tarifa API dokumentációját!
Feladás
- A Szolgáltatás elérhetősége API segítségével határozható meg, hogy mely szolgáltatások érhetőek el egy adott származási hely–rendeltetési hely pár esetén, és ennek segítségével adható át a serviceType szolgáltatásfajta a szállítási kérésben.
- Ha különleges szolgáltatást szeretne alkalmazni egy küldeményre, akkor a különleges szolgáltatás típusát és részletes adatait is meg kell adnia.
- Megjegyzés: Egyes különleges szolgáltatások nem rendelkeznek részletes adatokkal.
- FedEx Ground szolgáltatások esetén a szállítási nap végén hajtsa végre a zárást, még mielőtt felvennék a küldeményt!
- Nézze meg a Szállítási API dokumentációját!
Nyomon követés
- Egyedi nyomon követési kérésbe ne foglaljon bele 30-nál több fuvarlevélszámot! Ezzel csökkenti a válasz méretét és a tranzakció válaszidejét.
- Egy csomagot csak annyiszor kövessen nyomon, ahányszor az üzleti szempontból szükséges!
- Kötegelt nyomon követés esetén a kötegből távolítson el minden olyan csomagot, amely már „kézbesítve” nyomon követési státuszt adott vissza.
- Nézze meg a Nyomon követési API dokumentációját!
Címellenőrzés
- A FedEx a címellenőrző eszközt javasolt, nem pedig végleges döntést meghozó eszközként biztosítja. A végfelhasználónak kell meghoznia a végső döntést arról, hogy egy, a megadott adatok között található cím használható-e, és megfelel-e üzleti igényeinek. A nem ellenőrizhető címek kezelésére is kell lennie eljárásnak, hogy a megrendelések ilyen esetben is feldolgozhatóak legyenek.
- Hogy zökkenőmentesebb legyen a szállítás, ügyeljen arra, hogy a szállítási folyamat ne függjön olyan nem kötelező szolgáltatástól, mint a címellenőrzés.
- Nézze meg a Címellenőrzési API dokumentációját!
Ha például a Címellenőrzési API nem áll rendelkezésre a rendelés vagy a küldemény feladásánál, kell lennie egy olyan „B tervnek”, amellyel befejezhető a küldeményfeladás.
FedEx kirendeltségek keresése
- Konkrét attribútumok (például a kirendeltség fajtája, a kínált szolgáltatások stb.) megadásával szűkítse le a keresést, hogy a kirendeltségek használható kínálatát kapja, és hogy rövidebb legyen a válaszidő!
- Nézze meg a FedEx kirendeltség-kereső API dokumentációját.
Küldeményfelvételi kérés
- Küldeményfelvétel beütemezésekor ne adjon meg múltbeli elkészülési időpontot, múltbeli vagy a távoli jövőbeli dátumot!
- Név nélküli küldeményfelvétel nem megengedett.
- Nézze meg a Küldeményfelvételi kérés API dokumentációját!
A szolgáltatások elérhetősége
- Ahhoz, hogy több szolgáltató vállalatra, például a FedEx Express (FDXE), FedEx Ground (FDXG), FedEx Freight (FXFR) és FedEx Ground® Economy vállalatra vonatkozóan kapjon találatokat, vagy hagyja ki a carrierCodes elemet, vagy küldjön a szolgáltatások elérhetőségére vonatkozó különálló kéréseket, mert több szállítókód nem adható meg.
- Figyeljen arra, hogy legyen előzetes jóváhagyása az egyenként legalább 151 fontos raklapokra és a 2200 fontnál nehezebb raklapokra!
- Ha változó lehetőségek esetén a SATURDAY_DELIVERY értéket adja meg, akkor a szombati kézbesítési lehetőségeket és a normál lehetőségeket is megkapja minden olyan szolgáltatás esetében, amelynél lehetőség van szombati kézbesítésre. Különleges szolgáltatások esetén ne adja meg a SATURDAY_DELIVERY értéket, mert ha megadja, akkor csak a használható szombati kézbesítési lehetőségeket fogja visszaadni a rendszer.
- Nézze meg a Szolgáltatás elérhetősége API dokumentációját!
Ügyféltámogatás
Ha kérdése merül fel, vagy ha segítségre van szüksége, forduljon hozzánk bizalommal! Azt, hogy miként léphet velünk kapcsolatba, a Támogatás oldalon ismerheti meg. Ezen az oldalon különféle erőforrásokat is találhat.