Fabrixa Integration API dokumentācija
29 min lasīšanas Pēdējoreiz atjaunināts: 06-11-2026 119 skatījumi
Integration API palīdz izveidot un pārvaldīt Fabrixa pasūtījumus, atvērt Fabrixa Studio un ar tīmekļa āķu palīdzību sekot līdzi ražošanas un izpildes statusam. API atbilst REST principiem un visos pieprasījumu un atbilžu ķermeņos izmanto JSON.
BĀZES URL
https://api.fabrixa.com/v2/integration
Sūtiet visus pieprasījumus uz šo bāzes URL, kam seko konkrētā galapunkta ceļš. Bāzes URL ir pamats darbam ar Fabrixa API - resursu iegūšanai, izveidei, atjaunināšanai vai dzēšanai.
Autentifikācija
Lai piekļūtu Integration API, autentificējiet savus pieprasījumus gan ar lietotnes piekļuves pilnvaru (access token), gan ar lietotnes atslēgu:
Authorization galvene
Authorization: Bearer APPLICATION_ACCESS_TOKEN
Lietotnes atslēgas galvene
X-Application-Key: APPLICATION_KEY
cURL komandas piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/ping' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Aizstājiet APPLICATION_ACCESS_TOKEN ar savu faktisko piekļuves pilnvaru un APPLICATION_KEY ar savu faktisko lietotnes atslēgu.
Galapunkti un pieprasījumi
Integration API galapunkti ir sakārtoti pēc resursa veida un atbilst REST arhitektūras stilam. Katrs galapunkts pārstāv resursu, un darbības ar šiem resursiem tiek veiktas, izmantojot standarta HTTP metodes.
Visi Integration API pieprasījumi un atbildes ir JSON formātā, nodrošinot konsekventu un viegli lietojamu saskarni darbam ar API.
Pilnu informāciju par katru galapunktu, tostarp pieprasījumu un atbilžu piemērus, skatiet mūsu Swagger dokumentācijā.
Atbildes formāts
Visi galapunkti atgriež datus standartizētā formātā ar šādiem objektiem:
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/products",
"first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
"last_page": "https://api.fabrixa.com/v2/integration/products?page=2",
"next_page": "https://api.fabrixa.com/v2/integration/products?page=2",
"prev_page": null
},
"meta": {
"total": 2,
"current_page": 1,
"per_page": 10
},
"data": [
{
"id": 1,
"name": "Product 1",
"description": "Description of Product 1"
},
{
"id": 2,
"name": "Product 2",
"description": "Description of Product 2"
}
]
}
Atbildes objektu apraksts
links
Satur lapošanas saites, ar kurām pārvietoties pa rezultātiem.
self— pašreizējās lapas URL.first_page— rezultātu pirmās lapas URL.last_page— rezultātu pēdējās lapas URL.next_page— nākamās lapas URL.null, ja nākamās lapas nav.prev_page— iepriekšējās lapas URL.null, ja iepriekšējās lapas nav.
meta
Satur atbildes metadatus, piemēram, informāciju par lapošanu.
total— kopējais pieejamo vienību skaits visās lapās.current_page— rezultātu pašreizējās lapas numurs.per_page— vienību skaits lapā.
data
Atbildes galvenais saturs. data atšķiras atkarībā no galapunkta - tas var būt viens objekts, piemēram, viens produkts, vai objektu masīvs, piemēram, produktu saraksts.
Kļūdas un statusa kodi
Visi API pieprasījumi atgriež HTTP statusa kodus, kas sniedz ieskatu atbildē.
400 Bad Request
Serveris nevar apstrādāt pieprasījumu validācijas kļūdu dēļ - trūkstoši vai nederīgi parametri.
401 Unauthorized
Klients nav norādījis derīgus autentifikācijas datus. Tiek atgriezts arī tad, ja piekļuves pilnvara ir atsaukta.
403 Forbidden
Serveris noraidīja pieprasījumu nepietiekamu piekļuves tiesību dēļ, parasti tāpēc, ka tiesības ir nepareizas vai to nav.
404 Not Found
Pieprasītais resurss serverī netika atrasts.
412 Precondition Failed
Pieprasījumu nevar izpildīt resursa pašreizējā stāvoklī, piemēram, pasūtījumam, ko vairs nevar atcelt.
429 Too Many Requests
Klients ir pārsniedzis pieļaujamo pieprasījumu skaitu noteiktā laika posmā. Skatiet Pieprasījumu ierobežojumi.
5xx Errors
Notikusi iekšēja servera kļūda. Lūdzu, sazinieties ar Fabrixa atbalstu, norādot neveiksmīgā pieprasījuma detaļas.
Kļūdas atbildes ķermenis
Kļūdas atbildes ķermeņa piemērs:
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/ping"
},
"meta": [],
"errors": {
"messages": [
"Application Key is not specified."
]
}
}
errors satur informāciju par to, kas neizdevās. Masīvs messages uzskaita kļūdu aprakstus. Bad Request gadījumā jūs saņemsiet to lauku nosaukumus, kuri neizturēja validāciju.
Pieprasījumu ierobežojumi
Integration API atbalsta ierobežojumu 30 pieprasījumi vienai lietotnei minūtē.
Ja pārsniegsiet šo ierobežojumu, saņemsiet atbildi 429 Too Many Requests.
Visas Integration API atbildes ietver galveni X-RateLimit-Remaining, kas norāda, cik pieprasījumus klients vēl var veikt, un galveni X-RateLimit-Limit, kas norāda kopējo minūtē pieļaujamo skaitu.
Smilškastes režīms
Smilškastes režīms ļauj pārbaudīt integrāciju no sākuma līdz beigām, pirms kāds īsts pasūtījums tiek izgatavots vai apmaksāts. Tas attiecas uz visu jūsu kontu: pasūtījumi no visiem pārdošanas kanāliem, tostarp Integration API un pieslēgtajiem Shopify un WooCommerce veikaliem, netiek izgatavoti un netiek norakstīti no jūsu atlikuma. Jūsu konts ir smilškastes režīmā, kamēr tā statuss ir gaida aktivizēšanu.
Smilškastes režīmā varat:
- pieslēgt savu Shopify vai WooCommerce veikalu vai izveidot Integration API kanālu;
- pievienot produktus un pārbaudīt cenas un piegādes aplēses;
- importēt, izveidot, atjaunināt un atcelt pasūtījumus;
- pārliecināties, ka neviens no šiem pasūtījumiem netiek izgatavots un netiek norakstīts no jūsu atlikuma;
- pārbaudīt tīmekļa aizķeru piegādi un parakstus.
Lai pārbaudītu pasūtījumus, pievienojiet produktus no Fabrixa kataloga: atveriet produktu, noklikšķiniet uz Pārdot un izvēlieties variantus un dizainus. Pēc tam tie parādās sadaļā Mani produkti.
Lai pārslēgtu kontu smilškastes režīmā, atveriet Platform, dodieties uz Iestatījumi → Uzņēmums → Smilškastes režīms un noklikšķiniet uz Pārslēgt smilškastes režīmā. To var ieslēgt arī, pievienojot jaunu pārdošanas kanālu, tostarp Integration API kanālu, vai rakstīt uz support@fabrixa.com, un mēs pārslēgsim jūsu kontu jūsu vietā. Smilškastes režīms ir pieejams tikai aktīviem kontiem.
Kad esat gatavs, aktivizējiet kontu pats Platform sadaļā Iestatījumi → Uzņēmums → Smilškastes režīms. Varat arī rakstīt uz support@fabrixa.com, un mēs to aktivizēsim jūsu vietā. Pieslēgtie veikali un API akreditācijas dati turpina darboties, tāpēc nekas nav jākonfigurē no jauna.
Pēc aktivizēšanas visi jaunie pasūtījumi tiek nodoti ražošanā un norakstīti no jūsu atlikuma. Pirms aktivizēšanas izveidotie pasūtījumi paliek testa pasūtījumi: tie nekad netiek izgatavoti vai apmaksāti, arī pēc aktivizēšanas.
Produkti
Katalogs ir viss, ko ražo Fabrixa. Jūsu produkti ir kataloga produkti, kurus esat pievienojis savam Fabrixa kontam, ar saviem nosaukumiem, aprakstiem, attēliem un SKU. Pasūtījuma rinda norāda uz produkta variantu - vienu produkta izmēru vai versiju - pēc tā sku vai variant_id: uz kāda jūsu produkta variantu vai uz tieši pasūtītu kataloga variantu.
Kataloga pārlūkošana
Lai iegūtu Fabrixa ražoto produktu sarakstu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/catalog/products ar saviem piekļuves datiem. Tajā ir aktīvie produkti, kuriem ir variants, ko pašlaik ražo drukas partneris, un tikai šie varianti - katrs ar savu SKU, pārdošanas cenu, izmēriem un opciju vērtībām.
Vaicājuma parametri
pageunlimit(līdz 100) - sadala sarakstu lapās. Bez tiem viss katalogs tiek atgriezts vienā atbildē.search- produkti, kuru nosaukumā ir teksts vai kuru slug vai variantaSKUar to sākas.category_id- kategorijas produkti;parent_category_id- jebkuras augstākā līmeņa kategorijas apakškategorijas produkti. Skatiet Kataloga kategorijas.group_id- kataloga grupas produkti.sort_by-name,created,updated,type,popularvaisold,sort_ordersecībāascvaidesc. Pēc noklusējuma jaunākie produkti ir pirmie.
Pieprasījuma piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/catalog/products?category_id=19&limit=10' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/catalog/products",
"first_page": "https://api.fabrixa.com/v2/integration/catalog/products?page=1",
"last_page": "https://api.fabrixa.com/v2/integration/catalog/products?page=1",
"next_page": null,
"prev_page": null
},
"meta": {
"total": 1,
"current_page": 1,
"per_page": 10
},
"data": [
{
"id": 1305,
"name": "Duvet Cover",
"subtitle": "Duvet Cover with a pillow",
"description": "Soft personalized duvet cover.
",
"slug": "duvet-cover",
"code": "DUVET-001",
"HS_code": "63023100",
"created_at": "2024-08-16T09:32:07.000000Z",
"updated_at": "2024-08-16T09:38:50.000000Z",
"is_sellable": true,
"variants_min_selling_price": "29.95",
"variants_max_selling_price": "49.95",
"type": {
"id": 5,
"name": "Duvet cover"
},
"status": {
"id": 2,
"name": "Active"
},
"categories": [
{
"id": 19,
"name": "Duvet covers",
"description": "Personalized duvet covers",
"parent_category": {
"id": 8,
"name": "Bedroom",
"description": "Bedroom products"
}
}
],
"images": [
{
"id": 5566,
"url": "https://storage.googleapis.com/example/catalog/duvet-cover.jpg",
"is_main": true,
"created_at": "2024-08-16T09:32:07.000000Z",
"screen_type_size": "large",
"sort_number": 1
}
],
"variants": [
{
"id": 2705,
"name": "Duvet Cover",
"subtitle": "140x200",
"description": null,
"SKU": "COT864311",
"selling_price": "29.95",
"width": "140.00",
"height": "200.00",
"length": "2.00",
"weight": "1.20",
"created_at": "2024-08-06T11:23:44.000000Z",
"updated_at": "2024-08-16T09:36:37.000000Z",
"options": [
{
"id": 151,
"name": "Duvet Size",
"values": [
{
"id": 471,
"value": "140x200"
}
]
}
]
},
{
"id": 2708,
"name": "Duvet Cover",
"subtitle": "200x220",
"description": null,
"SKU": "COT864314",
"selling_price": "49.95",
"width": "200.00",
"height": "220.00",
"length": "2.00",
"weight": "1.80",
"created_at": "2024-08-06T11:23:44.000000Z",
"updated_at": "2024-08-16T09:37:11.000000Z",
"options": [
{
"id": 151,
"name": "Duvet Size",
"values": [
{
"id": 474,
"value": "200x220"
}
]
}
]
}
]
}
]
}
Atbildes lauki
id,name,subtitle,description(HTML),slug,codeunHS_code- muitas tarifa kods.is_sellable- vai produkts ir atvērts pārdošanai. Slēgts produkts joprojām ir sarakstā, bet pasūtījums kādam no tā variantiem tiek noraidīts.variants_min_selling_priceunvariants_max_selling_price- uzskaitīto variantu cenu diapazons.type- produkta tips, kas nosaka drukas slāņus un PDF lapu secību;status- katalogā vienmērActive.categories- kategorijas, kurās ir produkts, katra ar savuparent_category.images- produkta attēli arurl,is_main,screen_type_sizeunsort_number.variants- pasūtāmās produkta versijas:id,name,subtitle,SKU,selling_price, izmēriwidth,height,lengthunweight, kā arīoptions- opciju vērtības, kas nosaka šo variantu, piemēram, tā izmērs.
Kataloga kategorijas
Lai iegūtu kategoriju sarakstu, kurās katalogs ir sakārtots, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/catalog/categories ar saviem piekļuves datiem. Atbildē ir augstākā līmeņa kategorijas, katra ar apakškategorijām, kas ligzdotas laukā sub_categories, un kataloga produktu skaitu tajā laukā products_count. Pārlūkojot katalogu, nododiet kategorijas id kā category_id vai augstākā līmeņa kategorijas id kā parent_category_id, lai uzreiz iegūtu visu tās apakškategoriju produktus.
Vaicājuma parametri
pageunlimit(līdz 100) - sadala sarakstu lapās. Bez tiem tiek atgrieztas visas kategorijas.search- kategorijas, kuru nosaukumā ir teksts.with_products_only-trueizlaiž kategorijas, kurās nav neviena kataloga produkta ne tieši, ne apakškategorijā.sort_by-category_namevaicategory_created,sort_ordersecībāascvaidesc. Pēc noklusējuma kategorijas ir kataloga secībā.
Pieprasījuma piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/catalog/categories?with_products_only=true' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/catalog/categories"
},
"meta": {
"total": 1
},
"data": [
{
"id": 8,
"name": "Bedroom",
"description": "Bedroom products",
"sort_number": 1,
"slug": "bedroom",
"products_count": 12,
"sub_categories": [
{
"id": 19,
"name": "Duvet covers",
"description": "Personalized duvet covers",
"sort_number": 1,
"slug": "duvet-covers",
"products_count": 7,
"images": [],
"sub_categories": []
},
{
"id": 20,
"name": "Pillows",
"description": "Personalized pillows and pillowcases",
"sort_number": 2,
"slug": "pillows",
"products_count": 4,
"images": [],
"sub_categories": []
}
],
"parent_category": null,
"images": [
{
"id": 781,
"url": "https://storage.googleapis.com/example/catalog/bedroom.jpg",
"is_main": true,
"created_at": "2024-08-16T09:32:07.000000Z",
"screen_type_size": "large",
"sort_number": 1
}
]
}
]
}
Jūsu produkti
Lai iegūtu sava konta produktu sarakstu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/products ar saviem piekļuves datiem. Jūsu produkti ir kataloga produkti, kurus esat pievienojis savam Fabrixa kontam: tiem ir nosaukumi, apraksti un attēli, ko tur tiem piešķīrāt, un to variantiem - jūsu izvēlētās SKU vērtības. Sarakstā ir tikai aktīvie produkti, pa desmit lapā, ja vien nenododat limit.
Vaicājuma parametri
pageunlimit(līdz 100) - kuru lapu atgriezt un tās izmērs; pēc noklusējuma pirmā lapa ar desmit produktiem.search- produkti, kuru nosaukumā ir teksts vai kuru slug vai variantaSKUar to sākas.
Pieprasījuma piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/products?search=duvet' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/products",
"first_page": "https://api.fabrixa.com/v2/integration/products?page=1",
"last_page": "https://api.fabrixa.com/v2/integration/products?page=1",
"next_page": null,
"prev_page": null
},
"meta": {
"total": 1,
"current_page": 1,
"per_page": 10
},
"data": [
{
"id": 5321,
"name": "Dreamy Duvet Cover",
"subtitle": "Duvet cover with a matching pillowcase",
"description": "Our personalized duvet cover, printed on soft cotton sateen.
",
"slug": "dreamy-duvet-cover",
"width": "50.00",
"height": "50.00",
"length": "20.00",
"weight": "100.00",
"created_at": "2025-03-04T10:12:40.000000Z",
"updated_at": "2025-03-04T10:15:02.000000Z",
"type": {
"id": 5,
"name": "Duvet cover",
"description": "Duvet cover with pillow"
},
"available_options": [
{
"id": 151,
"name": "Duvet Size",
"values": [
{
"id": 471,
"value": "140x200"
},
{
"id": 474,
"value": "200x220"
}
]
}
],
"categories": [
{
"id": 912,
"name": "Bedding"
}
],
"collections": [
{
"id": 77,
"name": "Spring 2025"
}
],
"images": [
{
"id": 48120,
"is_main": true,
"image_size": "1200x1200",
"url": "https://storage.googleapis.com/example/shop/dreamy-duvet-cover.jpg",
"screen_type_size": "large",
"sort_number": 1
}
],
"variants": [
{
"id": 32323,
"name": "Dreamy Duvet Cover",
"subtitle": "140x200",
"description": null,
"SKU": "DDC-140200",
"created_at": "2025-03-04T10:12:41.000000Z",
"updated_at": "2025-03-04T10:12:41.000000Z",
"options": [
{
"id": 151,
"name": "Duvet Size",
"values": [
{
"id": 471,
"value": "140x200"
}
]
}
],
"images": [],
"available_source_types": ["duvet", "pillow", "pillow-back"],
"required_source_types": ["duvet", "pillow"]
},
{
"id": 32326,
"name": "Dreamy Duvet Cover",
"subtitle": "200x220",
"description": null,
"SKU": "DDC-200220",
"created_at": "2025-03-04T10:12:41.000000Z",
"updated_at": "2025-03-04T10:12:41.000000Z",
"options": [
{
"id": 151,
"name": "Duvet Size",
"values": [
{
"id": 474,
"value": "200x220"
}
]
}
],
"images": [],
"available_source_types": ["duvet", "pillow", "pillow-back"],
"required_source_types": ["duvet", "pillow"]
}
]
}
]
}
Lai nolasītu vienu produktu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/products/{product_id}, kur {product_id} ir tā id. Atbildē ir tie paši lauki, kas sarakstā. Produkts, kura nav jūsu kontā, arī kataloga produkts, atbild ar 404 Not Found un ziņojumu Product not found.
Atbildes lauki
id,name,subtitle,description(HTML),slug,width,height,lengthunweight.type- produkta tips, kas nosaka drukas slāņus un PDF lapu secību.available_options- katra produkta opcija ar visām tās vērtībām, piemēram, katrs izmērs, kādā tas ir pieejams; katrs variants ņem vienu vērtību uz opciju.categoriesuncollections- kategorijas un kolekcijas, kurās savā kontā esat iedalījis produktu.images- produkta attēli arurl,is_main,image_size,screen_type_sizeunsort_number.variants- pasūtāmās produkta versijas, skatiet Produktu varianti:id,name,subtitle,SKU,options,imagesun drukas slāņi laukosavailable_source_typesunrequired_source_types.
Produktu varianti
Variants ir viena pasūtāma produkta versija - viens izmērs, viena krāsa - un tieši uz to norāda pasūtījuma rinda pēc sku vai variant_id. Lai nolasītu kāda sava produkta variantu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/variants/{variant_id}, kur {variant_id} ir tā id. Tāda produkta variants, kura nav jūsu kontā, atbild ar 404 Not Found un ziņojumu Variant not found.
Pieprasījuma piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/variants/32323' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/variants/32323"
},
"meta": [],
"data": {
"id": 32323,
"name": "Dreamy Duvet Cover",
"subtitle": "140x200",
"description": null,
"SKU": "DDC-140200",
"created_at": "2025-03-04T10:12:41.000000Z",
"updated_at": "2025-03-04T10:12:41.000000Z",
"width": "140.00",
"height": "200.00",
"length": "2.00",
"weight": "1.20",
"options": [
{
"id": 151,
"name": "Duvet Size",
"values": [
{
"id": 471,
"value": "140x200"
}
]
}
],
"images": [],
"product": {
"id": 5321,
"name": "Dreamy Duvet Cover",
"subtitle": "Duvet cover with a matching pillowcase",
"description": "Our personalized duvet cover, printed on soft cotton sateen.
",
"description2": null,
"slug": "dreamy-duvet-cover",
"created_at": "2025-03-04T10:12:40.000000Z",
"updated_at": "2025-03-04T10:15:02.000000Z"
},
"available_source_types": ["duvet", "pillow", "pillow-back"],
"required_source_types": ["duvet", "pillow"]
}
}
Atbildes lauki
id,name,subtitle,description,SKU,width,height,length,weight,options,imagesunproduct- produkts, kuram variants pieder.available_source_types- varianta drukas slāņi, nosaukti tā, kā tos pazīst tā ražošanas process. Papildus"file", ko katrs variants pieņem PDF failam, tās ir vērtības, kādas var būt avota faila laukamtype; produkts ar vienu drukas slāni norāda"print".required_source_types- slāņi, kas drukas failam jānosedz. PDF, kas nosūtīts kā"file", nosedz tos ar savām lapām produkta tipa lapu secībā. Citādi rindai katram no tiem nepieciešams JPEG, PNG vai TIFF fails ar slāņa nosaukumu kātype; rinda, kurā kāda trūkst, tiek noraidīta ar400 Bad Requestun trūkstošo slāņu nosaukumiem.
Pasūtījuma rinda šim variantam ar PDF, kura lapas ir tā slāņi:
"rows": [
{
"sku": "DDC-140200",
"quantity": 1,
"sources": [
{
"type": "file",
"url": "https://samples-files.com/samples/duvet-cover.pdf"
}
]
}
]
Kurus variantus var pasūtīt
- Pasūtījuma rinda var norādīt uz jūsu konta produkta variantu vai tieši uz kataloga variantu, nekad uz cita klienta produktu. Variants tiek atrasts pēc
variant_idvai pēcskuneatkarīgi no burtu reģistra. - Variantam jābūt aktīvam, un tā produktam - aktīvam un atvērtam pārdošanai. Jūsu kataloga produkta kopijai arī kataloga produktam jābūt aktīvam un kataloga variantam - ieslēgtam.
- Citādi pasūtījums tiek noraidīts ar
400 Bad Requestun attiecīgās rindas iemeslu:The variant not found.,The product is not active.,The catalog product is not active.,The product is not open for sales.,The variant is not active.vaiThe catalog variant is not active.
Pasūtījumi
Izveidojiet Fabrixa pasūtījumus no sava veikala vai platformas, pievienojiet nepieciešamos apdrukas failus un sekojiet katrai vienībai, tai virzoties caur izpildi.
Pasūtījuma izveide
Lai izveidotu pasūtījumu, izmantojot Fabrixa Integration API, nosūtiet POST pieprasījumu uz https://api.fabrixa.com/v2/integration/orders. Pieprasījuma ķermenī jāiekļauj:
Pieprasījuma ķermeņa struktūra
number(neobligāts) - pasūtījuma numurs. Ja tas nav norādīts, tiek ģenerēts unikāls numurs.comments(neobligāts) - jebkādi papildu komentāri vai piezīmes par pasūtījumu.purchased_at- pasūtījuma pirkuma datums un laiks formātāYYYY-MM-DD HH:MM:SS.client_ip(neobligāts) - klienta IP adrese.client_user_agent(neobligāts) - klienta user-agent virkne.rows- pasūtījuma vienību masīvs, katra no tām satur:sku- produkta varianta SKU. Sīkāku informāciju skatiet Swagger.quantity- pasūtītā produkta varianta daudzums.client_barcode(neobligāts) - unikāls klienta puses identifikators katrai pasūtījuma rindai formātāCode 128.cart_item_key(obligāts bezsources) - unikāls identifikators no platformas, kas iegulda Fabrixa Studio, un tiek izmantots, lai saglabātos pielāgojumus sasaistītu ar pasūtījumu.sources(obligāts bezcart_item_key) - ar produktu saistīto avota failu masīvs, katrs no tiem satur:type-"file"PDF failam vai"print"JPEG, PNG vai TIFF failam.url- avota faila URL.
customer- klienta dati:first_name,last_name,email,phone.
shipping_address- piegādes dati:address,address2(neobligāts),address3(neobligāts).city,country_code(ISO 3166-2),country,postal_code,state(neobligāts).first_name,last_name,phone(neobligāts),company(neobligāts).
shipping_label(neobligāts) - uzlīmes dati:method_name- piemēram, "Post NL".tracking_number,tracking_url,label_pdf_url.date_created- formātāYYYY-MM-DD HH:MM:SS.
Pieprasījuma piemērs
{
"number": "NL2024010201",
"comments": "Customer agrees with a low resolution file.",
"purchased_at": "2024-06-26 21:12:22",
"client_ip": "127.0.0.1",
"client_user_agent": "Mozilla",
"rows": [
{
"variant_id": 2705,
"quantity": 1,
"client_barcode": "1234567890",
"sources": [
{
"type": "file",
"url": "https://samples-files.com/samples/sample.pdf"
}
]
}
],
"customer": {
"first_name": "John",
"last_name": "Doe",
"email": "3VJtP@example.com",
"phone": "0612345678"
},
"shipping_address": {
"address": "Voorbeeldstraat",
"address2": "17",
"city": "Amsterdam",
"country_code": "NL",
"country": "Netherlands",
"postal_code": "1012 AB",
"state": "North Holland",
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678"
},
"shipping_label": {
"method_name": "Post NL",
"tracking_number": "3SABCD1234567",
"tracking_url": "https://postnl.nl/tracktrace/3SABCD1234567",
"label_pdf_url": "https://api.fabrixa.com/storage/8966630826422f36d822f91680012141.pdf",
"date_created": "2024-01-01 00:00:00"
}
}
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/orders"
},
"meta": [],
"data": {
"id": 20338,
"number": "NL2024010201",
"comments": "Customer agrees with a low resolution file.",
"is_archived": false,
"status": "imported",
"fulfillment_status": "unfulfilled",
"purchased_at": "2024-06-26T21:12:22.000000Z",
"created_at": "2024-06-26T21:15:03.000000Z",
"updated_at": "2024-06-26T21:15:04.000000Z",
"rows": [
{
"id": 41600,
"quantity": 1,
"client_barcode": "1234567890",
"fulfillment_status": "unfulfilled",
"variant": {
"id": 2705,
"name": "Duvet Cover",
"subtitle": "140x200",
"SKU": "COT864311",
"product": {
"id": 1305,
"name": "Duvet Cover",
"subtitle": "Duvet Cover with a pillow"
}
},
"sources": [
{
"type": "file",
"url": "https://samples-files.com/samples/sample.pdf",
"properties": null
}
]
}
],
"shipments": [],
"customer": {
"email": "3VJtP@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678"
},
"shipping_address": {
"address": "Voorbeeldstraat",
"address2": "17",
"address3": null,
"city": "Amsterdam",
"country": "Netherlands",
"country_code": "NL",
"company": null,
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678",
"state": "North Holland",
"postal_code": "1012 AB"
}
}
}
Pasūtījuma atjaunināšana
Lai atjauninātu pasūtījumu, nosūtiet PATCH pieprasījumu uz https://api.fabrixa.com/v2/integration/orders/{order_id}, kur {order_id} ir pasūtījuma Fabrixa ID. Mainās tikai nosūtītie lauki, un pasūtījuma statuss paliek nemainīgs. Atbildē ir atjauninātais pasūtījums. Varat mainīt:
number,comments,purchased_at,client_ip,client_user_agent.customer-first_name,last_name,email,phone.shipping_address- tos pašus laukus kā, veidojot pasūtījumu.
Pieprasījuma piemērs
{
"comments": "Deliver to the neighbours if nobody is home.",
"shipping_address": {
"address": "Voorbeeldstraat",
"address2": "19",
"city": "Amsterdam",
"country_code": "NL",
"country": "Netherlands",
"postal_code": "1012 AB",
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678"
}
}
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/orders/20338"
},
"meta": [],
"data": {
"id": 20338,
"number": "NL2024010201",
"comments": "Deliver to the neighbours if nobody is home.",
"is_archived": false,
"status": "imported",
"fulfillment_status": "unfulfilled",
"purchased_at": "2024-06-26T21:12:22.000000Z",
"created_at": "2024-06-26T21:15:03.000000Z",
"updated_at": "2024-06-27T09:41:18.000000Z",
"rows": [
{
"id": 41600,
"quantity": 1,
"client_barcode": "1234567890",
"fulfillment_status": "unfulfilled",
"variant": {
"id": 2705,
"name": "Duvet Cover",
"subtitle": "140x200",
"SKU": "COT864311",
"product": {
"id": 1305,
"name": "Duvet Cover",
"subtitle": "Duvet Cover with a pillow"
}
},
"sources": [
{
"type": "file",
"url": "https://samples-files.com/samples/sample.pdf",
"properties": null
}
]
}
],
"shipments": [],
"customer": {
"email": "3VJtP@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678"
},
"shipping_address": {
"address": "Voorbeeldstraat",
"address2": "19",
"address3": null,
"city": "Amsterdam",
"country": "Netherlands",
"country_code": "NL",
"company": null,
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678",
"state": "North Holland",
"postal_code": "1012 AB"
}
}
}
- Pasūtījuma rindas mainīt nevar: pieprasījums ar
rowstiek noraidīts ar400 Bad Request. Lai mainītu preces, atceliet pasūtījumu un izveidojiet jaunu. - Pasūtījumu statusā
on holdnevar atjaunināt; API atbild ar412 Precondition Failed.
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/orders/20338"
},
"meta": [],
"errors": {
"rows": [
"Order rows cannot be changed. Cancel the order and create a new one."
]
}
}
Pasūtījuma atcelšana
Lai atceltu pasūtījumu, nosūtiet POST pieprasījumu bez ķermeņa uz https://api.fabrixa.com/v2/integration/orders/{order_id}/cancel, kur {order_id} ir pasūtījuma Fabrixa ID (pasūtījuma skaitliskais lauks id), nevis jūsu pasūtījuma numurs. Atbildē ir pasūtījums ar statusu canceled, un tiek nosūtīts order.updated webhook.
- Pasūtījumu var atcelt, kamēr tā statuss ir
created,imported,acceptedvaion holdun tāfulfillment_statusjoprojām irunfulfilled. Kad tas kļūstscheduled, ražošana ir sākusies, un pasūtījumu vairs nevar atcelt. - Atcelta pasūtījuma maksājumi tiek atmaksāti jūsu bilancē.
- Jau atcelta pasūtījuma atcelšana atgriež to nemainītu, tāpēc pieprasījumu var droši atkārtot.
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/orders/20338/cancel"
},
"meta": [],
"data": {
"id": 20338,
"number": "NL2024010201",
"comments": "Customer agrees with a low resolution file.",
"is_archived": false,
"status": "canceled",
"fulfillment_status": "unfulfilled",
"purchased_at": "2024-06-26T21:12:22.000000Z",
"created_at": "2024-06-26T21:15:03.000000Z",
"updated_at": "2024-06-27T10:02:45.000000Z",
"rows": [
{
"id": 41600,
"quantity": 1,
"client_barcode": "1234567890",
"fulfillment_status": "unfulfilled",
"variant": {
"id": 2705,
"name": "Duvet Cover",
"subtitle": "140x200",
"SKU": "COT864311",
"product": {
"id": 1305,
"name": "Duvet Cover",
"subtitle": "Duvet Cover with a pillow"
}
},
"sources": [
{
"type": "file",
"url": "https://samples-files.com/samples/sample.pdf",
"properties": null
}
]
}
],
"shipments": [],
"customer": {
"email": "3VJtP@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678"
},
"shipping_address": {
"address": "Voorbeeldstraat",
"address2": "17",
"address3": null,
"city": "Amsterdam",
"country": "Netherlands",
"country_code": "NL",
"company": null,
"first_name": "John",
"last_name": "Doe",
"phone": "0612345678",
"state": "North Holland",
"postal_code": "1012 AB"
}
}
}
Ja pasūtījumu nevar atcelt, API atbild ar 412 Precondition Failed un ziņojumu ar iemeslu: tā pašreizējais statuss to neļauj (statuss ir norādīts ziņojumā) vai ražošana jau ir sākusies.
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/orders/20338/cancel"
},
"meta": [],
"errors": {
"messages": [
"This order cannot be canceled in its current status (ready for shipping)."
]
}
}
Pasūtījuma dzīves cikls
Pasūtījumu izseko pēc trim statusiem: pasūtījuma lauka status, tā ražošanas statusa fulfillment_status un katra sūtījuma lauka status sarakstā shipments. Katra izmaiņa tiek nosūtīta tīmekļa āķī order.updated, un to atgriež GET /orders/{order_id}.
Pasūtījuma statusi
Pasūtījuma lauka status vērtības tādā secībā, kādā tās iestājas:
imported- pasūtījums ir saņemts, izmantojot API. Ikviens pasūtījums sākas šeit.on hold- atlikums nesedz pasūtījuma izmaksas. Kad tas ir papildināts, pasūtījums atgriežas statusāimportedun turpinās.accepted- pasūtījums ir pieņemts un tiek nodots ražošanā.completed(galīgs) - visas preces ir saražotas.canceled(galīgs) - pasūtījums ir atcelts. Tas ir iespējams, kamēr tas ir statusāimported,acceptedvaion holdun ražošana vēl nav sākusies.
Izpildes statusi
Pasūtījuma un katras pasūtījuma rindas lauka fulfillment_status vērtības tādā secībā, kādā tās iestājas. Statuss mainās tikai uz priekšu, nekad atpakaļ:
unfulfilled- ražošana vēl nav sākusies.scheduled- pasūtījums ir ieplānots ražošanas partijā. No šī brīža to vairs nevar atcelt.processing- notiek ražošana.partially fulfilled- daļa preču ir gatavas, pārējās vēl tiek ražotas.fulfilled(galīgs) - visas preces ir gatavas. Pasūtījumastatustad kļūst parcompleted.
Pasūtījums kopumā nekad netiek noraidīts. Atsevišķa prece var tikt noraidīta kvalitātes kontrolē ražošanas laikā. Tad to izdrukā vēlreiz: tā atgriežas statusā unfulfilled un vēlreiz iziet ražošanu, bet pasūtījums saglabā savu statusu un turpinās, tiklīdz prece ir gatava.
Sūtījuma statusi
Katra sūtījuma lauka status vērtības sarakstā shipments tādā secībā, kādā tās iestājas:
pending- sūtījums tiek sagatavots.registered- uzlīme ir izveidota pārvadātāja sistēmā.collected- pārvadātājs ir paņēmis paku.in transit- paka ir ceļā.delivered(galīgs) - paka ir piegādāta.
Izņēmumi:
failed- pārvadātājs ziņoja par problēmu.returned(galīgs) - paka ir atgriezta mums.canceled(galīgs) - sūtījums ir atcelts.
Izpildes izsekošana
Lai iegūtu konkrēta pasūtījuma izpildes statusu, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/orders/{order_id}/fulfillments. Atbilde sniedz ar pasūtījumu saistīto izpilžu sarakstu, tostarp katras vienības statusu, produkta informāciju un ražošanas soļu gaitu.
Atbildes piemērs
{
"data": [
{
"id": 1499,
"barcode": "1200004169200",
"status": "unfulfilled",
"created_at": "2024-08-19T12:38:59.000000Z",
"updated_at": "2024-08-19T12:39:00.000000Z",
"variant": {
"id": 32327,
"name": "Test iAPI blanket product",
"subtitle": "100 x 150 cm",
"SKU": "COF099191"
},
"product": {
"id": 1306,
"name": "Test iAPI blanket product",
"subtitle": "Test iAPI blanket product"
},
"production_steps": [
{
"id": 5,
"name": "Print duvet",
"description": "Printing the duvet according to the specified design and dimensions.",
"status": {
"value": "pending",
"notes": null,
"updated_at": null
}
},
{
"id": 6,
"name": "Print pillow",
"description": "Printing the pillow cover with the assigned design.",
"status": {
"value": "pending",
"notes": null,
"updated_at": null
}
}
]
}
]
}
Atbilde ietver izpilžu sarakstu, un katra no tām sniedz:
id- izpildes unikālais identifikators.barcode- svītrkods iekšējai izsekošanai un identifikācijai; to var arī uzdrukāt uz produkta.status- pašreizējais izpildes statuss: unfulfilled vai fulfilled.created_atunupdated_at- izpildes izveides un pēdējās atjaunināšanas laika zīmogi.variant- detalizēta informācija par produkta variantu: nosaukums, apakšvirsraksts, SKU.product- produkta dati: nosaukums, apakšvirsraksts.production_steps- ražošanas soļu masīvs. Soļu saraksts atkarīgs no produkta veida. Katram solim:id- ražošanas soļa unikālais identifikators.name- piemēram, "Segas pārvalka apdruka".description- ko ražošanas solis ietver.status- pašreizējais statuss:- pending - vēl nav sākts.
- in progress - pašlaik notiek.
- rejected - solī radās problēma, un tas netika veiksmīgi pabeigts.
- done - solis ir pabeigts.
notes- jebkādas papildu piezīmes par soli.updated_at- kad soļa statuss pēdējoreiz atjaunināts.
Katrs izpildes ieraksts atbilst konkrētam produktam vai produkta variantam pasūtījumā, un katram produkta eksemplāram pasūtījumā ir savs izpildes ieraksts - katra vienība ražošanas laikā tiek izsekota atsevišķi.
Ja pasūtījumam netiek atgriezta neviena izpilde, pasūtījums vēl nav nonācis apstrādes posmā.
Avota failu prasības
Pievienojot pasūtījumam avota failus, pārliecinieties, ka tie atbilst šādām prasībām:
type
Vēlamais avota formāts ir PDF. Produktam ar vienu drukas slāni, piemēram, segai vai dvielim, der arī JPEG, PNG vai TIFF fails. Produktam ar vairākiem slāņiem iesniedziet PDF failu, kurā katrs slānis ir atsevišķa lappuse: apstrādes laikā katra lappuse tiek uzskatīta par atsevišķu slāni, tāpēc vairākslāņu dizains tiek iesniegts kā viens fails. Skatiet PDF prasības un lappušu secību.
Iestatiet type atbilstoši faila formātam. PDF gadījumā izmantojiet "file": katra lappuse tiek drukāta uz viena produkta slāņa šim produktam norādītajā lappušu secībā. JPEG, PNG vai TIFF failam, kas piemērots produktam ar vienu drukas slāni, izmantojiet "print".
"sources": [
{
"type": "file",
"url": "https://samples-files.com/samples/source.pdf"
}
]
Sīkāku informāciju skatiet Swagger dokumentācijā.
url
Laukā url jābūt tiešai saitei uz avota failu. Pārliecinieties, ka URL ir pieejams un failu var lejupielādēt bez autentifikācijas. Saitei jāpaliek pieejamai visā ražošanas procesa laikā.
Kā mēs lejupielādējam failu
Failu no jūsu servera lejupielādējam divreiz: ar Range: 0-0 pieprasījumu pasūtījuma validācijas laikā un pēc tam visu failu. Abi pieprasījumi sūta User-Agent Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#sources; print file fetch); ja jūsu vietne filtrē automatizēto trafiku, atļaujiet to. URL jāizmanto HTTPS uz porta 443, un tam jāatgriež fails tieši, bez novirzīšanas, ar faila īsto Content-Type, piemēram, application/pdf. Katram pieprasījumam iestājas taimauts pēc 60 sekundēm.
Faila formāts
Iesniedziet PDF failu vai, produktam ar vienu slāni, JPEG, PNG vai TIFF failu, kas tiek pasniegts ar tā īsto Content-Type. PNG caurspīdīgās zonas tiek drukātas baltā krāsā. Pārliecinieties, ka attēli ir augstas kvalitātes un piemēroti drukai.
Attēla izmēri
Maksimālie izmēri ir 15 000 pikseļu katrā pusē. Attēli, kas pārsniedz šo ierobežojumu, var tikt samazināti vai noraidīti. Attēla izšķirtspējai jāatbilst produkta izmēriem; pretējā gadījumā attēli var tikt samazināti vai apgriezti, lai iekļautos.
Izšķirtspēja
Konkrētas izšķirtspējas prasības nav - vienīgi pārliecinieties, ka attēla kvalitāte ir pietiekama apdrukai.
Krāsu telpa
Attēliem jābūt RGB krāsu telpā, lai krāsas tiktu atveidotas precīzi. Citas krāsu telpas apstrādes laikā tiek konvertētas, kas var radīt nepareizas krāsas.
Faila izmērs
Katrs avota fails var būt līdz 200 MB. Lielāks fails tiek noraidīts: veidojot pasūtījumu, ja jūsu serveris sūta Content-Length, citādi faila lejupielādes laikā.
PDF prasības un lappušu secība
Lappušu secība PDF failā ir svarīga. Lappuses tiek piekārtotas produkta slāņiem pēc pozīcijas, un gaidītā lappušu secība atkarīga no produkta veida. Pārliecinieties, ka jūsu PDF lappuses atbilst pareizajai iesniedzamā produkta slāņu secībai.
| Produkts | PDF lappušu secība |
|---|---|
| Duvet Cover |
|
| Curtains |
|
| T-shirt |
|
| Tanktop |
|
| Sweater |
|
| Hoodie |
|
| Sweatpants |
|
| Sweatshorts |
|
Svarīgi: katrai PDF lappusei jāatbilst tās produkta slānim noteiktajiem izmēriem un jābūt pareizi orientētai. Izvietojiet dizainu tā, lai tā augšpuse sakristu ar lappuses augšpusi. Nepareizs lappuses izmērs vai orientācija ražošanā var radīt mērogošanas, pagriešanas vai izlīdzināšanas problēmas.
Piegāde
Uzziniet, cik maksās pasūtījuma piegāde un cik ilgi tas būs ceļā, pirms to veicat, pēc tiem pašiem noteikumiem, pēc kuriem Fabrixa aprēķina paša pasūtījuma cenu.
Piegādes valstis
Lai uzzinātu, uz kurām valstīm produkta variantu var piegādāt, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/shipping/countries ar saviem piekļuves datiem. Saraksts, sakārtots pēc nosaukuma, ietver valstis, uz kurām varianta ražošanas vietai ir piegādes tarifs kādam piegādes iepakojumam, kurā variantu var sapakot. Ja valsts sarakstā nav, šim variantam uz to nav piegādes tarifa.
Vaicājuma parametri
variant_idvaisku- variants, norādīts tāpat kā pasūtījuma rindā un aplēses pieprasījumā.
Pieprasījuma piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/shipping/countries?sku=DDC-140200' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/shipping/countries"
},
"meta": {
"total": 2
},
"data": [
{
"code": "BE",
"name": "Belgium",
"min_shipping_price": "7.75",
"max_shipping_price": "9.85",
"currency": "EUR",
"min_eta_days": 1,
"max_eta_days": 2
},
{
"code": "NL",
"name": "Netherlands",
"min_shipping_price": "6.70",
"max_shipping_price": "8.40",
"currency": "EUR",
"min_eta_days": 1,
"max_eta_days": 1
}
]
}
Atbildes lauki
codeunname- valsts ar ISO 3166-1 alpha-2 kodu, kas jānorāda kācountry_code, pieprasot aplēsi.min_shipping_priceunmax_shipping_price- diapazons, cik maksā vienas pakas piegāde uz šo valsti, bez PVN, valūtā, kas norādīta laukācurrency, ņemot vērā visus piegādes iepakojumus, kuros variantu var sapakot. Vairāku vienību pasūtījumam var būt vajadzīgas vairākas pakas, tāpēc, lai uzzinātu konkrēta daudzuma cenu, pieprasiet aplēsi.min_eta_daysunmax_eta_days- diapazons, cik dienu paka ir ceļā pēc nodošanas pārvadātājam, neskaitot ražošanas laiku;null, ja tarifos nav piegādes laika aplēses.
Piegādes aplēse
Lai uzzinātu, cik maksātu produkta varianta piegāde un cik ilgi sūtījums būtu ceļā, nosūtiet GET pieprasījumu uz https://api.fabrixa.com/v2/integration/shipping/estimate ar saviem piekļuves datiem. Aplēse ievēro tos pašus noteikumus, pēc kuriem tiek aprēķināta pasūtījuma cena: vienības tiek sapakotas varianta ražošanas vietas piegādes iepakojumos, un katras pakas cena tiek aprēķināta maršrutam no šīs vietas līdz galamērķa valstij. Nekas netiek pasūtīts vai rezervēts, un pasūtījuma cena tiek aprēķināta brīdī, kad pasūtījums tiek veikts, tāpēc tā piegādes cena var atšķirties, ja tarifi pa to laiku mainās.
Vaicājuma parametri
variant_idvaisku- variants, norādīts tāpat kā pasūtījuma rindā: kāda jūsu produkta variants vai kataloga variants. Tam jābūt variantam, ko varat pasūtīt.country_code- tās valsts ISO 3166-1 alpha-2 kods, uz kuru pasūtījums tiek nosūtīts, piemēram,NL.quantity- vienību skaits, no 1 līdz 1000.
Pieprasījuma piemērs
curl -X 'GET' \
'https://api.fabrixa.com/v2/integration/shipping/estimate?sku=DDC-140200&country_code=NL&quantity=2' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer APPLICATION_ACCESS_TOKEN' \
-H 'X-Application-Key: APPLICATION_KEY'
Atbildes piemērs
{
"links": {
"self": "https://api.fabrixa.com/v2/integration/shipping/estimate"
},
"meta": [],
"data": {
"variant_id": 32323,
"sku": "DDC-140200",
"quantity": 2,
"country_code": "NL",
"origin_country": {
"code": "PT",
"name": "Portugal"
},
"packages_count": 1,
"packages": [
{
"package_type": "Small Box",
"length": 30,
"width": 20,
"height": 10,
"quantity": 1,
"price": "7.45",
"eta_days": 3
}
],
"shipping_price": "7.45",
"currency": "EUR",
"eta_days": 3
}
}
Atbildes lauki
variant_id,sku,quantityuncountry_code- variants, daudzums un galamērķis, kam aplēse paredzēta.origin_country- valsts, no kuras variants tiek nosūtīts, ar tāscodeunname.packages_count- paku skaits, kurās tiek sapakotas vienības.packages- pašas pakas, pa vienam ierakstam katram paku veidam:package_type, tāslength,widthunheightcentimetros, šādu pakuquantity, vienas pakas piegādespriceun tāseta_days. Cenas, reizinātas ar daudzumiem, kopā veidoshipping_price.shipping_price- visu paku kopējā piegādes cena bez PVN, valūtā, kas norādīta laukācurrency. Maršrutā bez piegādes tarifa piegāde ir bezmaksas, tāpat kā pasūtījumam, un tās cena ir0.00.eta_days- dienu skaits, cik ilgi lēnākā paka ir ceļā pēc nodošanas pārvadātājam, neskaitot ražošanas laiku;null, ja maršrutam nav piegādes laika aplēses.
Uz pieprasījumu, kas neiztur validāciju, tiek atbildēts ar 400 Bad Request un iemeslu katram laukam, ar tiem pašiem ziņojumiem kā pasūtījuma rindai, piemēram, The variant not found. Ja neviens piegādes iepakojums nevar ietvert vienības, atbilde ir 400 Bad Request ar ziņojumu No shipping package can carry the variant.
Fabrixa Studio
Fabrixa Studio ir rīks, kas ļauj lietotājiem reāllaikā ērti pielāgot un personalizēt produktus intuitīvā saskarnē, kurā viņi var izveidot vai augšupielādēt savus dizainus.
Fabrixa Studio ir lieliski piemērots uzņēmumiem, kas piedāvā pielāgotus produktus - klienti var redzēt savu dizainu vēl pirms pasūtījuma noformēšanas.
Fabrixa Studio iegulšana
Fabrixa Studio varat iegult savā vietnē, izmantojot iframe. Tas ļauj klientiem personalizēt produktus tieši jūsu vietnē pirkuma noformēšanas laikā.
Iframe piemērs Fabrixa Studio iegulšanai:
<iframe id="fabrixa-studio"
src="https://studio.fabrixa.com?application_key={application_key}&sku={product_sku}&cart_item_key={cart_item_key}"
name="FabrixaStudio"
scrolling="no"
frameborder="1"
width="100%"
height="100%"
allowfullscreen="">
</iframe>
Aizstājiet vērtības product_sku, cart_item_key un application_key ar savām dinamiskajām vērtībām.
application_key- unikāla atslēga autentifikācijai Integration API.product_sku- produkta varianta SKU, kas iegūts no Integration API.cart_item_key- unikāla vērtība no iegulšanas platformas, kas identificē ar produktu saistīto groza vienību. To izmanto, lai saglabātu lietotāja pielāgojumus; pasūtījuma izveides laikā tā identificē saglabātos pielāgojumus un piesaista tos pasūtījumam. Skatiet piemēru zemāk.locale(neobligāts) - Studio saskarnes un tās kļūdu ziņojumu valoda, piem.,de_DEvaide. Bez tā Studio atveras pircēja pārlūka valodā, ja tā tiek atbalstīta, citādi angļu valodā.
Studio galvenē redzams produkta nosaukums tāds, kāds tas ir jūsu veikalā - tas pats nosaukums, ko redz jūsu klienti, - un zem tā izvēlētā varianta opcijas. Tā ir jūsu veikala produkta kopija, tāpēc Fabrixa mainīts nosaukums redzams arī Studio; locale to netulko.
Pasūtījuma izveides pieprasījums ar cart_item_key
{
"number": "NL2024010201",
"purchased_at": "2024-06-26 21:12:22",
"client_ip": "127.0.0.1",
"client_user_agent": "Mozilla",
"rows": [
{
"sku": "SB796162",
"quantity": 1,
"cart_item_key": "0cb76770-de2d-4524-aa48-47b6e5f0d8a5"
}
],
"customer": {
"...": "..."
},
"shipping_address": {
"...": "..."
},
"shipping_label": {
"...": "..."
}
}
Studio notikumu apstrāde
Kad iframe iekšpusē tiek nospiesta poga Pievienot grozam, tiek izpildīta šāda komanda:
window.parent.postMessage('customizationFinished', '*');
Tāpat, kad tiek nospiesta poga Atpakaļ:
window.parent.postMessage('closeButtonClicked', '*');
Metode postMessage nodrošina saziņu starp iframe un tā vecāklogu ar atšķirīgu izcelsmi, ļaujot informēt vecāklogu par konkrētām lietotāja darbībām.
Pirmais postMessage arguments ir dati, kurus vēlaties nosūtīt. Virkne 'customizationFinished' norāda, ka lietotājs ir pabeidzis pielāgošanu un pievieno produktu grozam. 'closeButtonClicked' norāda, ka lietotājs ir izvēlējies atgriezties.
Vecāklogā klausieties šos ziņojumus, izmantojot message notikuma klausītāju:
window.addEventListener('message', function(event) {
if (event.origin === 'https://studio.fabrixa.com') {
if (event.data === 'customizationFinished') {
// Handle the Add to Cart event
console.log('Customization finished and item can be added to cart.');
} else if (event.data === 'closeButtonClicked') {
// Handle the Back button event
console.log('Back button clicked.');
}
}
});
Vienmēr pārbaudiet ienākošo ziņojumu origin, lai pārliecinātos, ka tie nāk no uzticama avota. Atkarībā no saņemtā ziņojuma veiciet nepieciešamās darbības - atjauniniet lietotāja saskarni, apstrādājiet grozu un tā tālāk. origin validācija ir būtiska drošībai - tā neļauj nesankcionētiem skriptiem mijiedarboties ar jūsu lietotni.
Pielāgojuma priekšskatījums
Kad pielāgošana ir pabeigta, parādiet galīgo dizainu, izmantojot zemāk norādīto priekšskatījuma URL. Šis URL atgriež pielāgotā produkta attēlu, kas piemērots kā src vērtība <img> tagā. Ideāli piemērots pielāgotā produkta rādīšanai grozā, pasūtījuma kopsavilkumā vai jebkur citur jūsu veikala saskarnē.
https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}
Aizstājiet {CART_ITEM_KEY} ar faktisko groza vienības atslēgu un {APPLICATION_KEY} ar savu derīgo lietotnes atslēgu.
Lietojuma piemērs attēla tagā:
<img
src="https://api.fabrixa.com/v2/studio/customizations/{CART_ITEM_KEY}/preview?Application-Key={APPLICATION_KEY}"
alt="Customized Product Preview"
style="max-width: 100%; height: auto;" />
Tiešraides demonstrācija
Pielāgojuma priekšskatījums parādīsies šeit, kad dizains būs pabeigts.
Tīmekļa āķi
Fabrixa izmanto tīmekļa āķus, lai reāllaikā informētu jūsu sistēmu par notikumiem - pasūtījumu atjauninājumiem vai izveidi. Kad notikums iestājas, Fabrixa nosūta uz jūsu serveri tīmekļa āķi ar attiecīgo informāciju. Jūsu serverim jānodrošina publisks POST galapunkts, kas apstrādā ienākošos tīmekļa āķus.
Tīmekļa āķa pieprasījuma galvenes
Tīmekļa āķa pieprasījums ietver šādas galvenes, kas palīdz identificēt un validēt ienākošo pieprasījumu:
{
"content-type": "application/json",
"user-agent": "Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#webhooks; webhook)",
"x-webhook-signature": "YmEwNjBhMGMyMzE3ZWQ5NGQ5NDYwOGVhNzNhMjQ4M2MyODZkZmI3NTQ1YzYxYjdkMzNhZjgzYzBmMTkxYTAxMw==",
"x-webhook-topic": "order.updated"
}
Galveņu skaidrojums
content-type- tīmekļa āķiem vienmērapplication/json.x-webhook-signature- HMAC-SHA256 paraksts pieprasījuma pārbaudei.x-webhook-topic- tīmekļa āķa notikuma veids vai tēma. Piemēram:order.created- tiek izraisīts, kad izveidots jauns pasūtījums.order.updated- tiek izraisīts, kad atjaunināts esošs pasūtījums.
Webhooks tiek sūtīti ar User-Agent Fabrixa/2.0 (+https://api.fabrixa.com/docs/integration#webhooks; webhook); ja jūsu endpoint filtrē automatizēto trafiku, atļaujiet to. Lai pārliecinātos, ka pieprasījums nāk no Fabrixa, pārbaudiet x-webhook-signature.
Tīmekļa āķu notikumi
Fabrixa tīmekļa āķi informē jūsu sistēmu par izmaiņām pasūtījuma statusā vai darbībās. Katru tīmekļa āķi izraisa konkrēta x-webhook-topic vērtība. Pašlaik atbalstītās tēmas:
| Tēma | Apraksts |
|---|---|
order.created |
Tiek izraisīts, kad Fabrixa tiek veikts jauns pasūtījums - vai nu ar API pieprasījumu, vai tieši platformā. |
order.updated |
Tiek izraisīts, kad tiek atjaunināta pasūtījuma informācija, piemēram, pasūtījuma statuss vai izpildes statuss. |
Tīmekļa āķa datu piemērs
Piemērs datiem, kas tiek nosūtīti ar tīmekļa āķi. Šie dati atspoguļo pasūtījuma atjauninājumu:
{
"id": 23069,
"number": "1250211835",
"comments": null,
"is_archived": false,
"status": "accepted",
"fulfillment_status": "fulfilled",
"purchased_at": "2025-04-17T16:17:21.000000Z",
"created_at": "2025-04-17T16:17:23.000000Z",
"updated_at": "2025-04-18T07:43:52.000000Z",
"rows": [
{
"id": 27954,
"quantity": 1,
"client_barcode": "1250211835",
"fulfillment_status": "fulfilled",
"variant": {
"id": 293457,
"name": "Sherpa fleece deken",
"subtitle": "100x150",
"SKU": "SFD787231",
"product": {
"id": 5319,
"name": "Sherpa fleece deken",
"subtitle": "Sherpa fleece deken"
}
},
"sources": [
{
"type": "print",
"url": "https://storage.googleapis.com/fabrixa-api/storage/99b10aaa-df4d-47e4-9bc9-b1d6a785df4c/orders/merchandise-sources/120002795400.pdf",
"properties": {
"fill_style": "contain"
}
}
]
}
],
"shipments": [
{
"id": 4182,
"carrier": "PostNL",
"method": "Standard",
"status": "registered",
"tracking_number": "3SABCD1234567",
"tracking_url": "https://jouw.postnl.nl/track-and-trace/3SABCD1234567-NL-1012AB",
"packages": [
{
"tracking_number": "3SABCD1234567",
"tracking_url": "https://jouw.postnl.nl/track-and-trace/3SABCD1234567-NL-1012AB"
}
],
"expected_delivery_date": "2025-04-22",
"created_at": "2025-04-18T07:43:50.000000Z"
}
]
}
Kad pasūtījums ir nosūtīts, shipments uzskaita katru sūtījumu ar tā pārvadātāju (carrier), piegādes veidu (method), statusu (status: pending, registered, collected, in transit, delivered, failed, returned vai canceled) un izsekošanu: tracking_number un tracking_url, kā arī to pašu katrai pakai laukā packages, ja sūtījumā ir vairākas pakas. Katru reizi, kad mainās sūtījuma statuss vai izsekošana, tiek nosūtīts order.updated webhook, un GET /orders/{order_id} atgriež to pašu lauku.
Tīmekļa āķu parakstu pārbaude
Lai pārliecinātos, ka tīmekļa āķa pieprasījums ir autentisks un nav mainīts, pārbaudiet galveni x-webhook-signature. Tas nozīmē no jauna aprēķināt HMAC-SHA256 parakstu, izmantojot pieprasījuma neapstrādātos datus un savu slepeno atslēgu, un pēc tam salīdzināt to ar saņemto parakstu.
Tīra PHP piemērs
$payload = file_get_contents('php://input');
$yourSecret = 'your-secret-key';
$expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
$receivedSignature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
if (!hash_equals($expectedSignature, $receivedSignature)) {
http_response_code(403);
exit('Invalid signature');
}
Laravel piemērs
public function handle(Request $request)
{
$yourSecret = 'your-secret-key';
$payload = $request->getContent();
$expectedSignature = base64_encode(hash_hmac('sha256', $payload, $yourSecret, true));
$receivedSignature = $request->header('x-webhook-signature');
if (!hash_equals($expectedSignature, $receivedSignature)) {
abort(403, 'Invalid signature');
}
// Continue processing...
}
Aizstājiet $yourSecret ar savu koplietoto slepeno atslēgu. Parakstu salīdzināšanai vienmēr izmantojiet hash_equals, lai mazinātu laika mērīšanas uzbrukumu risku.
Tīmekļa āķu atkārtotie mēģinājumi
Pēc noklusējuma tīmekļa āķi tiek atspējoti pēc 10 neveiksmīgiem piegādes mēģinājumiem. Ja jūsu galapunkts atgriež neveiksmīgu statusu, piemēram, 404 vai jebkuru 5xx kļūdu, tīmekļa āķis tiks mēģināts nosūtīt kopumā 10 reizes. Ja tas turpinās atgriezt atbildes kodu, kas nav 2xx vai 3xx, tas tiks deaktivizēts. Par veiksmīgām atbildēm uzskata:
2xx- norāda uz veiksmīgu apstrādi, piemēram,200 OK.301un302- pāradresācijas atbildes, kas norāda, ka tīmekļa āķis ir veiksmīgi apstrādāts vai pārsūtīts.
Tīmekļa āķa atbilde
Mēs stingri iesakām, lai jūsu galapunkts pēc iespējas ātrāk atgrieztu statusa kodu 200 OK, apliecinot tīmekļa āķa veiksmīgu saņemšanu. Lai gan par veiksmīgu tiek uzskatīta jebkura 2xx vai 3xx atbilde, 200 ir visbiežāk lietotā un uzticamākā.
Lai izvairītos no piegādes noildzēm vai atkārtotiem mēģinājumiem, nekavējoties atgrieziet 200 OK un tīmekļa āķa datus apstrādājiet asinhroni, piemēram, ar fona uzdevumu vai rindu. Ja jūsu galapunkta atbilde aizņem pārāk ilgu laiku, to var uzskatīt par neveiksmi pat tad, ja atbilde galu galā ir veiksmīga.
Atbildes ar statusa kodiem 4xx vai 5xx diapazonā, kā arī noildzes izraisa atkārtotus mēģinājumus atbilstoši atkārtošanas mehānismam.