Plaćanja
Hostovani checkout na /pay sa amount, project i opaque data.
Pay URL
Preusmjerite kupca na pay stranicu SDK hosta sa query parametrima:
/pay?amount=10&project=PROJECT_ID&data=OPAQUE_ORDER_DATA&customId=ORDER_123- amount — Cjelobrojni Perper iznos kao query string (npr. 10). Portal ga šalje backendu kao decimalni string.
- project — id projekta (cuid2).
- data — Opaque string koji vi definišete (npr. order id). Prosleđuje se da backend može da poveže plaćanje.
- customId (opciono) — Merchant idempotency ključ. Hostovani /pay prosleđuje ga Contabu (isto kao Contabo QR). Potreban za checkStatus; echo na webhook + redirect.
Checkout UX
Pay stranica prikazuje naziv projekta i iznos. Platilac potvrđuje sa Plati. Na uspjehu portal prati redirect URL sa Perper backend-a. Na grešci se prikaže greška.
Success stranica
/pay/successful potvrđuje završeno slanje kad tok tu završi. Preferirajte fulfill preko apiUrl callback-a, ne samo preko browsera.
Serverski callback (apiUrl)
Perper šalje potpisani JSON rezultat na apiUrl. Browser return URL je samo UX — fulfill ide sa verified webhook-a. Pun ugovor, verify recept i live proof su na stranici Webhook-ovi.
Status transakcije (API)
POST /sdk/transaction/checkStatus sa projectId, customId i JWT hash potpisanim project secretom vraća { successful: boolean }. Hash payload je { projectId, customId } — ne opaque pay data string.
QR pay link (API)
POST /sdk/project/qr (vlasnik) vraća PNG QR ka hostovanom /pay URL-u za amount + project (+ data/customId). Portal prosleđuje te query parametre u Contabo pay — QR → /pay → checkStatus se slažu.
Primjer (Node)
function buildPayLink({ host, amount, projectId, orderId }) {
const url = new URL("/pay", host);
url.searchParams.set("amount", String(amount));
url.searchParams.set("project", projectId);
url.searchParams.set("data", orderId);
url.searchParams.set("customId", orderId); // optional — enables checkStatus
return url.toString();
}Kreirajte projekte i kopirajte sample URL sa stranice projekta nakon quickstart-a. Quickstart · Webhook-ovi.