Shop Escrow: Безопасные выплаты для владельцев магазинов
Когда игрок покупает товар в магазине, принадлежащем пользователю, платёж больше не отправляется немедленно владельцу магазина. Вместо этого монеты удерживаются сервером в escrow до тех пор, пока покупатель не подтвердит получение товара. Только после этого владелец магазина получает свою выплату — 98% on-chain, с 2% комиссией сервера.
Зачем нужен Escrow?
Без escrow владелец магазина мог бы получить платёж и никогда не доставить товар. У покупателя не было бы никаких средств защиты. Escrow защищает обе стороны:
- Покупатели могут оспорить заказ, если товар не доставлен или не соответствует описанию. Выплата замораживается до рассмотрения дела администратором.
- Владельцы магазинов гарантированно получают свою выплату, как только покупатель подтверждает получение — или автоматически через 7 дней, если покупатель не предпринимает действий.
Как это работает
1 Покупатель оплачивает
Покупатель отправляет полную сумму платежа на операторский Wallet сервера. Монеты удерживаются в escrow. Статус заказа устанавливается в escrow.
2 Покупатель подтверждает получение
Покупатель вызывает POST /shop/confirm-receipt, чтобы подтвердить получение товара. Сервер немедленно отправляет 98% платежа в Wallet владельца магазина on-chain. Сервер удерживает 2% комиссию.
3 Автоматическое освобождение через 7 дней
Если покупатель не подтверждает получение и не оспаривает заказ в течение 7 дней, выплата автоматически освобождается владельцу магазина. Фоновый процесс каждый час проверяет истёкшие escrow.
4 Разрешение споров
Если покупатель недоволен, он может вызвать POST /shop/dispute, чтобы заморозить выплату. Затем администратор рассматривает дело через POST /shop/admin/resolve-payout и либо:
- Освобождает выплату владельцу магазина, или
- Возвращает — выплата отменяется, и монеты остаются на сервере (покупателю может быть компенсировано вручную).
Справочник статусов выплат
| Status | Meaning |
|---|---|
none | Официальный магазин или нет заказа |
escrow | Монеты удерживаются сервером, ожидание подтверждения покупателя |
disputed | Покупатель оспорил заказ, ожидается рассмотрение администратором |
paid | 98% отправлено владельцу on-chain |
refunded | Администратор отменил выплату, монеты остаются на сервере |
failed | On-chain перевод не удался |
API Endpoints
| Endpoint | Who | Purpose |
|---|---|---|
POST /shop/confirm-receipt | Покупатель | Подтвердить получение → освободить escrow |
POST /shop/dispute | Покупатель | Оспорить заказ → заморозить escrow |
POST /shop/admin/resolve-payout | Администратор | Разрешить спор (освободить или вернуть) |
GET /shop/my-payouts | Владелец магазина | Просмотр итогов escrow и выплаченных сумм, а также истории |
Выбор Wallet
Выплата отправляется в Wallet владельца магазина в той же сети, что и платёж:
| Payment Currency | Owner Wallet Used |
|---|---|
| CC (Cash Coins) | CC wallet (резерв: KC wallet) |
| KC (Keshe Coins) | KC wallet |
Распределение доходов
| Recipient | Share |
|---|---|
| Владелец магазина | 98% |
| Комиссия сервера | 2% |
2% комиссия покрывает расходы на инфраструктуру: газ блокчейна (где применимо), хостинг сервера и саму службу escrow.
Официальные магазины
Официальные магазины Erleuchtung (принадлежащие серверу, owner_id IS NULL) исключены из системы escrow. Платежи за товары официальных магазинов поступают напрямую на сервер без разделения выплат.
Что дальше?
Система escrow уже работает. Владельцы магазинов могут отслеживать ожидающие балансы escrow и выплаченные доходы через эндпоинт GET /shop/my-payouts. Фронтенд-панель для управления выплатами, подтверждения получения и подачи споров появится в следующем релизе.