API se koristi za prijenos podataka o narudžbi između Discountomata i sustava trgovačkog partnera. API zahtijeva implementaciju dvostrane komunikacije – partnerski API poziva sustav Discount, a partner API popust.
S narudžbama izvezenim u partnerski API više nije moguće manipulirati u sučelju partnera, samo ih pregledavati. Manipulacija izvezenim narudžbama može se izvršiti samo putem API -ja.
Svi zahtjevi moraju biti poslani na HTTPS -u, a svi podaci su u JSON formatu.
Pristupačnost API -ja
API -ju možete pristupiti s kartice Postavke na vašem sučelju za partnere. Za dobivanje podataka trebate unijeti URL korijenskog koda partnerskog dijela API -ja za upotrebu u smjeru Zlevomat → Partner, npr.
https://example.com/slevomat-zbozi-api
Pristupni podaci bit će prikazani samo kada se pristupi API -ju, pažljivo ih pročitajte i pažljivo ih zadržite.
Nakon pristupa API -ju, sustav će unijeti u njega novonastale narudžbe koje će početi izvoziti naloge u sustav.
Početni izvoz podataka
Za prelijevanje postojećih narudžbi u trenutku kada je API dostupan. Može se koristiti jednokratni izvoz u CSV u partnerskom sučelju.
U trenutku kada imate postojeće narudžbe (stvorene prije pristupa API -ju) u svom sustavu i želite početi raditi s njima putem API -ja, upotrijebite funkciju "Počni raditi s označenim narudžbama putem API -ja" u izborniku "Skupne radnje s narudžbama" .
Opis uobičajenih HTTP odgovora
200 OK
– zahtjev je uspješno obrađen204 No Content
– zahtjev je uspješno obrađen, odgovor nema sadržaj400 Bad Request
– zahtjev nije važeći – mogu nedostajati ili su parametri neispravni u odnosu na specifikaciju403 Forbidden
– autorizacija klijenta nije uspjela404 Not Found
– krajnja točka ili traženi podaci nisu pronađeni405 Method Not Allowed
– krajnja točka ne podržava ovu metodu HTTP protokola422 Unprocessable Entity
– očekivana greška pri obradi zahtjeva (vidi odjeljak Uvjeti greške )500 Internal Server Error
– došlo je do pogreške na poslužitelju stranica502 Bad Gateway
– došlo je do pogreške na strani poslužitelja503 Service Unavailable
– poslužitelj je u načinu održavanja (moguće je uvođenje nove verzije ili planirano vrijeme zastoja)504 Gateway Timeout
– došlo je do pogreške na poslužitelju na strani poslužitelja
HTTP odgovori 5 × x možda ne koriste JSON format.
U slučaju4xx
greške, greška je u odlaznom zahtjevu i potrebno ju je ispraviti prije ponovnog pokušaja.
Pogreške5xx
ukazuju na pogreške poslužitelja i zahtjev se može ponoviti bez promjene. U slučaju503
, pozivatelj bi trebao poštivatiRetry-After
zaglavlje odgovora i sljedeći pokušaj pokušajte ponovno tek nakon isteka vremena navedenog u zaglavlju.
Države reda
Narudžba je uvijek u jednom od sljedećih stanja:
Vrijednost statusa | Opis |
1 | Nova plaćena narudžba |
2 | Obrađuje se |
3 | Na putu (samo narudžbe s dostavom) |
4 | U pripremi za osobno preuzimanje – npr. U tranzitu do podružnice |
5 | Spremno za osobno preuzimanje |
6 | Isporučeno kupcu – čeka se potvrda kupca |
7 | Dostavljeno i potvrđeno od strane kupca |
8 | Kupac je odbio potvrditi primitak narudžbe |
9 | Narudžba je otkazana |
Kupac je obaviješten o svakoj promjeni statusa putem e -pošte.
Narudžba ne mora nužno proći sve statuse da bi bila uspješna isporuka, moguće je prijeći ravno iz statusa "Nova plaćena narudžba" u "Na putu" / "Spremno za preuzimanje", a zatim u "Isporučeno kupcu – čeka potvrdu klijenta ". Korištenje svih statusa, međutim, vodi do boljih informacija o napretku obrade narudžbe i preporučujemo je.
Stanja grešaka
U slučaju 4 × x HTTP kodova, odgovor uvijek sadrži ključstatus
(pogledajte donji popis kodova) i poljemessages
s opisom grešaka u tekstu.
Vrijednost statusa | Opis |
1 | Nevažeći zahtjev – vrijednosti nedostaju ili su nevažeće |
2 | Nevažeće vjerodajnice |
3 | Nepostojeća narudžba |
4 | Nepostojeća stavka narudžbe |
5 | Prijelaz naloga u neovlašteno stanje |
6 | Nevažeće otkazivanje – otkazivanje više stavki nego što postoji |
7 | Druga greška |
8 | Narudžba još nije izvezena u partnerski API – njome se ne može manipulirati putem API -ja |
9 | Za automatsko postavljanje statusa "Roba isporučena kupcu" potrebno je da pošiljka bude automatski postavljena na status "Roba spremna za preuzimanje" |
Primjer:
{ "status": 3, "messages": [ "Order #1234 was not found." ] }
Vrste podataka
Tipovi podataka pojedinih ključeva u zahtjevima i odgovorima uvijek su opisani za određene krajnje točke. Ako nije drugačije navedeno, vrijednost u navodnicima""
je uvijek obvezni niz. Osim ako nije drugačije navedeno, numerička vrijednost uvijek je obvezni cijeli broj.
Komunikacijski popust mat Partner
Ovaj dio API -ja implementiran je na strani partnera i koristi se pozivima Zlevomat.
Potrebni korijenski URL API -ja dijeli partner, trebao bi biti u obliku
https://www.example.com/slevomat-zbozi-api/v1
Zatražite autorizaciju
Kad je API omogućen, partner primapartner_api_secret
, kojima se dolazni zahtjevi provjeravaju da li zaista dolaze s Popust.
Ovaj se parametar prenosi u HTTP zaglavljuX-PartnerApiSecret
.
Testno sučelje
Discountomat uključuje funkcionalnost za pozivanje API -ja na strani partnera i prikaz odgovora. Na korijenski URL koji je odredio partner prilikom pristupa API -ju-test
je pridružen URL -u partnera, tako da se pri testiranju naziva API na npr
https://example.com/slevomat-zbozi-api-test
kako bi se izbjeglo miješanje testnih podataka s aktivnim nalozima.
Testiranje partnerskog API -ja vrši se pomoću POST zahtjeva na sljedeće adrese:
– Novi poredakhttps://www.zlavomat.sk/test-zbozi-partner-api/v1/new-order
– Skupno ažuriranje očekivanih datuma isporukehttps://www.zlavomat.sk/test-zbozi-partner-api/v1/update-shipping-dates
– Promijenite status narudžbe u "Isporučeno kupcu – čeka se potvrda od strane kupca"https://www.zlavomat.sk/test-zbozi-partner-api/v1/order/<orderId>/mark-delivered
– Promijenite status narudžbe u "Spremno za osobno preuzimanje"https://www.zlavomat.sk/test-zbozi-partner-api/v1/order/<orderId>/ready-for-pickup
– Potvrda isporukehttps://www.zlavomat.sk/test-zbozi-partner-api/v1/order/<orderId>/confirm-delivery
– Odbijanje prihvaćanjahttps://www.zlavomat.sk/test-zbozi-partner-api/v1/order/<orderId>/reject-delivery
– Otkazivanjehttps://www.zlavomat.sk/test-zbozi-partner-api/v1/order/<orderId>/cancel
Zamijenite<orderId>
dio URL -a s bilo kojim brojem narudžbe s brojem, pri čemu se zahtjevi za broj narudžbe prenose API partneru.
Zahtjevi za ovo testno sučelje moraju se autorizirati zaglavljimaX-PartnerToken
iX-ApiSecret
.
Kad se uputi probni poziv na partnerski API, sustav šalje zaglavljeX-PartnerApiSecret
zaglavlje isto kao i pri radu uživo.
Podaci poslani novom narudžbom testni su podaci i generirani nasumično.
U slučaju slanja otkazivanja narudžbe, tijelo POST zahtjeva, uključite u polje JSONitems
(u istom formatu koji je poslao API), koji će biti potvrđen sučeljem za testiranje i poslan partnerskom API -ju API -ja, proslijedit će ga u istom formatu.
Novi poredak
Zahtjev sadrži podatke o novonastaloj narudžbi.
Narudžbe uvijek imaju jedinstvenezlavomatId
. Ako je API duplikatzlavomatId
stiže, zahtjev treba zanemariti (Discountomat je prvi pretvoreni zahtjev ocijenio neuspjelim pa ga ponavljamo) i odgovoriti također s HTTP 204.
created
je datum u formatu ISO 8601, paYYYY-MM-DD'T'HH:mm:ss+zz:zz
.
productId
sadrži ID događaja, variantId
ID kupljene varijante.
IzbornointernalId
označava interni ID koji se unosi prilikom varijante radnje kada je stvorena u partnerskom sučelju. Služi za identifikaciju proizvoda u partnerskom sustavu.
UbillingAddress
(adresa za naplatu) obavezno je samo ime (name
) kupca.
UshippingAddress
(adresa za isporuku) tvrtka nije obavezna (company
). U slučaju dostave doshippingAddress
sadrži adresu kupca, u slučaju osobne dostave, adresu ustanove u kojoj kupac preuzima robu.
Ključdelivery
.type
mogu poprimiti vrijednostiaddress
(dostava na adresu) ilipickup
(osobna zbirka).delivery
.name
sadrži naziv prijevoza ili naziv operacije.
delivery
.expectedShippingDate
(očekivani datum otpreme) idelivery
.expectedDeliveryDate
(predviđeni datum isporuke) su podaci u formatuYYYY-MM-DD
.
Ključweight
sadrži težinu narudžbe u kilogramima. U slučaju da ne znamo težinu svih artikala u narudžbi, ona uzima vrijednostnull
.
POST /order /$ slevomatId
{ "slevomatId": "480058070336", "created": "2021–09–06T16:39:02+02:00", "items": [ { "slevomatId": "7767", "productId": "25", "variantId": "194", "internalId": null, "name": "Sandále vel. 42", "amount": 1, "unitPrice": 250.0 }, { "slevomatId": "4764573102", "productId": "3065", "variantId": "385", "internalId": null, "name": "Ručník modrý", "amount": 10, "unitPrice": 100.0 } ], "billingAddress": { "name": "Petr Novák", "company": null, "street": null, "city": null, "postalCode": null, "country": null }, "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–09–08", "expectedDeliveryDate": "2021–09–11", "price": 100.0 }, "status": 1, "customer": { "email": "petr.novak@example.com" }, "weight": 1.2 }
POST /order /$ slevomatId
{ "slevomatId": "286238184713", "created": "2021–09–06T16:39:02+02:00", "items": [ { "slevomatId": "3461", "productId": "9", "variantId": "136", "internalId": null, "name": "Sandále vel. 42", "amount": 1, "unitPrice": 250.0 }, { "slevomatId": "2320086446", "productId": "2855", "variantId": "7027", "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–07", "expectedDeliveryDate": "2021–09–07", "price": 0.0 }, "status": 1, "customer": { "email": "petr.novak@example.com" }, "weight": 1.2 }
Skupno ažuriranje očekivanih datuma isporuke
Ako upravitelj ponuda, na zahtjev partnera, gurne datume dostave skupnih podataka za odabrane narudžbe, sustav obavještava partnerski API o ovom ažuriranju.
Poslani podaci sadrže polje ID narudžbe i novi očekivani datum otpreme.
POST /update-shipping-dates
{ "expectedShippingDate": "2021–09–06", "slevomatIds": [ "123456", "45454544" ] }
Otkazivanja
Otkazivanja se mogu izvršiti i na sustavu s popustom i na partnerskom sustavu. Ova krajnja točka upravlja stvaranjem otkazivanja na strani Zlavomat i njegovim prijenosom u partnerski sustav.
On stvara otkazivanje stavki narudžbe u navedenoj količini. Ako se otkaže cijela narudžba, sve stavke su navedene s odgovarajućom količinom.
Pojedine stavke mogu se i djelomično otkazati (npr. 1 komad od dva).
Napomena o otkazu (note
) nije obavezno.
POST /order/$slevomatId/cancel
{ "items": [ { "slevomatId": "1212", "amount": 1 }, { "slevomatId": "4545454", "amount": 2 } ], "note": "storno v zákonné lhůtě" }
Potvrda isporuke
Nakon što označite narudžbu kao "Isporučeno kupcu", od klijenta ćemo zatražiti potvrdu da ga je stvarno primio. Kada je narudžba označena kao primljena, pozvat će se ta krajnja točka.
POST /order/$slevomatId/confirm-delivery
{}
Odbijanje prihvaćanja
POST /order/$slevomatId/reject-delivery
{ "rejectionReason": "Důvod odmítnutí zákazníkem" }
Promijenite status narudžbe u "Spremno za preuzimanje"
Ova će se krajnja točka pozvati ako jeprevious krajnja točka je "Spremno za osobno prikupljanje" status je postavljen saautoMarkReadyForPickup
true
a na stranici Popust narudžba je automatski prebačena na "Spremno za osobno preuzimanje"
POST /order/$slevomatId/delivery-ready-for-pickup
{}
Promijenite status narudžbe u "Isporučeno kupcu – čeka se potvrda kupca"
Ova će se krajnja točka pozvati ako jeprevious status "Na putu", "Spremno za osobno preuzimanje" ili "Spremno za osobno preuzimanje" postavljeno je sautoMarkDelivered
true
a na stranici Popust narudžba je automatski prebačena u status "Isporučeno kupcu – čeka se potvrda kupca".
POST /order/$slevomatId/mark-delivered
{}
Komunikacijski partner ⇒ Zľavomat
Ovaj dio API -ja implementiran je na strani Discountomat i naziva ga partnerskim sustavom.
Korijenski URL API -ja je
https://www.zlavomat.sk/zbozi-api/v1
PHP biblioteka
Za implementaciju ove strane API -ja moguće je koristiti pripremljenu PHP knjižnicu. Knjižnica trenutno zahtijeva PHP verziju 5.4 ili noviju i pretpostavlja upotrebu alata Composer.
Upute za korištenje knjižnice i izvornog koda nalaze se na GitHubu .
Zahtjevi za autorizaciju
Kad je API omogućen, partner primapartner_token
iapi_secret
, koji se koriste za provjeru autentičnosti Zlavomat API poziva.
Ovi parametri se prenose u zaglavljaX-PartnerToken
iX-ApiSecret
.
Testno sučelje
Korijenski URL testnog sučelja je
https://www.zlavomat.sk/zbozi-api/v1-test
Na njemu je moguće pozvati sve radnje kao i na drugom sučelju.
Testno sučelje provjerava autorizaciju zahtjeva (partnerski token ispravnosti i API tajna) i valjanost dolaznih tijela zahtjeva (JSON). U tom pogledu, ponaša se identično kao oštar API.
Međutim, testno sučelje ne radi sa stvarnim narudžbama. Dakle, ne provjerava prelazi li narudžba između ispravnih stanja i sadrži li stavke s zadanim ID -ovima. Nakon što autorizacija i provjera prođu oblike zahtjeva, testno sučelje uvijek odgovara uspješnim kodom 200 ili 204.
Stvaranje otkaza
Izradite otkazivanje stavki narudžbe u navedenoj količini. Ako narudžba mora biti poništena u cijelosti, sve stavke navedene su s odgovarajućom količinom.
Pojedine stavke mogu se i djelomično otkazati (npr. 1 od dvije stavke).
Napomena o otkazu (note
) nije obavezno.
POST/order/$ slevomatId/cancel
{ "items": [ { "slevomatId": 45454, "amount": 15 } ], "note": "nepovinná poznámka" }
Promijenite status narudžbe u "U tijeku"
POST/order/$ slevomatId/mark-pending
{}
Promijenite status narudžbe u "Na putu sam"
Prilikom naručivanja, autoMarkDelivered
parametar se koristi za određivanje treba li se nakon postavljenog razdoblja isporuke ("Vrijeme od otpreme do isporuke") automatski prebaciti u status "Dostavljeno kupcu – čeka se potvrda kupca".
Odgovor sadrži ažurirani predviđeni datum isporuke.
POST/order/$ slevomatId/mark-en-route
{ "autoMarkDelivered": true }
Odgovor 200
{ "expectedDeliveryDate": "2021–08–25" }
Promijenite status narudžbe u "Spremno za osobno preuzimanje"
Kad narudžba prođe krozautoMarkReadyForPickup
parametar za određivanje, treba li se vrijeme od otpreme do isporuke za datu vrstu zbirnog mjesta automatski prebaciti u status "Spremno za isporuku". za osobno prikupljanje ".
Prilikom naručivanja, autoMarkDelivered
parametar određuje treba li nakon postavljenog broja dana preuzimanja za datu vrstu zbirnog mjesta automatski preći iz statusa "Spremno za osobno preuzimanje" u "Isporučeno kupcu – čeka se potvrda od strane kupca".
Kombinacija parametaraautoMarkReadyForPickup
lažno iautoMarkDelivered
istina nije dopuštena. U tom slučaju vraća se kod pogreške 9.
Odgovor sadrži ažurirani predviđeni datum isporuke.
POST/order/$ slevomatId/mark-getting-ready-for-pickup
{ "autoMarkReadyForPickup": true, "autoMarkDelivered": true }
Odgovor 200
{ "expectedDeliveryDate": "2021–09–06" }
Promijenite status narudžbe u "Spremno za preuzimanje"
Prilikom naručivanja, autoMarkDelivered
parametar se koristi za određivanje treba li nakon postavljenog broja dana preuzimanja za određeno mjesto preuzimanja vrste preuzimanja automatski preći u status "Dostavljeno kupcu – čeka se potvrda kupca".
POST /order/$slevomatId/mark-ready-for-pickup
{ "autoMarkDelivered": true }
Promijenite status narudžbe u "Isporučeno kupcu – čeka se potvrda kupca"
POST /order/$slevomatId/mark-delivered
{}
Promijenite adresu za dostavu
Adresa za dostavu može se promijeniti samo prilikom dostave na adresu (tj. Ne možete promijeniti mjesto preuzimanja).
Svi ključevi osimcompany
su potrebni.
Važeće vrijednosti zastate
ključni sucz
(Češka) isk
(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" }