Az API a rendelési információk átvitelére szolgál a Slevomat és kereskedelmi partnerünk rendszere között. Az API megköveteli a kétirányú kommunikáció megvalósítását – a Slevomat rendszer a partner API-ját, a partner pedig a Slevomat API-t hívja meg.
A partner API-ba exportált rendelések a Slevomat partner felületén már nem manipulálhatók, csak megtekinthetők. Az exportált rendelések manipulálása csak az API-n keresztül történhet.
Minden kérést HTTPS-en kell benyújtani, és minden adat JSON formátumban van.
API hozzáférés
Az API hitelesítő adatait a partnerfelület Beállítások lapjáról érheti el. Az adatok beszerzéséhez meg kell adnia az API partner részének gyökér URL-jét a Slevomat → Partner irányba való használathoz, pl.
https://example.com/slevomat-zbozi-api
A hozzáférési adatok csak egyszer jelennek meg, amikor belép az API-ba, gondosan mentse el.
Az API elérése után a rendszer megkezdi az újonnan létrehozott rendelések exportálását.
Kezdeti adatexportálás
Az API hozzáférés pillanatában meglévő rendelések átviteléhez a partner felületén egyszeri exportálást használhat CSV-be.
Ha a saját rendszerében vannak már meglévő (az API elérhetővé tétele előtt létrehozott) rendelései, és az API-n keresztül szeretne velük dolgozni, használja a "Munka indítása megjelölt rendelésekkel API-n keresztül" funkciót a "Tömeges műveletek rendelésekkel" részben. menü.
A gyakori HTTP-válaszok leírása
200 OK
– a kérést sikeresen feldolgoztuk204 No Content
– a kérést feldolgozták, a válasznak nincs tartalma400 Bad Request
– a kérés nem érvényes – előfordulhat, hogy hiányzó vagy érvénytelen paraméterek szerepelnek a specifikációban403 Forbidden
– az ügyfél hitelesítés sikertelen404 Not Found
– a végpont vagy a szükséges adat nem található405 Method Not Allowed
– a végpont nem támogatja ezt a HTTP-módszert422 Unprocessable Entity
– várható hiba a kérés feldolgozása során (lásd a Hibafeltételek részt)500 Internal Server Error
– hiba történt a szerver oldalon502 Bad Gateway
– szerveroldali hiba történt503 Service Unavailable
– a szerver karbantartási módban van (lehet, hogy az új verzió telepítése folyamatban van, vagy tervezett leállás)504 Gateway Timeout
– szerveroldali hiba történt
A HTTP 5×x válaszok nem használhatnak JSON formátumot.
Abban az esetben4xx
hibák esetén a kimenő kérés hibás, és ki kell javítani az újrapróbálkozás előtt.
Hibák5xx
jelzi a szerverhibákat, és a kérés megváltoztatása nélkül újra megpróbálható. Abban az esetben503
, a hívónak tiszteletben kell tartania aRetry-After
válaszfejlécet, és csak a fejlécben megadott idő letelte után próbálkozzon újra.
Rendelési állapotok
A megrendelés mindig a következő állapotok valamelyikében van:
Állami érték | Leírás |
1 | Új fizetett rendelés |
2 | Kezelt |
3 | Az áruk kiszállítása (csak szállítással járó megrendelés esetén) |
4 | Felkészülés a személyes átvételre – pl.: fiókba szállítás |
5 | Személyes átvételre készen |
6 | Az ügyfélnek kézbesítve – az ügyfél visszaigazolására vár |
7 | A vevő kézbesítette és visszaigazolta |
8 | Az Ügyfél megtagadta a megrendelés átvételét |
9 | Törölt rendelés |
A vásárlót e‑mailben értesítjük az állapotváltozásról.
A sikeres kézbesítéshez nem kell feltétlenül minden státuszt átmennie a megrendelésnek, az „Új rendelés fizetve” lehetőségből közvetlenül az „Áru feladva” / „Személyes átvételre készen”, majd a „Kézbesítés a vevőnek – vásárlói visszaigazolásra várva” menüpontra lehet lépni. ". Az összes állapot használata azonban jobb tájékoztatást ad az ügyfeleknek a megrendelés folyamatáról, ezért ajánlott.
Hibaállapotok
4×x HTTP kódok esetén a válasz mindig tartalmazza a kulcsotstatus
(lásd az alábbi kódkönyvet) és a mezőtmessages
a hibák szöveges leírásával.
Állapot értéke | Leírás |
1 | Érvénytelen kérés – hiányzó vagy érvénytelen értékek |
2 | Érvénytelen bejelentkezési adatok |
3 | Nem létező rend |
4 | Nem létező rendelési tétel |
5 | A megrendelés átmenete jogosulatlan állapotba |
6 | Érvénytelen törlés – a létezőnél több tétel törlése |
7 | Egyéb hiba |
8 | A rendelést még nem exportálták a partner API-ba – az API-n keresztül nem manipulálható |
9 | Az "Áru a vevőhöz szállítva" állapot automatikus beállításához a küldeményt automatikusan "Áru átvételre kész" állapotra kell állítania. |
Példa:
{ "status": 3, "messages": [ "Order #1234 was not found." ] }
Adattípusok
A kérésekben és válaszokban szereplő kulcsok adattípusai mindig meghatározott végpontokhoz vannak leírva. Eltérő rendelkezés hiányában az érték idézőjelben""
mindig kötelező karakterlánc. Ha nincs másképp megadva, a numerikus érték mindig egy kötelező egész szám.
Kommunikáció Slevomat ⇒ Partner
Az API ezen része a partner oldalon van implementálva, és a Slevomat ezt hívja.
A szükséges API gyökér URL-t a partner biztosítja, és az űrlapon kell szerepelnie
https://www.example.com/slevomat-zbozi-api/v1
Engedélyezés kérése
Ha az API engedélyezve van, a partner megkapjapartner_api_secret
, ami azt bizonyítja, hogy a bejövő kérések valóban a Slevomattól származnak.
Ezt a paramétert a HTTP fejléc adja átX-PartnerApiSecret
.
Teszt felület
A Slevomat olyan funkciókat tartalmaz, amelyek segítségével meghívhatja az API-t a partner oldalon, és megtekintheti a választ. A partner által az API elérhetővé tételekor megadott gyökér URL hozzá van fűzve-test
, így a tesztelés során az API-t pl
https://example.com/slevomat-zbozi-api-test
hogy elkerüljük a tesztadatok és az élő rendelések keveredését.
A partner API tesztelése a következő címekre küldött POST-kérésekkel történik:
– Új rendhttps://www.slevomat.cz/test-zbozi-partner-api/v1/new-order
– A várható szállítási dátumok tömeges frissítésehttps://www.slevomat.cz/test-zbozi-partner-api/v1/update-shipping-dates
– Módosítsa a megrendelés állapotát "Kézbesítve az ügyfélnek – ügyfél megerősítésére vár"-rahttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/mark-delivered
– Módosítsa a rendelés állapotát "Személyes átvételre kész"-rehttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/ready-for-pickup
– Szállítási visszaigazoláshttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/confirm-delivery
– Az átvétel megtagadásahttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/reject-delivery
– Törléshttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/cancel
Helyettesíteni a<orderId>
az URL része bármilyen rendelési számmal, a partner API-hoz intézett kérések ezzel a rendelési számmal készülnek.
A tesztfelületre irányuló kéréseket a fejlécekkel kell engedélyezniX-PartnerToken
ésX-ApiSecret
.
Amikor teszthívást kezdeményez a partner API-nak, a rendszer elküldi aX-PartnerApiSecret
fejlécet, mint élő üzemmódban.
Az új megrendeléssel küldött adatok tesztadatok és véletlenszerűen generált adatok.
Rendelés törlés elküldése esetén aitems
mező a kérelem POST törzsében JSON-ban (az API által küldött formátumban), amelyet a tesztelési felület érvényesít és ugyanabban a formában továbbít a partner API-nak.
Új rend
A kérelem tartalmazza az újonnan létrehozott rendelés adatait.
A rendelések mindig egyediekslevomatId
. Ha az API másolatot kapslevomatId
, a kérést a partner API-nak figyelmen kívül kell hagynia (az első kérést a Slevomat sikertelennek értékelte, ezért megismételte), és a választ isHTTP 204
.
created
a dátum ISO 8601 formátumban, azazYYYY-MM-DD'T'HH:mm:ss+zz:zz
.
productId
tartalmazza az eseményazonosítót, variantId
a megvásárolt változat azonosítója.
Az opcionálisinternalId
jelzi a műveletváltozathoz megadott belső azonosítót, amikor az létrejön a partner felületen. A termék azonosítására szolgál a partner rendszerében.
Ban benbillingAddress
(számlázási cím) csak az ügyfél neve (name
) kötelező.
Ban benshippingAddress
(szállítási cím) a cég (company
) nem kötelező. címre történő szállítás eseténshippingAddress
tartalmazza a vevő címét, személyes átvétel esetén annak a telephelynek a címét, ahol a vásárló az árut átveszi.
A kulcsdelivery
.type
felveheti az értéketaddress
(címre szállítás) illpickup
(személyes átvétel).delivery
.name
tartalmazza a szállítmány vagy a létesítmény nevét.
delivery
.expectedShippingDate
(becsült szállítási dátum) ésdelivery
.expectedDeliveryDate
(becsült szállítási dátum) formátumú adatokYYYY-MM-DD
.
A kulcsweight
tartalmazza a rendelés súlyát kilogrammban. Ha nem ismerjük a rendelésben szereplő összes tétel súlyát, akkor az értéket veszinull
.
POST /rend/$slevomatId
{ "slevomatId": "721896899157", "created": "2021–08–25T15:14:24+02:00", "items": [ { "slevomatId": "960", "productId": "22", "variantId": "105", "internalId": null, "name": "Sandále vel. 42", "amount": 1, "unitPrice": 250.0 }, { "slevomatId": "7577400222", "productId": "1752", "variantId": "9855", "internalId": null, "name": "Ručník modrý", "amount": 10, "unitPrice": 100.0 } ], "billingAddress": { "name": "Petr Novák", "company": "Novák a syn", "street": "Vodičkova 32", "city": "Praha 1", "postalCode": "110 00", "country": "Česko" }, "shippingAddress": { "name": "Petr Novák", "company": null, "street": "Strašnická 8", "city": "Praha", "postalCode": "100 00", "phone": "+420777888999" }, "delivery": { "type": "address", "name": "PPL", "expectedShippingDate": "2021–08–27", "expectedDeliveryDate": "2021–08–30", "price": 100.0 }, "status": 1, "customer": { "email": "petr.novak@example.com" }, "weight": 1.2 }
POST /rend/$slevomatId
{ "slevomatId": "124146766678", "created": "2021–09–01T12:49:37+02:00", "items": [ { "slevomatId": "863", "productId": "64", "variantId": "14", "internalId": null, "name": "Sandále vel. 42", "amount": 1, "unitPrice": 250.0 }, { "slevomatId": "2364201450", "productId": "7057", "variantId": "5802", "internalId": null, "name": "Ručník modrý", "amount": 10, "unitPrice": 100.0 } ], "billingAddress": { "name": "Petr Novák", "company": "Novák a syn", "street": "Vodičkova 32", "city": "Praha 1", "postalCode": "110 00", "country": "Česko" }, "shippingAddress": { "name": "Provozovna Jahodová", "company": null, "street": "Jahodová 33", "city": "Praha 10", "postalCode": "100 00", "phone": "+420222888999", "deliveryPremise": { "id": 45445, "name": "Provozovna Jahodová" } }, "delivery": { "type": "pickup", "name": "Osobní odběr na provozovně", "expectedShippingDate": "2021–09–02", "expectedDeliveryDate": "2021–09–02", "price": 0.0 }, "status": 1, "customer": { "email": "petr.novak@example.com" }, "weight": 1.2 }
A várható szállítási dátumok tömeges frissítése
Ha az ügyletkezelő a partner kérésére áthelyezi a kiválasztott rendelések szállítási dátumait, a rendszer tájékoztatja a partner API-t erről a frissítésről.
A küldött adatok a rendelésazonosító mezőt és az új várható szállítási dátumot tartalmazzák.
POST /update-shipping-dates
{ "expectedShippingDate": "2021–08–25", "slevomatIds": [ "123456", "45454544" ] }
Törlés
Lemondások mind a Slevomat oldalon, mind a partnerrendszeren létrehozhatók. Ez a végpont kezeli a törlés létrehozását a Slevomat oldalon és annak átvitelét a partner rendszerébe.
Létrehozza a rendelési tételek törlését a megadott mennyiségben. Ha a teljes rendelést törölni kell, akkor az összes megfelelő mennyiséggel rendelkező tétel megjelenik.
Az egyes tételek részben is lemondhatók (pl. 1/2).
Lemondási nyilatkozat (note
) nem kötelező.
POST /order/$slevomatId/cancel
{ "items": [ { "slevomatId": "1212", "amount": 1 }, { "slevomatId": "4545454", "amount": 2 } ], "note": "storno v zákonné lhůtě" }
A kézbesítés visszaigazolása
Miután megjelölte a megrendelés "Kézbesítve az ügyfélnek" jelzést, megkérjük a vásárlót, hogy erősítse meg, hogy valóban megkapta. Amikor a megrendelés beérkezettként van megjelölve, ez a végpont meghívásra kerül.
POST /order/$slevomatId/confirm-delivery
{}
Az átvétel megtagadása
POST /order/$slevomatId/reject-delivery
{ "rejectionReason": "Důvod odmítnutí zákazníkem" }
Módosítsa a rendelés állapotát "Személyes átvételre kész"-re
Ez a végpont akkor kerül meghívásra, ha az előző „Személyes átvételre kész” állapot be volt állítvaautoMarkReadyForPickup
true
és a rendelés automatikusan átváltott "Személyes átvételre kész"-re a Slevomat oldalon.
POST /order/$slevomatId/delivery-ready-for-pickup
{}
Módosítsa a rendelés állapotát "Kézbesítve a vevőnek – ügyfél megerősítésére vár"-ra
Ez a végpont akkor hívódik meg, ha az előző „Útközben”, „Személyes átvételre kész” vagy „Személyes átvételre kész” állapot be volt állítvaautoMarkDelivered
true
és a rendelés automatikusan átváltott a Slevomat oldalon "Kézbesítve a vevőnek – vásárlói visszaigazolásra vár" státuszra.
POST /order/$slevomatId/mark-delivered
{}
Kommunikációs partner ⇒ Slevomat
Az API ezen része a Slevomat oldalon van implementálva, és a partnerrendszer hívja meg.
Az API gyökér URL-je
https://www.slevomat.cz/zbozi-api/v1
PHP könyvtár
Az API ezen oldalának megvalósításához használhatja az előkészített PHP könyvtárat. A könyvtár jelenleg PHP 5.4 vagy újabb verziót igényel, és a Composer használatát igényli.
A könyvtár és a forráskód használatára vonatkozó utasítások a GitHubon találhatók .
Engedélyezés kérése
Ha az API engedélyezve van, a partner megkapjapartner_token
ésapi_secret
, amelyek a Slevomat API hívásakor önmaguk hitelesítésére szolgálnak.
Ezeket a paramétereket aX-PartnerToken
ésX-ApiSecret
fejlécek.
Teszt felület
A tesztfelület gyökér URL-je a
https://www.slevomat.cz/zbozi-api/v1-test
Minden művelet meghívható rajta, mint az élő felületen.
A tesztfelület ellenőrzi a kérelmek jogosultságát (a partner token és az API-titok helyességét), valamint a bejövő kéréstestek (JSON) érvényességét. Ebből a szempontból ugyanúgy viselkedik, mint az élő API.
A tesztelési felület azonban nem működik tényleges rendelésekkel. Így nem ellenőrzi, hogy egy rendelés átmenet-e a megfelelő állapotok között, és tartalmaz-e adott azonosítójú tételeket. Amint a kérelem engedélyezése és űrlapellenőrzése sikeres, a tesztfelület mindig megfelel a 200-as vagy 204-es sikerkódnak.
Lemondás létrehozása
Létrehoz egy törlést a rendelési tételekről a megadott mennyiségben. Ha a rendelést teljes egészében törölni kell, akkor az összes megfelelő mennyiségű tétel megjelenik.
Az egyes tételek részben is lemondhatók (pl. 1/2).
Lemondási nyilatkozat (note
) nem kötelező.
POST /order/$slevomatId/cancel
{ "items": [ { "slevomatId": 45454, "amount": 15 } ], "note": "nepovinná poznámka" }
A megrendelés állapotának módosítása "Függőben"-re
POST /order/$slevomatId/mark-pending
{}
A megrendelés állapotának módosítása "Áruk kiszállítva"-ra
Megrendeléshez aautoMarkDelivered
paraméterrel megadható, hogy egy beállított szállítási idő után ("Kiszállítástól kézbesítésig eltelt idő") automatikusan átváltson-e "Kézbesítve a vevőnek – ügyfél megerősítésére vár" állapotra.
A válasz frissített becsült kézbesítési dátumot tartalmaz.
POST /order/$slevomatId/mark-en-route
{ "autoMarkDelivered": true }
200-as válasz
{ "expectedDeliveryDate": "2021–08–25" }
Módosítsa a rendelés állapotát "Személyes átvételre kész"-re
Használhatja a paramétertautoMarkReadyForPickup
megadni, hogy egy adott típusú átvételi pontnál a feladástól a kézbesítésig eltelt idő után a megrendelés automatikusan átváltson-e "Személyes átvételre kész" állapotba.
Megrendeléshez aautoMarkDelivered
paraméterrel megadható, hogy a „Személyes átvételre kész” állapotból automatikusan átváltson-e „Vevőhöz kézbesítve – ügyfél megerősítésére vár” állapotra egy beállított számú átvételi nap elteltével az adott típusú átvételi ponton.
A paraméterek kombinációjaautoMarkReadyForPickup
hamis ésautoMarkDelivered
igaz nem megengedett. Ebben az esetben a 9-es hibakód kerül visszaadásra.
A válasz frissített várható szállítási dátumot tartalmaz.
POST /order/$slevomatId/mark-getting-ready-for-pickup
{ "autoMarkReadyForPickup": true, "autoMarkDelivered": true }
200-as válasz
{ "expectedDeliveryDate": "2021–08–25" }
Módosítsa a rendelés állapotát "Személyes átvételre kész"-re
AautoMarkDelivered
paraméterrel megadható, hogy a megrendelés adott számú átvételi ponton meghatározott számú nap elteltével automatikusan „Kézbesítve a vevőnek – vevői visszaigazolásra vár” állapotba kerüljön-e.
POST /order/$slevomatId/mark-ready-for-pickup
{ "autoMarkDelivered": true }
Módosítsa a rendelés állapotát "Kézbesítve a vevőnek – ügyfél megerősítésére vár"
POST /order/$slevomatId/mark-delivered
{}
Szállítási cím módosítása
A szállítási cím csak címre történő kézbesítés esetén módosítható (azaz a személyes átvétel helye nem módosítható).
Minden kulcs, kivévecompany
szükségesek.
Érvényes értékek astate
kulcsokcz
(Csehország) éssk
(Szlovákia).
POST /order/$slevomatId/update-shipping-address
{ "name": "Karel Novák", "street": "Pod horou 34", "city": "Pardubice", "postalCode": "530 00", "state": "CZ", "phone": "+420777888999", "company": "Knihkupectví Novák" }
2016. 02. 03
2015. 11. 09
2015. 10. 20
2015. 10. 13
2015. 9. 24
2015. 9. 23
2015. 9. 18
2015. 9. 17
2015. 9. 10
2015. 7. 9
2015. 9. 1
2015. 8. 17
2015. augusztus 2.: első verzió |