Porudžbine
Porudžbine stižu iz vaše prodavnice, vaših radnji i ostalih prodajnih kanala. Ovim endpointima ih čitate u ERP ili sistem za isporuku, vodite ih kroz statuse i otkazujete ih.
Id-jevi porudžbina#
Porudžbinu imenuju tri broja: id, data_part i time_part. Svaka porudžbina u odgovoru nosi sva tri. Čuvajte ih zajedno: PUT i DELETE /orders/{id} uz id traže dataPart i timePart. Pogledajte Identifikatore i uparivanje.
Statusi#
Porudžbina ima tri statusa, svaki iz svoje liste:
| Polje | Šta prati |
|---|---|
| order_status_id | Samu porudžbinu: Saved, External Processing, Finalized, Canceled, Expired, i stanja greške Failed, Errored, Tax Report Error i druga. Iz GET /order_statuses. |
| payment_status_id | Plaćanje: Pending, Reserved, Captured, Refunded, Cancelled i još. Iz GET /payment_statuses. |
| delivery_status_id | Isporuku: Pending, Picked, Packed, Shipped, In Transit, Delivered i još. Iz GET /delivery_statuses. |
Svaki unos liste ima id, name, color i final, koji kaže da li status završava put porudžbine. Liste su iste za svaku aplikaciju, ali im se id-jevi mogu razlikovati između okruženja, pa ih pročitajte i uparujte po nazivu umesto da id-jeve upisujete u kod.
Promena statusa, preko PUT /orders/{id} ili grupne izmene, pokreće ono što je vaša aplikacija u Admin-u podesila za tu promenu, na primer poruku kupcu. Postavljanje statusa porudžbine na Finalized računa se i kao završetak porudžbine.
Porudžbina u listama#
Ono što GET /orders vraća za svaku porudžbinu. Iznosi su ovde formatiran tekst u valuti porudžbine, na primer "1.290,00", spremni za prikaz; GET /orders/{id} ih vraća kao brojeve.
| Polje | Opis |
|---|---|
| id, data_part, time_partinteger | Id porudžbine. |
| order_numberstring | Naš broj porudžbine, jedinstven u vašoj aplikaciji. |
| invoice_number, external_refstring · može biti null | Broj računa, i vaša sopstvena referenca porudžbine kad je stigla iz vašeg sistema. |
| order_datedatetime · ISO 8601, UTC | Kad je porudžbina napravljena. Šalje se bez pomaka. |
| customer_id, first_name, last_name, emailmože biti null | Kupac, kad ga ima. |
| app_location_idinteger | Prodajna lokacija kojoj porudžbina pripada. |
| sales_channel_id, sales_channel | Prodajni kanal, po id-ju i nazivu. |
| order_status, payment_status, delivery_statusobject | Svaki kao {id, name, color, final}. Pogledajte Statuse. |
| canceledboolean | Da li je porudžbina otkazana. |
| sales, discount, net_sales, vat, end_salesstring | Bruto iznos, popust, neto, PDV i iznos za plaćanje, u valuti porudžbine. |
| paid, debtstring | Šta je plaćeno i šta se još duguje. |
| sales_s, end_sales_s, …string | Isti iznosi u podrazumevanoj valuti vašeg tržišta. |
| currency_sign, exchange_rate | Valuta porudžbine i njen kurs prema podrazumevanoj valuti tržišta. |
| itemsniz objekata | Stavke porudžbine: product_id, product_variant_id, product_name, product_variant_name, qty, price, discount, promo_discount, member_discount, line_total i image_url. |
| fee_itemsniz objekata | Stavke naknada, na primer dostava, odvojene od proizvoda. |
| payment_methodsstring | Korišćeni načini plaćanja, odvojeni zarezima. |
| delivery_address, shipment_method_id, shipment_method_name | Gde i kako se porudžbina isporučuje. |
| promo_discount_total, member_discount_total, line_savings_totalnumber | Koliko je kupac uštedeo kroz promocije, cene za članove i popuste na stavkama. |
| comment, tags | Slobodan tekst i vaše oznake. |
Pretraga porudžbina#
Porudžbine vaše aplikacije, najnovije prve, sa stavkama. Koristite ga da preuzimate nove porudžbine, na primer na svakih nekoliko minuta, sa dateTimeFrom postavljenim na poslednju porudžbinu koju ste videli.
Važe prava korisnika tokena. Korisnik kom su u Admin-u dozvoljeni samo neki prodajni kanali vidi samo njihove porudžbine, i nijednu porudžbinu bez kanala. Korisniku tokena dajte pristup svakom kanalu koji želite da čitate.
Parametri upita
| Parametar | Opis |
|---|---|
| dateTimeFrom, dateTimeTodatetime | Porudžbine napravljene od ili do ovog trenutka, uključivo, na primer 2026-10-01T00:00:00. Svaki može da se pošalje sam. |
| searchstring | Deo broja porudžbine ili računa, ili imena, emaila ili telefona kupca. |
| customerIdinteger | Porudžbine jednog kupca. |
| appLocationIdinteger | Porudžbine jedne prodajne lokacije. |
| orderBystring · podrazumevano order_date desc | order_date, id, order_number, invoice_number, sales, end_sales, paid, debt ili customer_name, po želji sa asc ili desc iza. Sve ostalo se vraća na podrazumevano. |
| offsetinteger · podrazumevano 0 | Koliko porudžbina da se preskoči. |
| limitinteger · podrazumevano 30 | Koliko porudžbina da se vrati, najviše 10.000. |
Brojčani parametar koji nije broj se zanemaruje, pa proverite vrednosti: greška u kucanju proširuje pretragu umesto da je obori.
Vraća
data: listu porudžbina. Ukupnog broja nema; pogledajte Paginaciju i filtriranje.
curl -G "https://api.morffeus.com/api/v2/orders" \ -H "Authorization: Bearer $MORFFEUS_TOKEN" \ --data-urlencode "dateTimeFrom=2026-10-01T06:00:00" \ --data-urlencode "orderBy=order_date asc" \ -d "limit=100"
const params = new URLSearchParams({ dateTimeFrom: lastSeen, // order_date poslednje sačuvane orderBy: 'order_date asc', limit: '100', }); const res = await fetch(`https://api.morffeus.com/api/v2/orders?${params}`, { headers: { Authorization: `Bearer ${process.env.MORFFEUS_TOKEN}` }, }); const { data } = await res.json();
{
"data": [
{
"id": 903114,
"data_part": 0,
"time_part": 1,
"order_number": "WEB-2026-04812",
"order_date": "2026-10-01T07:12:40",
"customer_id": 5521,
"first_name": "Ana",
"last_name": "Petrović",
"app_location_id": 31,
"order_status": {
"id": 1,
"name": "Saved",
"color": "#64748b",
"final": false
},
"payment_status": { "id": 3, "name": "Captured", … },
"delivery_status": { "id": 1, "name": "Pending", … },
"end_sales": "1.290,00",
"currency_sign": "RSD",
"payment_methods": "Card",
"items": [
{
"product_variant_id": 91120,
"product_name": "Dog food",
"qty": 1.0,
"price": "1.290,00",
…
}
],
…
}
]
}
Čitanje jedne porudžbine#
Zapis jedne porudžbine, sa plaćanjima i porezima. dataPart i timePart su ovde opcioni, ali uz njih se porudžbina brže nalazi.
Vraća
data: polja porudžbine, sa iznosima kao brojevima i id-jevima statusa (order_status_id, payment_status_id, delivery_status_id), plus:
payments: svako plaćanje saamount,payment_method,payment_method_type,payment_status,payment_dateifinalized.tax_brackets: po stopi PDV-a,label,rate,taxable_baseitax_amount.transaction_reference: kod plaćanja karticom, provajder, id transakcije, autorizacioni kod, vrsta kartice i maskiran broj, ilinull.customer_data,delivery_data,billing_data: ono što je uneto pri naplati.claims_count: koliko je reklamacija registrovano na porudžbini.
Ovaj poziv ne vraća stavke porudžbine; one su u redu porudžbine u GET /orders. Porudžbina koja nije u vašoj aplikaciji, ili koju korisnik tokena ne sme da vidi, vraća 404 sa praznim telom.
curl -G "https://api.morffeus.com/api/v2/orders/903114" \ -d "dataPart=0" -d "timePart=1" \ -H "Authorization: Bearer $MORFFEUS_TOKEN"
{
"data": {
"id": 903114,
"data_part": 0,
"time_part": 1,
"order_number": "WEB-2026-04812",
"order_status_id": 1,
"payment_status_id": 3,
"delivery_status_id": 1,
"end_sales": 1290.0,
"paid": 1290.0,
"payments": [
{
"amount": 1290.0,
"payment_method": "Card",
"payment_status": "Captured",
"finalized": true,
…
}
],
"tax_brackets": [
{
"label": "20%",
"rate": 20.0,
"taxable_base": 1075.0,
"tax_amount": 215.0,
"vat_id": 2
}
],
"claims_count": 0,
…
}
}
Izmena porudžbine#
Menja polja koja pošaljete: najčešće status dok porudžbina prolazi kroz isporuku, broj za praćenje pošiljke ili broj računa iz vašeg ERP-a. PATCH radi isto.
Parametri
| Parametar | Opis |
|---|---|
| dataPart, timePartobaveznointeger | Ostatak id-ja porudžbine, u upitu ili u telu zahteva. |
| orderobaveznoobject | Polja koja se menjaju. |
| order.order_status_id, payment_status_id, delivery_status_idinteger | Novi statusi, iz lista. |
| order.tracking_number, invoice_number, commentstring | Praćenje pošiljke, broj računa, slobodan tekst. |
| order.tagsniz stringova | Zamenjuje oznake porudžbine. |
Iznosi se ne preračunavaju i stavke se ovde ne mogu menjati. Da biste poništili porudžbinu, otkažite je.
Vraća
data: polja porudžbine posle izmene.
Greške
| Status | Kada |
|---|---|
| 400 | Nedostaje dataPart, timePart ili order. |
| 404 | U vašoj aplikaciji nema takve porudžbine: Order not found. |
| 422 | Polje nije ispravno, na primer id statusa koji ne postoji. Svako polje navodi svoje greške. |
ORDER="https://api.morffeus.com/api/v2/orders/903114" curl -X PUT "$ORDER?dataPart=0&timePart=1" \ -H "Authorization: Bearer $MORFFEUS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "order": { "delivery_status_id": 4, "tracking_number": "RR123456789RS" } }'
{
"errors": {
"message": ["Order not found"]
}
}
Otkazivanje porudžbine#
Otkazuje porudžbinu. Ništa se ne briše: porudžbina ostaje, označena kao otkazana, a uz nju se beleži otkazivanje.
Ovo vraća novac kupcu. Svako naplaćeno plaćanje se refundira preko svog provajdera plaćanja pre nego što se porudžbina otkaže. Ako jedna refundacija ne uspe, poziv se tu zaustavlja, a već urađene refundacije se ne poništavaju.
Poziv redom:
- refundira naplaćena plaćanja;
- postavlja porudžbinu na
Canceled, sacanceled: true, i menja njen status plaćanja; - pravi porudžbinu otkazivanja: kopiju sa negativnim količinama i iznosima, čiji se broj završava sa
[-], koja upućuje na original; - otkazuje pretplate kupljene porudžbinom i vraća kupcu pogodnosti lojalnosti koje je na nju potrošio;
- izdaje fiskalnu refundaciju kad je original bio fiskalizovan.
Zalihe se ne vraćaju, a bodovi koje je kupac zaradio se ne oduzimaju. Ako se roba vrati, proknjižite zalihe preko Zaliha.
Parametri
| Parametar | Opis |
|---|---|
| dataPart, timePartobaveznointeger | Ostatak id-ja porudžbine, u upitu. |
Vraća
data: porudžbinu otkazivanja, a ne original, sa njenim items. Njen original_order_id je porudžbina koju ste otkazali.
Greške
| Status | Kada |
|---|---|
| 400 | Nedostaje dataPart ili timePart. |
| 404 | U vašoj aplikaciji nema takve porudžbine. Telo je prazno. |
| 422 | Porudžbina je već otkazana: API.Orders.AlreadyCanceled. Refundacija nije uspela, na primer Order has already been refunded. |
ORDER="https://api.morffeus.com/api/v2/orders/903114" curl -X DELETE "$ORDER?dataPart=0&timePart=1" \ -H "Authorization: Bearer $MORFFEUS_TOKEN"
{
"data": {
"id": 903120,
"order_number": "WEB-2026-04812 [-]",
"original_order_id": 903114,
"canceled": true,
"end_sales": -1290.0,
"items": [{ "product_variant_id": 91120, "qty": -1.0, … }],
…
}
}
{
"errors": {
"Orders": ["API.Orders.AlreadyCanceled"]
}
}
Status za više porudžbina#
Postavlja jedno polje statusa na jednu vrednost za listu porudžbina, na primer da se cela pošiljka označi kao poslata.
Parametri tela zahteva
| Parametar | Opis |
|---|---|
| ordersobaveznoniz nizova | Svaka porudžbina kao [id, data_part, time_part]. |
| columnobaveznostring | order_status_id, payment_status_id, delivery_status_id ili sales_channel_id. |
| valueobaveznointeger | Id koji se postavlja. |
Porudžbine kojima se status promeni pokreću iste naknadne radnje kao u PUT /orders/{id}. Promena prodajnog kanala ne pokreće nijednu. Grupna izmena ne upisuje istoriju porudžbine.
Vraća
data.updated: koliko se porudžbina promenilo.
Greške
| Status | Kada |
|---|---|
| 422 | column nije jedna od četiri: API.Orders.InvalidColumn. Izmena nije uspela, na primer id statusa koji ne postoji: API.Orders.BulkUpdateFailed. |
curl -X PUT "https://api.morffeus.com/api/v2/orders/bulk_update" \ -H "Authorization: Bearer $MORFFEUS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "orders": [[903114, 0, 1], [903117, 0, 1]], "column": "delivery_status_id", "value": 4 }'
{
"data": { "updated": 2 }
}
Liste šifarnika#
| Poziv | Vraća |
|---|---|
| GET /order_statuses | Statuse porudžbina: id, name, color, final. |
| GET /payment_statuses | Statuse plaćanja, sa istim poljima. |
| GET /delivery_statuses | Statuse isporuke, sa istim poljima. |
| GET /sales_channels | Prodajne kanale: id, name, color, image_url. |
| GET /order_documents?orderId= | Dokumente porudžbine, kao račune i fiskalne isečke: id, name, document_number, document_date, image_url, verification_url, finalized. Pošaljite i dataPart i timePart. |
Povezano#
- Identifikatori i uparivanje: zašto porudžbina ima tri id-ja.
- Kupci: ljudi iza porudžbina.
- Zalihe: porudžbine same po sebi ne menjaju zalihe.