Документация API

API: приём скинов на сайте

Этот API позволяет принимать оплату скинами на вашем сайте. Рекомендуемый способ — постоянная ссылка на депозит: пользователь переходит по ссылке, отправляет скины боту, бот примет и отправит вебхук с partnerSteamId, суммой и списком скинов.

→ OpenAPI / Swagger (интерактивная документация)

1. Постоянная ссылка на депозит (рекомендуется)

Эндпоинт: GET /api/v1/deposit/link

Возвращает постоянные ссылки — по одной на каждого бота. Без параметров — все ссылки. Параметр ?botId=xxx — ссылка для конкретного бота. Пользователь открывает ссылку, переходит в Steam и отправляет скины. Сумма определяется по полученным скинам. В вебхуке приходит partnerSteamId — SteamID пользователя для пополнения баланса на вашем сайте.

Пример ответа (успех):

Один бот: {"depositUrl": "https://.../deposit/b-xxx", "slug": "b-xxx", "botId": "..."}
Несколько ботов: {"links": [{"botId", "botName", "depositUrl", "slug"}]}

2. Базовый URL и авторизация

Базовый URL: https://pay-skin.com

Авторизация через API-ключ, который выдаётся в Настройках панели. Передавайте его в одном из заголовков:

  • Authorization: Bearer YOUR_API_KEY
  • X-Api-Key: YOUR_API_KEY

3. Создание депозита (с предзаданной суммой)/deposit

Эндпоинт: POST /api/v1/deposit

Используется для инициализации сделки. В ответ вы получаете transactionId и tradeUrl — ссылку, по которой пользователь отправит скины.

Тело запроса:

{
  "amount": 1000,              // сумма депозита в рублях
  "gameType": "CS2",           // CS2 | DOTA2 | RUST (опционально, по умолчанию CS2)
  "externalId": "order-123",   // ваш ID заказа/платежа (опционально)
  "callbackUrl": "https://example.com/webhook" // опционально, перекрывает URL из настроек
}

Если сумма меньше минимальной или больше максимальной из настроек, вернётся ошибка.

Пример ответа (успех):

{
  "transactionId": "cmlg2q61w0000rc8us55ki3xe",
  "tradeUrl": "https://pay-skin.com/trade/cmlg2q61w0000rc8us55ki3xe",
  "amount": 1000,
  "status": "PENDING"
}

Покажите пользователю tradeUrl (кнопка «Отправить скины» или редирект в Steam).

4. Завершение сделки/transaction/:id/complete

Эндпоинт: POST /api/v1/transaction/:id/complete

Вызывается воркером платформы после принятия трейда ботом. Партнёр обычно не вызывает этот метод — создаёт депозит, отдаёт tradeUrl пользователю и получает webhook. Для тестирования или особых сценариев можно вызвать вручную, передав steamTradeId и skins.

POST /api/v1/transaction/{transactionId}/complete
Authorization: Bearer YOUR_API_KEY

{
  "steamTradeId": "1234567890",          // ID трейда в Steam
  "skins": [
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "image": "https://...",
      "price": 750.0                     // рыночная цена в рублях
    },
    {
      "name": "AK-47 | Point Disarray (FT)",
      "image": "https://...",
      "price": 250.0
    }
  ]
}

На основании цен скинов система посчитает:

  • steamValueсумма цен всех скинов;
  • payoutAmountсумма к выплате партнёру с учётом процента из настроек «% от цены Steam».

В случае успеха статус транзакции становится COMPLETED, и на ваш вебхук уходит событие.

5. Вебхуки

URL вебхука настраивается в Настройках панели (поле URL вебхука). После завершения транзакции придёт запрос типа:

POST https://your-site.com/webhook

{
  "event": "transaction.completed",
  "transactionId": "cmlg2q61w0000rc8us55ki3xe",
  "order_id": "order-123",
  "externalId": "order-123",
  "amount": 1000,
  "steamTradeId": "1234567890",
  "partnerSteamId": "76561198012345678",
  "steamValue": 1000,
  "payoutAmount": 600,
  "steamPricePercent": 60,
  "status": "COMPLETED",
  "completedAt": "2025-02-10T12:34:56.000Z",
  "skins": [
    {
      "name": "AK-47 | Redline (Field-Tested)",
      "image": "https://...",
      "price": 750.0
    },
    {
      "name": "AK-47 | Point Disarray (FT)",
      "image": "https://...",
      "price": 250.0
    }
  ]
}

Используйте externalId, чтобы связать транзакцию со своей системой заказов. partnerSteamId — SteamID64 пользователя, отправившего скины; используйте для пополнения баланса на вашем сайте (привязка по Steam).

6. GameStores.app

Для донат-магазинов Rust, Hurtworld, Unturned. Подключите SkinPay как кастомный способ оплаты.

GET/POST /api/v1/gamestores/create создание платежа (GET или POST, параметры в body или query)

GET /api/v1/gamestores/order/:id проверка статуса заказа

В GameStores ничего вводить не нужно. Всё настраивается на pay-skin.com:

В разделе «Настройки» укажите ID магазина и секретный ключ из GameStores. Затем добавьте ссылку на депозит в свой магазин (кнопкой или текстом).

Подробная инструкция в документации

7. Логи и отладка

Все вызовы API и ошибки видны в разделе Логи API. . Отправка вебхуков и ответы вашего сервера — в разделе Вебхуки.