Vlastita trgovina ili ERP je ona za koju ne postoji gotov dodatak, pa vaš razvojni programer povezuje konfigurator s košaricom. Pravilo iza svega ovdje stane u jednu rečenicu: cijena koju je poslao preglednik nikada ne smije postati cijena u košarici. Vaš poslužitelj je prvo provjerava kod CutOptima.
CutOptim ne naplaćuje plaćanje i ne hostira trgovinu; košarica, naplata i plaćanje ostaju vaši. Još ne postoji SDK. API referenca konfiguratora navodi svaku rutu, kôd pogreške i ograničenje, s OpenAPI 3.1 dokumentom; ova stranica, stranica o narudžbama i referentni kod vode kroz integraciju korak po korak.
Dva ključa
- Javni ključ (publishable key) nalazi se na vašoj stranici za ugradnju. Može činiti samo ono što čini kupac i to samo s domena koje ste za njega naveli.
- Tajni ključ (secret key) je za vaš poslužitelj i nikada se ne stavlja na stranicu. Šalje se kao
Authorization: Bearer <key>usluzi, prema zadanim postavkamahttps://cfg.cutoptim.com. Uz POST uvijek šaljiteContent-Type: application/json.
Korak 1: provjerite ponudu prije košarice
Kad kupac naruči, vaša stranica prima događaj cutoptim:order s tokenom ponude. Pošaljite token svom poslužitelju i odande:
curl -X POST https://cfg.cutoptim.com/cfg/v1/quote/verify \
-H "Authorization: Bearer $CFG_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"quoteToken":"<token from the page>"}'
Odgovor je 200 s {"valid": true, "redeemed": false, "claims": {...}} ili {"valid": false, "reason": "..."}. Odbijanje je i dalje 200, pa čitajte valid. Istek vremena, 401, 500 ili nečitljivo tijelo tretirajte kao neprovjereno i odbijte stavku. Zatim usporedite tvrdnje sa svojom stavkom košarice: tenant je vaš, valuta je valuta košarice, istek je u budućnosti, a hash ponude jednak je hashu ponude koju je vaša stranica prikazala. Referentni kod uključuje funkciju koja izračunava taj hash.
Lokalna provjera oblika tokena, tenanta i isteka jeftinija je, ali ne može dokazati potpis, jer se ključ za potpisivanje ne izdaje. Koristite je samo kao prethodnu provjeru.
Korak 2: provjerite narudžbu
Provjera ponude pokazuje da je obećanje cijene autentično. Ne pokazuje koju narudžbu preglednik misli. Prije nego što pohranite ili ispunite narudžbu prema id-ju, dohvatite je na svom poslužitelju s GET /cfg/v1/orders/{id} i svojim tajnim ključem. Vraća hash plana, hash ponude, status, valutu i tri ukupna iznosa u manjim jedinicama, bez osobnih podataka. Usporedite ih s onim što ste provjerili.
Korak 3: primite webhook
Konfigurirajte webhook kako je opisano na stranici o narudžbama. Vaš primatelj:
- čita sirovo tijelo prije parsiranja;
- čita zaglavlje
CutOptim-Signature,t=<unix seconds>,v1=<hex>(dok se tajna rotira, mogu postojati dvije vrijednostiv1); - ponovno izračunava
HMAC-SHA256(secret, "<t>.<raw body>"), uspoređuje u konstantnom vremenu i odbija vremensku oznaku udaljenu više od otprilike pet minuta; - preuzima id događaja iz
CutOptim-Event-Idprije bilo kakvog posla i zanemaruje id koji je već obradio; - zanemaruje vrste događaja koje ne poznaje i odgovara s
2xx, kako pošiljatelj ne bi uzalud ponavljao slanje.
Tajnu primatelja dobivate s POST /cfg/v1/admin/webhooks/{id}/secret i svojim tajnim ključem. Tajne držite u svom okruženju, nikada na stranici, u repozitoriju ili dnevniku.
Referentni kod
Dva mala primjera bez ovisnosti prikazuju sva tri koraka. To je kod za čitanje i kopiranje, a ne hostirana usluga:
- Node 18 ili noviji: cutoptim-verify.mjs i example-server.mjs.
- PHP 7.4 ili noviji: CutOptimVerify.php i example-webhook.php.
Njihove tajne su rezervirana mjesta. Pohrana duplikata u memoriji u primjerima je zamjena: u produkciji čuvajte obrađene id-jeve događaja u svojoj bazi i preuzimajte id u istoj transakciji koja bilježi narudžbu.
Isti koraci, s točnim zahtjevima i odgovorima, nalaze se u referenci: Vlastita trgovina ili ERP.
Rotacija ključeva
Ključ ili tajna webhooka mogu se rotirati s preklapanjem, pa stari nastavlja raditi određeno vrijeme dok postavljate novi. Tijekom rotacije webhooka isporuka nosi dva potpisa v1 sedam dana, a prihvaćanje bilo kojeg od njih omogućuje prelazak bez zastoja. Gumbi u konzoli za rotaciju s preklapanjem još nisu izgrađeni; konzola može stvarati i opozivati ključeve.
Drugi načini primanja narudžbi
Za WooCommerce koristite dodatak. Ako vam trebaju samo planovi rezanja unutar vlastitog softvera, bez ugrađenog zaslona za kupca, to je Engine API.