Utviklere
Tre kall og en webhook.
Gateway er en hostet checkout, så integrasjonen er med vilje liten: opprett en ordre, send kunden til siden, verifiser det signerte resultatet. Alt under er hele flaten — betalings-UI, metodelogikk, 3-D Secure, lommebøker og kvitteringer bygger og vedlikeholder vi.
Slik er det bygget
Hva du integrerer mot.
- REST over HTTPS
- JSON inn, JSON ut
- Bearer API-nøkler
- Idempotensnøkler
- Signerte webhooks
- Replay-beskyttelse
- Test- og live-modus
- iOS- og Android-SDK-er
- Butikkplugins
- Innebygde felt
Kom i gang
Fra ingenting til betalt ordre.
Hele happy path. Beløp oppgis i minste enhet, referansene er dine, og checkout-URL-en er der du sender kunden. API-base-URL-en utstedes sammen med sandbox-nøklene dine — eksporter den som PROTOCORE_API_BASE, så kjører kallene under akkurat som skrevet.
Opprett ordren
Ett kall med beløp, valuta og din egen referanse. Idempotensnøkkelen genererer du selv — en gjentatt forespørsel returnerer den opprinnelige ordren i stedet for å opprette en ny.
curl -X POST "$PROTOCORE_API_BASE/v1/orders" \
-H "Authorization: Bearer $PROTOCORE_API_KEY" \
-H "Idempotency-Key: 9F21-0716" \
-H "Content-Type: application/json" \
-d '{
"amount": 4900,
"currency": "EUR",
"reference": "9F21-0716",
"line_items": [
{ "name": "Brand identity sprint", "amount": 3850 },
{ "name": "Typeface licensing", "amount": 600 },
{ "name": "Rush delivery", "amount": 400 }
],
"return_url": "https://arcstudio.ro/thanks"
}'Send kunden til checkout
Svaret inneholder en checkout-URL på din egen checkout-vert — den som utstedes med sandboxen, eller ditt eget domene når du peker det mot oss. Send kunden dit, eller åpne den i SDK-en; den siden rommer metodene, lommebøkene og 3-D Secure, så du har ingenting å bygge selv.
{
"id": "ord_2h4Kq9wRz",
"reference": "9F21-0716",
"amount": 4900,
"currency": "EUR",
"status": "pending",
"checkout_url": "https://<your-checkout-host>/c/2h4Kq9wRz"
}Verifiser det signerte resultatet
Når betalingen er fullført, sendes en signert hendelse til endepunktet ditt. Verifiser signaturen mot webhook-hemmeligheten din før du stoler på noe, og utfør deretter levering mot referansen du allerede kjenner.
{
"type": "order.paid",
"id": "evt_7Ka2Lm",
"created": "2026-07-23T09:41:02Z",
"data": {
"id": "ord_2h4Kq9wRz",
"reference": "9F21-0716",
"amount": 4900,
"currency": "EUR",
"method": "usdc",
"settlement": { "currency": "EUR", "amount": 4900, "rate": "0.9184" }
}
}Referanse
Endepunktene du faktisk bruker.
Det finnes mer i dokumentasjonen, men dette er settet de fleste integrasjoner aldri vokser ut over.
Webhooks
Det backend-en din får høre.
Hver hendelse har ordrereferansen du opprettet, så handleren din kan være en switch på typen og et oppslag hos deg selv.
Sjekk signaturen før du stoler på innholdet.
Hver leveranse har et tidsstempel og en HMAC-signatur over rå body. Sammenlign i konstant tid, avvis alt som er eldre enn toleransevinduet ditt, og behandle en duplikat hendelses-ID som allerede håndtert — vi prøver på nytt ved svar som ikke er 2xx, så handleren din bør også være idempotent.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const [ts, sig] = header.split(",").map((p) => p.split("=")[1]);
const expected = createHmac("sha256", secret)
.update(`${ts}.${rawBody}`)
.digest("hex");
const a = Buffer.from(sig, "hex");
const b = Buffer.from(expected, "hex");
if (a.length !== b.length || !timingSafeEqual(a, b)) return false;
// Reject replays outside a five-minute window.
return Math.abs(Date.now() / 1000 - Number(ts)) < 300;
}Garantier
Egenskapene du kan bygge på.
Idempotente opprettelser
Hver ordreopprettelse tar en idempotensnøkkel. En gjentatt forespørsel — etter timeout, deploy eller ny levering fra kø — returnerer den opprinnelige ordren i stedet for å belaste to ganger.
Signerte, replay-beskyttede hendelser
Webhooks har en tidsstemplet HMAC-signatur og en stabil hendelses-ID. Leveranser prøves på nytt med backoff til endepunktet ditt svarer 2xx, så et deploy-vindu mister ingen betaling.
Én referanse, fra ende til ende
Referansen du oppgir ved opprettelse, vises på checkout, kvitteringen, webhooken, utbetalingen og enhver senere refusjon. Det finnes ingen ekstra identifikator å mappe mellom systemer.
Testmodus bruker samme kodevei
Testnøkler kjører identiske flyter mot testsesjoner. Det som består i test, er det som går i produksjon — forskjellen er hvilke nøkler du sender, ikke hvilke endepunkter du kaller.
Testdata
Slik tester du banene som betyr noe.
Bak hver av stiene under ligger et testkort, som du finner sammen med nøklene dine når sandboxen opprettes. Kortnumrene er sandbox-spesifikke og publiseres ikke her, slik at de forblir riktige når schemenes testområder endres. Oppførselen er uansett deterministisk: en test kan like enkelt verifisere en avvisning som en vellykket betaling.
Hent nøkler og kom i gang.
En sandbox-merchant med API-nøkler, webhook-hemmeligheter og alle metoder slått på — pluss full referanse, slik at teamet ditt kan integrere før noe er signert.