Zhvillues

Tre thirrje dhe një webhook.

Gateway është një checkout i hostuar, prandaj integrimi është qëllimisht i vogël: krijoni një porosi, dërgoni klientin te faqja, verifikoni rezultatin e nënshkruar. Gjithçka më poshtë është e gjithë sipërfaqja — ndërfaqen e pagesës, logjikën e metodave, 3-D Secure, portofolet dhe faturat i ndërtojmë dhe i mbajmë të përditësuara ne.

Në përmbledhje

Çfarë po integroni.

  • REST mbi HTTPS
  • JSON hyrje, JSON dalje
  • Çelësa API Bearer
  • Çelësa idempotence
  • Webhooks të nënshkruar
  • Mbrojtje nga riprodhimi
  • Modalitete test dhe live
  • SDK për iOS & Android
  • Plugin-e për dyqane
  • Fusha të integruara

Fillim i shpejtë

Nga zero te një porosi e paguar.

Rruga e plotë e suksesshme. Shumat janë në njësi minore, referencat janë tuajat, dhe URL-ja e checkout-it është ajo ku ridrejtoni klientin. URL-ja bazë e API-t jepet bashkë me çelësat e sandbox-it — eksportojeni si PROTOCORE_API_BASE dhe thirrjet më poshtë funksionojnë saktësisht siç janë shkruar.

01

Krijoni porosinë

Një thirrje me shumën, monedhën dhe referencën tuaj. Çelësin e idempotencës e gjeneroni ju — një kërkesë e përsëritur kthen porosinë origjinale në vend që të krijojë një të dytë.

POST /v1/orders
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"
      }'
02

Dërgoni klientin te checkout-i

Përgjigjja përmban një URL checkout-i në hostin tuaj të checkout-it — atë që jepet me sandbox-in, ose domenin tuaj sapo ta drejtoni te ne. Ridrejtoni te ajo, ose hapeni në SDK; në atë faqe ndodhen metodat, portofolet dhe 3-D Secure, kështu që nuk ka asgjë për të ndërtuar nga ana juaj.

201 Created
{
  "id": "ord_2h4Kq9wRz",
  "reference": "9F21-0716",
  "amount": 4900,
  "currency": "EUR",
  "status": "pending",
  "checkout_url": "https://<your-checkout-host>/c/2h4Kq9wRz"
}
03

Verifikoni rezultatin e nënshkruar

Kur pagesa përfundon, te endpoint-i juaj mbërrin një event i nënshkruar. Verifikoni nënshkrimin me webhook secret-in tuaj përpara se t'i besoni çfarëdo, pastaj përmbushni porosinë sipas referencës që e njihni tashmë.

POST /your/webhook — order.paid
{
  "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" }
  }
}

Referenca

Endpoint-et që do të përdorni realisht.

Ka më shumë në dokumentacion, por ky është grupi përtej të cilit shumica e integrimeve nuk shkojnë.

POST /v1/orders
Krijoni një porosi dhe merrni URL-në e checkout-it. Kërkon një çelës idempotence.
GET /v1/orders/:id
Gjendja aktuale e një porosie — statusi, metoda, shlyerja dhe rimbursimet.
POST /v1/orders/:id/refunds
Rimbursim mbi porosinë, i plotë ose i pjesshëm, me arsye të detyrueshme.
POST /v1/orders/:id/void
Çlironi autorizimin para shlyerjes, pa lëvizur fare para.
POST /v1/links
Krijoni një link pagese — njëpërdorimësh ose mbledhës, me skadencë opsionale.
GET /v1/payouts/:id
Një grup shlyerjesh dhe porositë që e financuan, me tarifat të detajuara.
POST /v1/customers/:id/cards
Ruani një kartë në vault për pagesa me një klik dhe të përsëritura; kthen një referencë tokeni.
POST /v1/subscriptions
Tarifoni një kartë të ruajtur sipas orarit; çdo cikël krijon porosinë e vet.

Webhooks

Çfarë dëgjon backend-i juaj.

