Az adatkapcsolat teszteléséhez szükséged lesz egy teszt API kulcsra, amit e-mailben tudsz tőlünk kérni. Kérjük írj az info@orsys.hu e-mail címre és jelentkezésedben add meg a következő adatokat is:
Az Orsys felé intézett minden API kérésben jelen kell lennie a headerben az X-API-Key elemnek, aminek tartalmaznia kell az összekötés API kulcsát.
X-API-Key: "COPY API KEY HERE"
Ezt a végpontot kell használni, amikor egy véglegesített rendelést szeretnél átadni az Orsys rendszerének.
Végpont: https://api.orsys.hu/webhook/plugin/delivery
Az adatokat a body-ban JSON formátumban kell elküldeni, POST kérésként. Jobb oldalt a minta kód egy példa JSON kérést tartalmaz.
1{
2 "remoteId": "22636",
3 "cancelled": false,
4 "paymentType": "CASH",
5 "scheduledTime": "2023-09-13T18:17:30+02:00",
6 "takeAway": false,
7 "customer": {
8 "name": "Nagy Árpád",
9 "phone": "+36201234567",
10 "email": "nagy.arpad@mintaemail.hu"
11 },
12 "customerNote": "Kérem csörögjön a futár ha itt van.",
13 "deliveryAddress": {
14 "zip": "1101",
15 "city": "Budapest",
16 "address": "Mongol utca",
17 "number": "75",
18 "building": "B",
19 "staircase": "",
20 "floor": "4",
21 "apartment": "23",
22 "intercom": "Nagy Árpád, 23",
23 "additional": "Piros ajtó a lifttől balra",
24 "position": {
25 "lat": 47.4713559,
26 "lon": 19.1310685
27 }
28 },
29 "itemsTotal": 6590,
30 "deliveryFee": 500,
31 "packagingFee": 300,
32 "depositFees": {
33 0.0: 50,
34 27.0: 150
35 },
36 "itemsDiscount": 0,
37 "orderDiscount": 1000,
38 "grandTotal": 6390,
39 "paidAmount": 0,
40 "orderAcceptedUrl": "https://ipn.sajatdomain.hu/success/22636",
41 "orderRejectedUrl": "https://ipn.sajatdomain.hu/storno/22636",
42 "orderItems": [
43 {
44 "skuId": "AAA-011",
45 "name": "Jalapenos pizza (32 cm)",
46 "quantity": 2,
47 "unitPrice": 2100,
48 "note": "",
49 "toppings": [
50 {
51 "skuId": "AAR-002",
52 "name": "Bacon",
53 "quantity": 1,
54 "unitPrice": 300
55 },
56 {
57 "skuId": "AAR-006",
58 "name": "Feta sajt",
59 "quantity": 1,
60 "unitPrice": 250
61 }
62 ]
63 },
64 {
65 "skuId": "AAZ-001",
66 "name": "Sajtburger",
67 "quantity": 1,
68 "unitPrice": 1290,
69 "note": "Kérem a húst jól süssék át."
70 }
71 ]
72}
A teljes rendelés felépítése.
Változó | Típus | Kötelező | Leírás | |
---|---|---|---|---|
remoteId | String | igen | Éttermen belüli egyedi rendelésazonosító | |
cancelled | Boolean | nem | Korábban beküldött rendelés sztornózásakor legyen igaz. Ebben az esetben csak a remoteId-t kell tölteni, minden más lehet null. | |
paymentType | String | igen | Fizetési mód. Online fizetésnél állítani kell a paidAmount értéket is. | |
scheduledTime | DateTime | nem | Időre rendelés esetén a kért idő. ISO_OFFSET_DATE_TIME formátumban (ISO 8601 szerint + időzóna, pl: 2023-09-13T18:17:30+02:00) | |
takeAway | Boolean | nem | Elviteles rendelés esetén igaz értéket kell kapnia. | |
customer | Array | igen | Vásárló adatait tartalmazó vektor. | |
name | String | igen | Vásárló teljes neve. | |
phone | String | igen | Vásárló telefonszáma. Elvárt formátum: +36205230949 | |
String | nem | Vásárló e-mail címe. Áfás számla igénylésekor kötelező. | ||
customerNote | String | nem | Teljes rendeléshez tartozó megjegyzés. | |
deliveryAddress | Array | igen | Kötelező, ha kiszállítós rendelés. Amennyiben elviteles, akkor ezt az adatot nem kell megadni. | |
country | String | nem | Ország megjelölése ISO 3166 két karakteres változattal. | |
state | String | nem | Megye. | |
city | String | igen | Város. | |
zip | String | nem | Irányítószám. | |
address | String | igen | Utca teljes elnevezése. | |
number | String | igen | Házszám. | |
building | String | nem | Épület. | |
staircase | String | nem | Lépcsőház. | |
floor | String | nem | Emelet. | |
apartment | String | nem | Lakásszám. | |
intercom | String | nem | Csengő. | |
additional | String | nem | Egyéb megjegyzés a címhez. | |
position.lat | Double | nem | GPS koordináta. | |
position.lon | Double | nem | GPS koordináta. | |
billingAddress | Array | nem | Számlázási adatok | |
country | String | nem | Ország megjelölése ISO 3166 két karakteres változattal. | |
state | String | nem | Megye. | |
city | String | igen | Város. | |
zip | String | nem | Irányítószám. | |
address | String | igen | Utca teljes elnevezése. | |
number | String | igen | Házszám. | |
building | String | nem | Épület. | |
staircase | String | nem | Lépcsőház. | |
floor | String | nem | Emelet. | |
apartment | String | nem | Lakásszám. | |
intercom | String | nem | Csengő. | |
additional | String | nem | Egyéb megjegyzés a címhez. | |
position.lat | Double | nem | GPS koordináta. | |
position.lon | Double | nem | GPS koordináta. | |
vatNumber | String | igen | Adószám. | |
firstName | String | nem | Keresztnév. | |
lastName | String | nem | Vezetéknév. | |
companyName | String | nem | Cégnév. | |
itemsTotal | Double | igen | Összes termék árának kedvezményekkel csökkentett összege. | |
deliveryFee | Double | nem | Kiszállítási díj, ha van. | |
packagingFee | Double | nem | Csomagolási díj, ha van. | |
depositFees | Dictionary | nem | Rendeléshez tartozó visszaváltási és betétdíjak. A kulcs az áfa érték az érték pedig a fizetendő összeg. | |
itemsDiscount | Double | nem | Rendelésre adott termék kedvezmények összege. Ellenőrzések: -nem lehet negatív szám -összege megegyezik a termékeknél adott kedvezményekkel | |
orderDiscount | Double | igen | Rendelésre adott fix összegű kedvezmény. | |
grandTotal | Double | igen | Végösszeg. | |
paidAmount | Double | igen | Már kifizetett összeg. Általában 0 (készpénzes, terminálos fizetésnél), vagy a grandTotallal megegyező lesz (teljes online fizetésnél). A futár [grandTotal - paidAmount] összeget fog kérni kiszállításkor. | |
orderAcceptedUrl | String | igen | Egy URL amit az Orsys rendszere meghív a rendelés elfogadásakor. | |
orderRejectedUrl | String | igen | Egy URL amit az Orsys rendszere meghív a rendelés elutasításakor. | |
orderPreparedUrl | String | nem | Egy URL amit az Orsys rendszere meghív a kért tételek elkészültekor (elviteles rendelésnél amikor átvehető az étel). Nem minden partner étteremnél fog helyes időpontot visszajelezni, mert azon múlik, hogy használják az éttermek a POS rendszert. | |
orderPickedUpUrl | String | nem | Egy URL amit az Orsys rendszere meghív a futár elindulásakor. Nem minden partner étteremnél fog helyes időpontot visszajelezni, mert azon múlik, hogy használják az éttermek a POS rendszert. | |
orderCompletedUrl | String | nem | Egy URL amit az Orsys rendszere meghív a rendelés teljesítésekor (elviteles rendelésnél is). Nem minden partner étteremnél fog helyes időpontot visszajelezni, mert azon múlik, hogy használják az éttermek a POS rendszert. | |
orderItems | Array | igen | Rendelt termékek és tételek. Részletes magyarázat lentebb. |
A rendeléshez tartozó termékek felépítése.
Változó | Típus | Kötelező | Leírás |
---|---|---|---|
skuId | String | nem | Orsys-ban található termék azonosító. Nem kötelező de ajánlott elküldeni, hogy működjön az NTAK és a partner statisztikája. |
name | String | igen | Termék teljes elnevezése. Ez jelenik meg a POS felületen. |
note | String | nem | Termék megjegyzés. |
quantity | Int | nem | Rendelt mennyiség. |
discountUnitPrice | Double | nem | Termék kedvezményes egységára. Ha nincs kedvezmény akkor nem kell megadni. Ellenőrzések: -nem lehet negatív szám |
unitPrice | Double | igen | A termék egy db teljes ára. Nem tartalmazza a feltéteket és kedvezményeket. |
toppings | Array | nem | Termékhez tartozó rendelt feltétek. |
vatPercent | Double | nem | Áfa százalék (0/5/18/27), ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
ntakCategory | String | nem | NTAK kategória, ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
unitType | String | nem | Mennyiségi egység, ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
amountInUnit | Double | nem | Mennyiség, ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
A termékekhez tartozó rendelt feltétek.
Változó | Típus | Kötelező | Leírás |
---|---|---|---|
skuId | String | nem | Orsys-ban található termék azonosító. |
name | String | igen | Termék teljes elnevezése. Ez jelenik meg a POS felületen. |
quantity | Int | nem | Rendelt mennyiség. |
discountUnitPrice | Double | nem | Egy egység kedvezményes ára. Ha nincs kedvezmény akkor nem kell megadni. Ellenőrzések: -nem lehet negatív szám |
unitPrice | Double | igen | Egy egység teljes ára, feltétekkel és kiegészítőkkel együtt. |
vatPercent | Double | nem | Áfa százalék (0/5/18/27), ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
ntakCategory | String | nem | NTAK kategória, ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
unitType | String | nem | Mennyiségi egység, ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
amountInUnit | Double | nem | Mennyiség, ha valamiért eltér az étlapon megadottól, vagy az skuId nincs megadva. |
Csak a következő fizetési módokat lehet beküldeni:
A rendelés leadása után a következőt válaszolja a szerver.
Sikeres feldolgozás esetén 200-as státuszt add vissza a rendszer egy üres body-val.
Hiba esetén 400 Bad Request státuszt ad vissza és a body-ban található a hiba részletezése
1{
2 "exceptionMessage": "exc_invalid_field",
3 "additionalInfo": "Missing remoteId!"
4}
Rendelés feldolgozás után a rendszer az alapján, hogy mit csinál az étterem, visszajelez a küldő félnek a megadott URL-eken.
TESZT RENDSZER ESETÉN: a teszt rendszerben automatikus visszajelzés történik a rendelés beérkezése után 60 másodperccel. A visszajelzés random, 50-50 %-ban sikeres és sikertelen. Ez csak azért van, hogy könnyedén le tudjátok tesztelni a visszajelzés részt is.
A webhook esetén minden hívás body-ja azonos.
1{
2 "remoteId": "22360",
3 "status": "ACCEPTED",
4 "acceptanceTime": "2023-09-13T18:17:30+02:00",
5 "rejectReason": Null
6}
Kód | Leírás |
---|---|
ADDRESS_INCOMPLETE_MISSTATED | |
BAD_WEATHER | Rossz időjárás miatt nincs lehetőség a teljesítésre |
BLACKLISTED | A vásárló feketelistás, ezért nem lesz teljesítés |
CARD_READER_NOT_AVAILABLE | Az étterem jelenleg nem rendelkezik bankkártya terminállal |
CLOSED | Zárva az étterem |
CONTENT_WRONG_MISLEADING | A rendelés tartalma félrevezető, nem érthető |
FOOD_QUALITY_SPILLAGE | A vásárlónak problémája volt az étellel |
FRAUD_PRANK | Kamu vagy csaló rendelés |
ITEM_UNAVAILABLE | A rendelt tétel jelenleg nem elérhető |
LATE_DELIVERY | Késői kiszállítás miatt nem kérte a vásárló |
MENU_ACCOUNT_SETTINGS | Az étteremnek problémája van az átadott termékekkel |
MOV_NOT_REACHED | Túl alacsony rendelés érték miatt nem lesz teljesítve |
NO_COURIER | Nincs futár a kiszállítás elvégzésére |
NO_PICKER | Nincs elviteles rendelés |
NO_RESPONSE | Nincs válasz a rendelés feldolgozására |
OUTSIDE_DELIVERY_AREA | A kiszállítási területen kívűl található a rendelés |
TECHNICAL_PROBLEM | Technikai probléma miatt nem teljesíthető a rendelés |
TEST_ORDER | Teszt rendelés |
TOO_BUSY | Túl sok a rendelés miatt nem teljesíthető |
UNABLE_TO_FIND | Nem sikerült a vásárlót megtalálni és átadni a rendelést |
UNABLE_TO_PAY | A vásárló nem tudja kifizetni a rendelést |
UNPROFESSIONAL_BEHAVIOUR | Nem megfelelő viselkedés nem teljesíthető a rendelés |
WILL_NOT_WORK_WITH | Az étterem nem dolgozik ezzel a szolgáltatóval |
WRONG_ORDER_ITEMS_DELIVERED | Rossz termékek szállítása miatt nem kéri a vevő a rendelést |