Розробникам

Три виклики та вебхук.

Gateway — це hosted checkout, тому інтеграція навмисно мінімальна: створити замовлення, відправити клієнта на сторінку, перевірити підписаний результат. Це весь обсяг роботи з вашого боку — платіжний UI, логіку способів оплати, 3-D Secure, гаманці та квитанції ми створюємо й підтримуємо в актуальному стані самі.

Загальна картина

З чим ви інтегруєтеся.

  • REST через HTTPS
  • JSON на вході, JSON на виході
  • API-ключі Bearer
  • Ключі ідемпотентності
  • Підписані вебхуки
  • Захист від повторного відтворення
  • Тестовий і бойовий режими
  • SDK для iOS і Android
  • Плагіни для інтернет-магазинів
  • Вбудовані поля

Швидкий старт

Від нуля до оплаченого замовлення.

Весь happy path. Суми вказуються в мінімальних одиницях, референси — ваші, а на checkout URL ви перенаправляєте клієнта. Базовий URL API видається разом із ключами sandbox — експортуйте його як PROTOCORE_API_BASE, і виклики нижче працюватимуть саме так, як написано.

01

Створіть замовлення

Один виклик із сумою, валютою та вашим референсом. Ключ ідемпотентності генеруєте ви — повторний запит повертає початкове замовлення, а не створює друге.

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

Відправте клієнта на checkout

У відповіді — checkout URL на вашому хості checkout: тому, що видано разом із sandbox, або на вашому домені, коли ви направите його на нас. Перенаправте клієнта або відкрийте сторінку в SDK: саме там живуть способи оплати, гаманці та 3-D Secure, тож з вашого боку будувати нічого не потрібно.

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

Перевірте підписаний результат

Коли платіж завершено, підписана подія надходить на ваш endpoint. Перш ніж чомусь довіряти, звірте підпис із секретом вебхука, а потім виконуйте замовлення за референсом, який ви вже знаєте.

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" }
  }
}

Довідник

Endpoint-и, якими ви справді користуватиметеся.

У документації є більше, але більшість інтеграцій ніколи не виходить за межі цього набору.

POST /v1/orders
Створює замовлення й повертає його checkout URL. Приймає ключ ідемпотентності.
GET /v1/orders/:id
Поточний стан замовлення — статус, спосіб оплати, розрахунок і повернення.
POST /v1/orders/:id/refunds
Повернення коштів за замовленням, повне чи часткове, з обов'язковою причиною.
POST /v1/orders/:id/void
Скасовує авторизацію до розрахунку, тож гроші взагалі не рухаються.
POST /v1/links
Створює платіжне посилання — одноразове чи збірне, з необов'язковим терміном дії.
GET /v1/payouts/:id
Пакет розрахунків і замовлення, з яких він сформований, із розбивкою комісій.
POST /v1/customers/:id/cards
Зберігає картку для оплати в один клік і регулярних списань; повертає посилання на токен.
POST /v1/subscriptions
Списує кошти зі збереженої картки за розкладом; кожен цикл створює окреме замовлення.

Вебхуки

Про що дізнається ваш бекенд.

Кожна подія містить референс замовлення, який ви створили, тож ваш обробник може зводитися до switch за типом і пошуку у вашій системі.

order.paid
Авторизація й списання пройшли — виконуйте замовлення за референсом.
order.failed
Платіж не завершено; причину вказано так, щоб оператор міг на неї зреагувати.
order.refunded
Повернення виконано, повне чи часткове, з причиною та приміткою.
order.disputed
Відкрито чарджбек; докази вже додано до замовлення.
payout.settled
Пакет розрахунків відправлено на ваш рахунок, із переліком замовлень у ньому.
subscription.charged
Регулярний цикл створив власне замовлення та квитанцію.
Перевірка

Перевіряйте підпис, перш ніж довіряти тілу запиту.

Кожна доставка містить мітку часу та HMAC-підпис сирого тіла. Порівнюйте за сталий час, відхиляйте все, що старіше за ваше вікно допуску, а дубльований id події вважайте вже опрацьованим — ми повторюємо спроби за відповідей не 2xx, тож ваш обробник теж має бути ідемпотентним.

Node — перевірка підпису
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;
}

Гарантії

Властивості, на які можна спиратися.

01

Ідемпотентне створення

Кожне створення замовлення приймає ключ ідемпотентності. Повторний запит — після тайм-ауту, деплою чи повторної доставки з черги — повертає початкове замовлення, а не списує кошти двічі.

02

Підписані події із захистом від повтору

Вебхуки містять HMAC-підпис із міткою часу та стабільний id події. Доставка повторюється з backoff, доки ваш endpoint не відповість 2xx, тож вікно деплою не призведе до втрати платежу.

03

Один референс наскрізно

Референс, який ви передаєте при створенні, з'являється на checkout, у квитанції, вебхуку, виплаті та будь-якому наступному поверненні. Другого ідентифікатора, який треба зіставляти між системами, немає.

04

Тестовий режим — той самий код

Тестові ключі запускають ті самі сценарії на тестових сесіях. Що проходить у тесті, те й працює в бойовому режимі — різниця лише в ключах, які ви надсилаєте, а не в endpoint-ах, які викликаєте.

Тестові дані

Як перевірити важливі сценарії.

За кожним сценарієм стоїть тестова картка. Їх список ви отримаєте разом із ключами, коли ми видамо sandbox: номери окремі для кожного sandbox і не публікуються тут, тож залишаються чинними, навіть коли схеми змінюють тестові діапазони. Поведінка в будь-якому разі детермінована: тест так само легко перевіряє відмову, як і успішну операцію.

Одразу схвалено
Авторизує й списує кошти без 3-D Secure — основний сценарій без збоїв.
Перевірка 3-D Secure
Примусово запускає перевірку, яку можна пройти, щоб протестувати повернення до магазину.
М’яка відмова
Відхиляє через брак коштів, після чого повторює спробу іншим маршрутом.
Жорстка відмова
Остаточно відхиляє як картку з простроченим терміном дії, без повторних спроб.
Тестові мережі USDC
Тестовий USDC в Ethereum, Base і Solana за фіксованим курсом.
Симуляція переказу
Позначте тестовий переказ на vIBAN як отриманий, щоб замовлення перейшло в статус «оплачено».

Отримайте ключі й починайте.

Sandbox-мерчант із API-ключами, секретами вебхуків і всіма увімкненими методами — плюс повна документація, щоб ваша команда могла інтегруватися ще до підписання угоди.