🗺️
Backdoor Payment API – Меню
🔄
Как работает платёж
🔄

Платёж от создания до зачисления

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

Клиент отправляет POST /api/payment/create с суммой и machineId. Сервер возвращает paymentUrl – ссылку на форму ЮMoney.

2
Переход на форму оплаты

Приложение открывает paymentUrl в браузере. Пользователь оплачивает картой или кошельком ЮMoney.

3
Подтверждение от ЮMoney

После оплаты ЮMoney отправляет webhook на сервер. Сервер верифицирует подпись SHA-1 и начисляет DogeCoins.

4
Polling статуса

Клиент опрашивает GET /api/payment/{id}/status каждые 3–10 с. Как только статус = 1 – монеты уже зачислены.

5
Редирект браузера

ЮMoney перенаправляет на /api/payment/success или /api/payment/fail. Это только информационная страница.

💳
Платёжные эндпоинты
💳

Payments

POST /api/payment/create Создать платёж
Тело запроса (JSON)
ПолеТипОбяз.Описание
amountdecimalСумма в рублях
descriptionstringНазначение платежа
machineIdstringID устройства
paymentTypeint0 = AnyCard (по умолчанию)
requireFioboolЗапросить ФИО
requireEmailboolЗапросить e-mail
requirePhoneboolЗапросить телефон
Пример
// POST https://payment.phobichka.ru/api/payment/create
{ "amount": 199.00, "machineId": "DESKTOP-AB12CD",
                                    "description": "DogeCoins: Кошелёк (+525 монет)" }
Ответ 200
{ "paymentId": "3fa85f64-...", "paymentUrl": "https://yoomoney.ru/...",
                                    "estimatedCoinsReward": 398, "expiresAt": "2026-03-09T15:30:00Z" }
GET /api/payment/{id}/status Статус платежа
💡
Опрашивай раз в 3–10 с. Не чаще – rate limiter. Истёкшие платежи переводятся в статус 3 автоматически каждые 15 мин.
Ответ 200
{ "paymentId": "3fa85f64-...", "status": 1,
                                    "expectedAmount": 199.00, "actualAmount": 199.00,
                                    "rewardedCoins": 398 }
Статусы
0Pending
1Succeeded
2Failed
3Expired
GET /api/payment/success Редирект после оплаты

ЮMoney перенаправляет сюда после оплаты. Страница показывает подтверждение.
Важно: статус на этой странице ≠ зачисление монет. Монеты подтверждает только status = 1 в /status.

GET /api/payment/fail Редирект при отказе

ЮMoney перенаправляет сюда при отмене или ошибке оплаты.

🐾
DogeCoins – кошелёк
🐾

Баланс и история

GET /api/coins/{machineId}/balance
{ "machineId": "DESKTOP-AB12CD",
                                            "balance": 1250, "totalEarned": 2100,
                                            "totalSpent": 850, "updatedAt": "2026-03-09T12:00:00Z" }
GET /api/coins/{machineId}/history
ПараметрDefaultОписание
page1Страница
pageSize20До 100 на страницу
[{ "id": 42, "amount": 398, // отриц. = списание
                                            "reason": "Платёж #3fa85f64",
                                            "createdAt": "2026-03-09T12:00:00Z" }]
GET /api/coins/{machineId}/can-afford/{amount}
{ "machineId": "DESKTOP-AB12CD",
                                            "required": 800, "sufficient": true }
📊

Обменный курс

🐾
DogeCoins начисляются автоматически за каждый успешный платёж. Курс фиксирован + бонусный множитель.
Примерный расчёт
Базово×1.1
49 ₽98 DC~107 DC
199 ₽398 DC~437 DC
399 ₽798 DC~877 DC
899 ₽1798 DC~1977 DC
⚠️
Курс (COINS_RUBLE_RATE) и множитель задаются на сервере. Всегда используй estimatedCoinsReward из ответа /create.
🚦
Ошибки
🚦

Коды и формат ошибок

КодЗначениеКогда
200 OKУспехЗапрос выполнен корректно
400ВалидацияНеверный формат, отриц. сумма
404Не найденоПлатёж с таким ID не существует
429Rate limitПревышен лимит (10 req/min на IP)
500Ошибка сервераВнутренняя ошибка – повтори позже
Формат ошибки
{ "error": "Validation failed",
                            "details": "amount must be greater than 0" }
Быстрый старт – C#

Создать платёж и дождаться оплаты

// 1. Создаём платёж
var http = new HttpClient { BaseAddress = new Uri("https://payment.phobichka.ru") };
var res = await http.PostAsJsonAsync("/api/payment/create", new {
    amount = 199m, description = "DogeCoins: Кошелёк",
    machineId = Environment.MachineName
});
var payment = await res.Content.ReadFromJsonAsync<CreatePaymentResult>();

// 2. Открываем браузер
Process.Start(new ProcessStartInfo(payment.PaymentUrl) { UseShellExecute = true });

// 3. Polling статуса каждые 5 секунд
var interval = TimeSpan.FromSeconds(5);
while (true) {
    await Task.Delay(interval);
    var st = await http.GetFromJsonAsync<PaymentStatus>(
                            $"/api/payment/{payment.PaymentId}/status");
    if (st.Status == 1) {
        Console.WriteLine($"✓ Оплачено! Начислено {st.RewardedCoins} DogeCoins");
        break;
    }
    if (st.Status is 2 or 3) {
        Console.WriteLine("✗ Платёж не завершён"); break;
    }
                            // Увеличиваем интервал до 10 с
    if (interval < TimeSpan.FromSeconds(10)) interval += TimeSpan.FromSeconds(1);
}
Backdoor Payment API · payment.phobichka.ru · ASP.NET Core 10 · ЮMoney
Все транзакции обрабатываются через официальный шлюз ЮMoney. Данные карт на этом сервере не хранятся.
🎨
Оформление рабочего стола

Цветовая тема

Обои рабочего стола

Поддерживается URL, data:, и любой CSS background.

Эффекты окон

Backdoor Payment API
🔊 📶
RU
--:--
--.--
💳
Донат – создать платёж ЮMoney
💳

Сумма и описание

Выбери сумму (₽)
Описание (необязательно)
🖥️

Идентификатор устройства

вычисляется…
Формируется из параметров браузера – уникальный ID плательщика для сервера.
🖥️Профиль устройства
Загрузка…