П Платёжка Документация

Быстрый старт

Подключите приём платежей к сайту или приложению: ваш сервер создаёт платёж, покупатель платит картой или по СБП на защищённой странице, результат приходит вебхуком.

REST + JSON. Базовый адрес: https://platezhka.online/api/v1. Все суммы — целые числа в копейках. Даты — ISO 8601 (МСК). Кодировка UTF-8.

Один и тот же API работает для тестового магазина (номер …DEMO, ключ sk_test_…, тестовый стенд ПЦ) и боевого (sk_live_…). Объекты магазинов не пересекаются; в каждом объекте есть поле shop_id.

Четыре шага до первой оплаты

  1. Зарегистрируйте кабинет. Вместе с боевым магазином создаётся тестовый, у него уже выпущен ключ sk_test_… (Интеграция → Подключение).
  2. Создайте платёж запросом POST /payments с номером заказа в order_id и передайте его id виджету на странице оформления (или отправьте покупателя на payment_url). Виджет показывает QR СБП, карту покупатель вводит на форме ПЦ внутри виджета.
  3. Получите результат вебхуком payment.succeeded или запросом GET /payments/{id}. Не полагайтесь на возврат покупателя на return_url.
  4. Переключитесь на боевой магазин после активации: замените ключ и адрес вебхука (см. Тестирование).

Создание платежа

curl -X POST https://platezhka.online/api/v1/payments \
  -H "Authorization: Bearer sk_test_XXXX" \
  -H "Idempotency-Key: order-1001" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 100000,
    "order_id": "1001",
    "description": "Заказ 1001",
    "return_url": "https://shop.example/orders/1001",
    "customer": {
      "id": "user-42",
      "email": "buyer@example.com"
    },
    "items": [
      {
        "text": "Товар",
        "price": 100000,
        "quantity": 1
      }
    ]
  }'

Ответ 201 — объект платежа: id для виджета и payment_url для ссылки:

{
  "id": "pay_3kZ1x9QmT0aBcDeFgHiJkL",
  "object": "payment",
  "shop_id": "723612",
  "mode": "live",
  "test": false,
  "status": "pending",
  "amount": 100000,
  "currency": "RUB",
  "captured_amount": 0,
  "refunded_amount": 0,
  "order_id": "1001",
  "description": "Заказ 1001",
  "capture_mode": "auto",
  "method": null,
  "confirmation": {
    "type": "hosted"
  },
  "payment_url": "https://platezhka.online/pay/pay_3kZ1x9QmT0aBcDeFgHiJkL",
  "return_url": "https://shop.example/orders/1001",
  "customer": {
    "id": "user-42",
    "email": "buyer@example.com"
  },
  "items": [
    {
      "itemId": 1,
      "text": "Товар",
      "price": 100000,
      "quantity": 1
    }
  ],
  "metadata": {},
  "source": "api",
  "receipt_status": null,
  "paygine_order_id": 3504676,
  "expires_at": "2026-09-22T13:00:00+03:00",
  "created_at": "2026-09-22T12:00:00+03:00"
}

Обработчик вебхука

Укажите адрес в кабинете (Интеграция → Подключение), проверьте подпись секретным ключом и отметьте заказ оплаченным. Подробнее — Вебхуки.

<?php
$secret = 'sk_test_...';
$body = file_get_contents('php://input');
parse_str(str_replace(',', '&', $_SERVER['HTTP_X_SIGNATURE'] ?? ''), $sig);
$expected = hash_hmac('sha256', ($sig['t'] ?? '') . '.' . $body, $secret);
if (abs(time() - (int) ($sig['t'] ?? 0)) > 300 || !hash_equals($expected, $sig['v1'] ?? '')) {
    http_response_code(400);
    exit;
}

$event = json_decode($body, true);
if ($event['type'] === 'payment.succeeded') {
    $payment = $event['data'];
    // Найдите заказ по $payment['order_id'], сверьте $payment['amount'] и отметьте его оплаченным.
    // Событие может прийти повторно: обработка должна быть идемпотентной по $event['id'].
}
http_response_code(200);

Что дальше

Сценарии подключения для интернет-магазина и сервиса с записью, справочник объектов, спецификация OpenAPI 3.

Без программирования

Счета и ссылки на оплату создаются в кабинете и работают без сайта: Ссылки на оплату.