API se uporablja za prenos informacij o naročilu med Slevomatom in sistemom našega trgovinskega partnerja. API zahteva implementacijo dvosmerne komunikacije – sistem Slevomat kliče partnerjev API, partner pa kliče Slevomatov API.
Naročil, izvoženih v partnerski API, ni več mogoče manipulirati v partnerskem vmesniku Slevomat, le ogledovati. Manipulacija z izvoženimi naročili je mogoča le preko API-ja.
Vse zahteve morajo biti podane na HTTPS in vsi podatki so v formatu JSON.
API dostop
Do poverilnic za API lahko dostopate na zavihku Nastavitve v partnerskem vmesniku. Za pridobitev podatkov morate zagotoviti korenski URL partnerskega dela API-ja za uporabo v smeri Slevomat → Partner, npr.
https://example.com/slevomat-zbozi-api
Podatki o dostopu bodo prikazani samo enkrat, ko boste dostopali do API-ja, zato jih skrbno shranite.
Ko je API dostopen, bo sistem vanj začel izvažati novo ustvarjena naročila.
Začetni izvoz podatkov
Za prenos obstoječih naročil v trenutku dostopa do API-ja lahko uporabite enkraten izvoz v CSV v partnerskem vmesniku.
Če imate v svojem sistemu obstoječa naročila (ustvarjena preden je bil API na voljo) in želite z njimi začeti delati prek API-ja, uporabite funkcijo "Začni delati z označenimi naročili prek API-ja" v "Množična dejanja z naročili" meni.
Opis pogostih odzivov HTTP
200 OK
– zahteva je bila uspešno obdelana204 No Content
– zahteva je bila obdelana, odgovor je brez vsebine400 Bad Request
– zahteva ni veljavna – morda manjkajo ali so neveljavni parametri glede na specifikacijo403 Forbidden
– avtorizacija odjemalca ni uspela404 Not Found
– končna točka ali zahtevani podatki niso bili najdeni405 Method Not Allowed
– končna točka ne podpira te metode HTTP422 Unprocessable Entity
– pričakovana napaka med obdelavo zahteve (glejte razdelek Pogoji napake )500 Internal Server Error
– prišlo je do napake na strani strežnika502 Bad Gateway
– prišlo je do napake na strani strežnika503 Service Unavailable
– strežnik je v vzdrževalnem načinu (uvajanje nove različice je morda v teku ali je načrtovana izpad)504 Gateway Timeout
– prišlo je do napake na strani strežnika
Odgovori HTTP 5×x morda ne bodo uporabljali zapisa JSON.
V primeru4xx
napake, je odhodna zahteva napačna in jo je treba popraviti pred ponovnim poskusom.
Napake5xx
kažejo napake strežnika in zahtevo lahko poskusite znova, ne da bi jo spremenili. V primeru503
, mora klicatelj spoštovatiRetry-After
glavo odgovora in poskusite znova šele po preteku časa, določenega v glavi.
Statusi naročil
Naročilo je vedno v enem od naslednjih stanj:
Državna vrednost | Opis |
1 | Novo plačano naročilo |
2 | Obravnavano |
3 | Blago odposlano (samo naročila s poštnino) |
4 | Priprava na osebni prevzem – npr. prevoz v poslovalnico |
5 | Pripravljeno za osebni prevzem |
6 | Dostavljeno stranki – čaka na potrditev stranke |
7 | Dostavljeno in potrjeno s strani stranke |
8 | Stranka ni želela potrditi prejema naročila |
9 | Preklicano naročilo |
Stranka je o spremembi statusa obveščena po elektronski pošti.
Ni nujno, da gre naročilo skozi vse statuse za uspešno dostavo, iz "Novo naročilo plačano" je mogoče preiti naravnost v "Blago odposlano" / "Pripravljeno za osebni prevzem" in nato v "Dostavljeno stranki – čaka na potrditev stranke". ". Uporaba vseh statusov pa vodi do boljše obveščenosti kupca o poteku naročila in je priporočljiva.
Stanja napak
V primeru kod HTTP 4×x odgovor vedno vsebuje ključstatus
(glej šifrant spodaj) in poljemessages
z besedilnimi opisi napak.
Statusna vrednost | Opis |
1 | Neveljavna zahteva – manjkajoče ali neveljavne vrednosti |
2 | Neveljavni podatki za prijavo |
3 | Neobstoječe naročilo |
4 | Neobstoječ element naročila |
5 | Prehod naročila v nepooblaščeno stanje |
6 | Neveljaven preklic – preklic več artiklov, kot jih obstaja |
7 | Druga napaka |
8 | Naročilo še ni bilo izvoženo v partnerski API – z njim ni mogoče manipulirati prek API-ja |
9 | Če želite samodejno nastaviti status »Blago dostavljeno stranki«, morate imeti pošiljko samodejno nastavljeno na »Blago pripravljeno za prevzem«. |
primer:
{ "status": 3, "messages": [ "Order #1234 was not found." ] }
Vrste podatkov
Tipi podatkov vsakega ključa v zahtevah in odgovorih so vedno opisani za določene končne točke. Če ni drugače določeno, vrednost v narekovajih""
je vedno obvezen niz. Če ni določeno drugače, je številska vrednost vedno obvezno celo število.
Komunikacija Slevomat ⇒ Partner
Ta del API-ja je implementiran na strani partnerja in Slevomat ga imenuje.
Zahtevani korenski URL API-ja zagotovi partner in mora biti v obrazcu
https://www.example.com/slevomat-zbozi-api/v1
Zahtevaj avtorizacijo
Ko je API omogočen, partner prejmepartner_api_secret
, kar dokazuje, da so dohodni zahtevki res iz Slevomata.
Ta parameter se posreduje v glavi HTTPX-PartnerApiSecret
.
Testni vmesnik
Slevomat vključuje funkcionalnost za klic API-ja na strani partnerja in ogled odgovora. Korenski URL, ki ga določi partner, ko je API na voljo, je pripet-test
, tako da se pri testiranju API kliče na npr
https://example.com/slevomat-zbozi-api-test
da se izognete mešanju testnih podatkov z živimi naročili.
Testiranje partnerskega API-ja poteka prek POST zahtev na naslednje naslove:
– Novo naročilohttps://www.slevomat.cz/test-zbozi-partner-api/v1/new-order
– Množična posodobitev pričakovanih datumov pošiljanjahttps://www.slevomat.cz/test-zbozi-partner-api/v1/update-shipping-dates
– Spremenite status naročila v "Dostavljeno stranki – čaka na potrditev stranke"https://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/mark-delivered
– Spremenite status naročila v "Pripravljeno za osebni prevzem"https://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/ready-for-pickup
– Potrditev dostavehttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/confirm-delivery
– Zavrnitev sprejemahttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/reject-delivery
– Odpovedhttps://www.slevomat.cz/test-zbozi-partner-api/v1/order/<orderId>/cancel
Zamenjajte<orderId>
del URL-ja s katero koli številko naročila, se zahteve za API partnerja izvajajo s to številko naročila.
Zahteve za ta testni vmesnik je treba odobriti z glavamiX-PartnerToken
inX-ApiSecret
.
Pri testnem klicu partnerskemu API-ju sistem pošljeX-PartnerApiSecret
glavo, kot to počne pri delovanju v živo.
Podatki, poslani z novim naročilom, so testni podatki in naključno ustvarjeni.
V primeru pošiljanja preklica naročila morate vključitiitems
polje v telesu POST zahteve v JSON (v enakem formatu, kot ga je poslal API), ki ga bo preskusni vmesnik preveril in posredoval partnerskemu API-ju v isti obliki.
Novo naročilo
Zahteva vsebuje podatke novo oblikovanega naročila.
Naročila imajo vedno unikatslevomatId
. Če API prejme dvojnikslevomatId
, mora biti zahteva prezrta s strani partnerskega API-ja (prvo zahtevo je Slevomat ocenil kot neuspešno in jo je zato ponovil), odgovor pa mora biti tudiHTTP 204
.
created
je datum v formatu ISO 8601, tjYYYY-MM-DD'T'HH:mm:ss+zz:zz
.
productId
vsebuje ID dogodka, variantId
ID kupljene variante.
NeobveznointernalId
označuje notranji ID, vnesen za različico dejanja, ko je ustvarjena v partnerskem vmesniku. Uporablja se za identifikacijo izdelka v sistemu partnerja.
noterbillingAddress
(naslov za izstavitev računa) samo ime stranke (name
) je obvezno.
notershippingAddress
(naslov za dostavo) podjetje (company
) ni obvezna. V primeru dostave doshippingAddress
vsebuje naslov stranke, v primeru osebnega prevzema naslov lokala, kjer bo stranka prevzela blago.
Ključdelivery
.type
lahko prevzame vrednostaddress
(dostava na naslov) ozpickup
(osebni prevzem).delivery
.name
vsebuje ime prevoza ali ime obrata.
delivery
.expectedShippingDate
(predvideni datum pošiljanja) indelivery
.expectedDeliveryDate
(predvideni rok dobave) so podatki v oblikiYYYY-MM-DD
.
Ključweight
vsebuje težo naročila v kilogramih. Če ne poznamo teže vseh artiklov v naročilu, vzame vrednostnull
.
POST /order/$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 /order/$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 }
Množična posodobitev pričakovanih datumov pošiljanja
Če upravitelj poslov na zahtevo partnerja premakne datume odpreme izbranih naročil, sistem o tej posodobitvi obvesti partnerski API.
Poslani podatki vsebujejo polje ID naročila in nov pričakovani datum odpreme.
POST /update-shipping-dates
{ "expectedShippingDate": "2021–08–25", "slevomatIds": [ "123456", "45454544" ] }
Odpoved
Preklici se lahko kreirajo tako na strani Slevomat kot v partnerskem sistemu. Ta končna točka skrbi za ustvarjanje stornacije na strani Slevomat in njen prenos v sistem partnerja.
Ustvari preklic postavk naročila v določeni količini. Če želite preklicati celotno naročilo, so navedeni vsi artikli z ustrezno količino.
Posamezne artikle je mogoče tudi delno odpovedati (npr. 1 od 2).
Opomba o preklicu (note
) ni obvezna.
POST /order/$slevomatId/cancel
{ "items": [ { "slevomatId": "1212", "amount": 1 }, { "slevomatId": "4545454", "amount": 2 } ], "note": "storno v zákonné lhůtě" }
Potrditev dostave
Ko naročilo označite kot »Dostavljeno stranki«, bomo od stranke zahtevali potrditev, da je naročilo dejansko prejela. Ko je naročilo označeno kot prejeto, bo ta končna točka poklicana.
POST /order/$slevomatId/confirm-delivery
{}
Zavrnitev sprejema
POST /order/$slevomatId/reject-delivery
{ "rejectionReason": "Důvod odmítnutí zákazníkem" }
Spremenite status naročila v "Pripravljeno za osebni prevzem"
Ta končna točka bo poklicana, če je bilo prejšnje stanje »Pripravljeno za osebni prevzem« nastavljeno zautoMarkReadyForPickup
true
in naročilo se je samodejno preklopilo na "Pripravljeno za osebni prevzem" na strani Slevomat.
POST /order/$slevomatId/delivery-ready-for-pickup
{}
Spremenite status naročila v "Dostavljeno stranki – čaka na potrditev stranke"
Ta končna točka se pokliče, če je bil prejšnji status »Na poti«, »Pripravljen za osebni prevzem« ali »Pripravljen za osebni prevzem« nastavljen zautoMarkDelivered
true
in naročilo se je na strani Slevomat samodejno preklopilo v status "Dostavljeno kupcu – čaka na potrditev kupca".
POST /order/$slevomatId/mark-delivered
{}
Komunikacijski partner ⇒ Slevomat
Ta del API-ja je implementiran na strani Slevomat in ga kliče partnerski sistem.
Korenski URL API-ja je
https://www.slevomat.cz/zbozi-api/v1
PHP knjižnica
Za implementacijo te strani API-ja lahko uporabite pripravljeno knjižnico PHP. Knjižnica trenutno zahteva PHP 5.4 ali novejši in zahteva uporabo Composerja.
Navodila za uporabo knjižnice in izvorne kode so na GitHubu .
Zahtevaj avtorizacijo
Ko je API omogočen, partner prejmepartner_token
inapi_secret
, ki se uporabljajo za avtentikacijo pri klicu Slevomat API.
Ti parametri se posredujejo vX-PartnerToken
inX-ApiSecret
glave.
Testni vmesnik
Korenski URL testnega vmesnika je
https://www.slevomat.cz/zbozi-api/v1-test
Na njem lahko kličete vsa dejanja kot na živem vmesniku.
Testni vmesnik preverja avtorizacijo zahtev (pravilnost partnerskega žetona in API skrivnost) in veljavnost teles dohodnih zahtev (JSON). V teh pogledih se obnaša enako kot API v živo.
Vendar testni vmesnik ne deluje z dejanskimi naročili. Tako ne preveri, ali naročilo prehaja med pravilnimi stanji in ali vsebuje artikle z danimi ID-ji. Ko je avtorizacija in preverjanje obrazca zahteve uspešno, se testni vmesnik vedno ujema s kodo uspeha 200 ali 204.
Ustvarjanje preklica
Ustvari preklic postavk naročila v podani količini. V primeru, da se naročilo v celoti prekine, so navedeni vsi artikli z ustrezno količino.
Posamezne artikle je mogoče tudi delno odpovedati (npr. 1 od 2).
Odpoved (note
) ni obvezna.
POST /order/$slevomatId/cancel
{ "items": [ { "slevomatId": 45454, "amount": 15 } ], "note": "nepovinná poznámka" }
Spremenite status naročila v "V teku"
POST /order/$slevomatId/mark-pending
{}
Spremenite status naročila v "Blago odposlano"
Za naročilo, autoMarkDelivered
s parametrom lahko določite, ali naj se samodejno preklopi v status »Dostavljeno stranki – čaka na potrditev stranke« po nastavljenem času pošiljanja (»Čas od pošiljke do dostave«).
Odgovor vsebuje posodobljen predviden datum dostave.
POST /order/$slevomatId/mark-en-route
{ "autoMarkDelivered": true }
Odgovor 200
{ "expectedDeliveryDate": "2021–08–25" }
Spremenite status naročila v "Pripravljeno za osebni prevzem"
Lahko uporabite parameterautoMarkReadyForPickup
da določite, ali naj se naročilo samodejno preklopi v status "Pripravljeno za osebni prevzem" po času od odpreme do dostave za dano vrsto prevzemnega mesta.
Za naročilo, autoMarkDelivered
s parametrom lahko določite, ali naj samodejno preklopi iz statusa »Pripravljeno za osebni prevzem« v status »Dostavljeno stranki – čaka na potrditev stranke« po določenem številu dni za prevzem na dani vrsti prevzemnega mesta.
Kombinacija parametrovautoMarkReadyForPickup
lažno inautoMarkDelivered
true ni dovoljeno. V tem primeru bo vrnjena koda napake 9.
Odgovor vsebuje posodobljen pričakovani datum dostave.
POST /order/$slevomatId/mark-getting-ready-for-pickup
{ "autoMarkReadyForPickup": true, "autoMarkDelivered": true }
Odgovor 200
{ "expectedDeliveryDate": "2021–08–25" }
Spremenite status naročila v "Pripravljeno za osebni prevzem"
TheautoMarkDelivered
s parametrom lahko določite, ali naj se naročilo samodejno preklopi v status "Dostavljeno stranki – čaka na potrditev stranke" po določenem številu dni za prevzem na dani vrsti prevzemnega mesta.
POST /order/$slevomatId/mark-ready-for-pickup
{ "autoMarkDelivered": true }
Spremenite status naročila v "Dostavljeno stranki – čaka na potrditev stranke"
POST /order/$slevomatId/mark-delivered
{}
Spremenite naslov za dostavo
Naslov za dostavo se lahko spremeni le za dostavo na naslov (tj. mesta osebnega prevzema ni mogoče spremeniti).
Vsi ključi razencompany
so potrebni.
Veljavne vrednosti zastate
ključni socz
(Češka) insk
(Slovaška).
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" }
03. 02. 2016
11. 09. 2015
20. 10. 2015
13. 10. 2015
24. 9. 2015
23. 9. 2015
18. 9. 2015
17. 9. 2015
9. 10. 2015
7. 9. 2015
1. 9. 2015
17. 8. 2015
2. avgust 2015: prva različica |