Za programere i webshopove

API i integracije

Tri načina da se webshop ili blagajna spoje s Usklađenošću cijena, od najlakšeg prema najmoćnijem: jedan redak na web stranici, gotov dodatak za platformu koju već koristite, ili REST API i SDK za vlastiti softver. Sve troje govori s istim računom, istim artiklima i istim javnim cjenikom.

Dodaci

Gotovi dodaci za webshop platforme

Svaki dodatak radi isto troje: šalje artikle i cijene u servis pri svakoj promjeni (varijante kao zasebni artikli, akcije kao sniženja s datumom), ispisuje sidrenu cijenu ispod cijene na stranici proizvoda, i na klik pošalje cijeli katalog. Katalog u servisu se nikad ne mijenja bez vas. Otvoreni kod, licenca MIT.

WooCommerce

WordPress 6.2+, WooCommerce 8+, PHP 8.0+

  1. U aplikaciji: trgovac → Kanali → kanal tipa webshop (npr. WEB); API pristup → token s opsezima catalog:write, prices:write, compliance:read.
  2. Instalirajte dodatak (ZIP iz repozitorija u wp-content/plugins/).
  3. WooCommerce → Postavke → Usklađenost cijena: token, ID trgovca, šifra kanala → „Pošalji sve proizvode i cijene”.
GitHub: uskladjenost-cijena-woocommerce

Shopify

Custom app, Node 18+, bez App Storea

  1. U Shopify adminu: Develop apps → Create an app, opseg read_products, App proxy /apps/uskladjenost.
  2. Webhookovi products/create, update, delete na vaš host aplikacije.
  3. node bin/server.js (webhookovi + proxy) i jednom node bin/sync-all.js; Liquid snippet ispisuje sidrenu cijenu u temi.
GitHub: uskladjenost-cijena-shopify

PrestaShop

PrestaShop 8 (i 1.7.6+), PHP 7.4+

  1. Isti token i kanal kao za WooCommerce.
  2. Modul u mapu modules/uskladjenostcijena (git clone ili ZIP kroz Učitaj modul).
  3. Moduli → Usklađenost cijena → Konfiguriraj: token, ID trgovca, šifra kanala → „Pošalji sve proizvode i cijene”. Hook displayProductPriceBlock ispisuje sidrenu cijenu.
GitHub: uskladjenost-cijena-prestashop

Vaša platforma nije na popisu (Magento, OpenCart, vlastiti webshop)? Uvoz CSV/XLSX datoteke s pregledom razlika prije upisa radi bez ikakvog koda, a API dolje pokriva sve što dodaci rade.

REST API

API i SDK

HTTPS, JSON, bearer token (pc_live_… ili pc_test_…) koji izdajete u aplikaciji pod API pristup. Svaki token ima opsege; svaki endpoint kaže koji treba. Iznosi idu u centima, vraćaju se kao decimalni tekst. Svaki upis cijene je idempotentan (Idempotency-Key), pa ponovljeni poziv nikad ne udvostruči povijest.

Što API radi

PozivŠto radiOpseg
PUT /api/v1/items/{id}artikl po vašoj šifri, dobije offer_idcatalog:write
GET /api/v1/itemskatalog s cijenama, po stranicamacatalog:read
POST /api/v1/prices/by-external/{id}cijena po vašoj šifri, bez offer_id-aprices:write
GET /api/v1/offers/{id}/price-eventspovijest cijenaprices:read
GET /api/v1/compliance/by-external/{id}što ispisati uz cijenu (sidro, tekst)compliance:read
GET /api/v1/publication-scopesjavni cjenici, rokovi, arhivapublications:read
POST /api/v1/importsCSV/XLSX s probnom provjerom i razlikamaimports:write
POST /api/v1/webhooksobavijesti potpisane HMAC-SHA256webhooks:manage

SDK: isti API u tri jezika

Svaki SDK pokriva cijeli API i provjeru potpisa webhook isporuka. Otvoreni kod, MIT.

composer require infomedia/uskladjenost-cijena-php

$api = new \UskladjenostCijena\Client($token);
$api->items()->upsert('SKU-1', ['merchant_id' => $m, 'kind' => 'product', 'name' => 'Deterdžent 3 kg']);
$api->prices()->recordByExternal('SKU-1', ['regular_price_minor' => 1250], ['channel_code' => 'WEB']);
echo $api->compliance()->byExternal('SKU-1')['data']['anchor_display']['label'];
pip install uskladjenost-cijena

api = Client(token)
api.items.upsert("SKU-1", merchant_id=m, kind="product", name="Deterdžent 3 kg")
api.prices.record_by_external("SKU-1", regular_price_minor=1250, channel_code="WEB")
print(api.compliance.by_external("SKU-1")["data"]["anchor_display"]["label"])

JavaScript / TypeScript

GitHub: uskladjenost-cijena-js
npm install uskladjenost-cijena

const api = new Client(token);
await api.items.upsert('SKU-1', { merchant_id, kind: 'product', name: 'Deterdžent 3 kg' });
await api.prices.recordByExternal('SKU-1', { regular_price_minor: 1250 }, { channel_code: 'WEB' });
const { data } = await api.compliance.byExternal('SKU-1');

Webhookovi: svaka isporuka nosi X-PC-Signature: v1=HMAC-SHA256(secret, timestamp + "." + body); SDK-ovi imaju gotovu provjeru. Neuspjele isporuke ponavljamo nakon 1 min, 5 min, 30 min, 2 h i 12 h.

Za programere

Svi repozitoriji na jednom mjestu

Sav kod integracija je javan, pod licencom MIT, na GitHubu. Prijave grešaka i prijedlozi idu kroz Issues u pripadnom repozitoriju.