Çdo event mbart referencën e porosisë që krijuat, kështu handler-i juaj mund të jetë një switch mbi tipin dhe një kërkim nga ana juaj.

order.paid
Autorizimi dhe kapja u kryen — përmbushni sipas referencës.
order.failed
Pagesa nuk përfundoi, me një arsye mbi të cilën operatori mund të veprojë.
order.refunded
U lëshua një rimbursim, i plotë ose i pjesshëm, me arsyen dhe shënimin.
order.disputed
U hap një chargeback, me provat e bashkëngjitura tashmë te porosia.
payout.settled
Një grup shlyerjesh u nis drejt llogarisë tuaj, me listën e porosive pas tij.
subscription.charged
Një cikël i përsëritur krijoi porosinë dhe faturën e vet.
Verifikoni

Kontrolloni nënshkrimin para se t'i besoni trupit.

Çdo dërgim mbart një vulë kohore dhe një nënshkrim HMAC mbi trupin e papërpunuar. Krahasoni në kohë konstante, refuzoni çdo gjë më të vjetër se dritarja juaj e tolerancës dhe trajtojeni një id eventi të dyfishtë si të përpunuar tashmë — ne riprovojmë te përgjigjet jo-2xx, ndaj handler-i juaj duhet të jetë idempotent.

Node — verifikimi i nënshkrimit
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;
}

Garanci

Vetitë mbi të cilat mund të ndërtoni.

01

Krijime idempotente

Çdo krijim porosie pranon një çelës idempotence. Një kërkesë e përsëritur — pas një timeout-i, një deploy-i ose ridërgimi nga radha — kthen porosinë origjinale në vend që të tarifojë dy herë.

02

Evente të nënshkruara, të mbrojtura nga riprodhimi

Webhooks mbartin një nënshkrim HMAC me vulë kohore dhe një id eventi të qëndrueshëm. Dërgimet riprovohen me backoff derisa endpoint-i juaj të përgjigjet 2xx, kështu që një dritare deploy-i nuk humb asnjë pagesë.

03

Një referencë, nga fillimi në fund

Referenca që jepni gjatë krijimit shfaqet te checkout-i, fatura, webhook-u, pagesa dalëse dhe çdo rimbursim i mëvonshëm. Nuk ka identifikues të dytë për t'u përputhur mes sistemeve.

04

Modaliteti test është i njëjti rrugëtim kodi

Çelësat test ekzekutojnë të njëjtat rrjedha mbi sesione testimi. Ajo që kalon në test është ajo që del live — dallimi është cilët çelësa dërgoni, jo cilat endpoint-e thirrni.

Të dhëna testimi

Si t'i provoni rrugët që kanë rëndësi.

Pas çdo rruge më poshtë qëndron një kartë testimi, e listuar bashkë me çelësat kur lëshohet sandbox-i — numrat janë për çdo sandbox veç e veç dhe nuk publikohen këtu, që të mbeten të saktë kur ndryshojnë diapazonet e testimit të skemave. Sjellja është përcaktuese në të dyja rastet: një test verifikon një refuzim po aq lehtë sa një sukses.

Miratim i menjëhershëm
Autorizon dhe kap pagesën pa sfidë 3-D Secure — rruga pa pengesa.
Sfidë 3-D Secure
Detyron një sfidë që mund ta kalosh hap pas hapi, për të testuar edhe kthimin.
Refuzim i butë
Refuzon për fonde të pamjaftueshme, pastaj provon sërish në një rrugë alternative.
Refuzim përfundimtar
Refuzon përgjithmonë si kartë e skaduar, pa riprovim.
Rrjete testimi USDC
USDC në rrjete testimi në Ethereum, Base dhe Solana, me çmim me kurs fiks.
Simulim transferte
Shëno një transfertë testimi vIBAN si të mbërritur për ta kaluar porosinë në të paguar.

Merr çelësat dhe fillo.

Një tregtar sandbox me çelësa API, sekrete webhook dhe çdo metodë të aktivizuar — plus dokumentimin e plotë, që ekipi yt të integrojë përpara se të nënshkruhet çdo gjë.