Utvecklare
Tre anrop och en webhook.
Gateway är en hostad checkout, så integrationen är medvetet liten: skapa en order, skicka kunden till sidan, verifiera det signerade resultatet. Allt nedan är hela ytan — betalningsgränssnitt, metodlogik, 3-D Secure, plånböcker och kvitton bygger och underhåller vi.
Upplägget
Vad du integrerar mot.
- REST över HTTPS
- JSON in, JSON ut
- Bearer API-nycklar
- Idempotensnycklar
- Signerade webhooks
- Replay-skydd
- Test- och live-läge
- SDK:er för iOS & Android
- Plugins för webbshoppar
- Inbäddade fält
Snabbstart
Från noll till betald order.
Hela den lyckade vägen. Belopp anges i minsta valutaenhet, referenserna är dina och checkout-URL:en är dit du skickar kunden. API:ets bas-URL utfärdas tillsammans med dina sandbox-nycklar — exportera den som PROTOCORE_API_BASE så fungerar anropen nedan precis som de står.
Skapa ordern
Ett anrop med belopp, valuta och din egen referens. Idempotensnyckeln genererar du själv — en omsänd begäran returnerar den ursprungliga ordern i stället för att skapa en till.
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"
}'Skicka kunden till checkout
Svaret innehåller en checkout-URL på din egen checkout-värd — den som utfärdades med din sandbox, eller din egen domän när du har pekat den mot oss. Omdirigera dit, eller öppna den i SDK:n. På den sidan finns betalmetoderna, plånböckerna och 3-D Secure, så du behöver inte bygga något själv.
{
"id": "ord_2h4Kq9wRz",
"reference": "9F21-0716",
"amount": 4900,
"currency": "EUR",
"status": "pending",
"checkout_url": "https://<your-checkout-host>/c/2h4Kq9wRz"
}Verifiera det signerade resultatet
När betalningen är slutförd når en signerad händelse din endpoint. Verifiera signaturen mot din webhook-hemlighet innan du litar på något, och leverera sedan mot den referens du redan känner till.
{
"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" }
}
}Referens
Endpoints du faktiskt kommer att använda.
Det finns mer i dokumentationen, men det här är de anrop som de flesta integrationer aldrig växer ifrån.
Webhooks
Vad din backend får veta.
Varje händelse bär den orderreferens du skapade, så din hanterare kan vara en switch på typen och ett uppslag på din egen sida.
Kontrollera signaturen innan du litar på innehållet.
Varje leverans har en tidsstämpel och en HMAC-signatur över den råa bodyn. Jämför i konstant tid, avvisa allt som är äldre än ditt toleransfönster och behandla ett dubblerat event-id som redan hanterat — vi försöker igen vid svar som inte är 2xx, så din hanterare bör också vara 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
Egenskaper du kan bygga på.
Idempotent skapande
Varje orderskapande tar en idempotensnyckel. En omsänd begäran — efter en timeout, en deploy eller en omleverans från kön — returnerar den ursprungliga ordern i stället för att debitera två gånger.
Signerade, replay-skyddade händelser
Webhooks har en tidsstämplad HMAC-signatur och ett stabilt event-id. Leveranser försöks igen med backoff tills din endpoint svarar 2xx, så ett deploy-fönster kostar ingen betalning.
En referens, hela vägen
Referensen du anger vid skapandet syns på checkout, kvittot, webhooken, utbetalningen och varje senare återbetalning. Det finns ingen andra identifierare att mappa mellan systemen.
Testläget går samma kodväg
Testnycklar kör identiska flöden mot testsessioner. Det som går igenom i test är det som går i produktion — skillnaden är vilka nycklar du skickar, inte vilka endpoints du anropar.
Testdata
Så testar du de flöden som räknas.
Bakom varje väg nedan finns ett testkort. Kortnumren följer med nycklarna när sandlådan skapas. De publiceras inte här, så att de förblir korrekta när schemats testintervall ändras. Beteendet är deterministiskt i båda fallen: ett test kan lika enkelt verifiera ett avslag som ett godkännande.
Hämta nycklar och kom igång.
En sandlådehandlare med API-nycklar, webhook-hemligheter och alla metoder aktiverade — plus hela referensen, så att ert team kan integrera innan något är påskrivet.