← FlashDocs

Стратегии защиты покупателей на qbuy

Ключевой вывод

Funpay не имеет залогового механизма для продавцов — барьер входа минимален (телефон + тест). Когда продавец-мошенник уходит, платформа ничем не покрывает убытки покупателя. Это главная слабость конкурента и главная возможность для qbuy.

Покупатели должны иметь 100% гарантию возврата при доказанном мошенничестве. Деньги для возврата должны всегда находиться внутри системы — это ключевое требование.


Стратегия 1: Отложенный вывод (Delayed Payout) ⭐ Рекомендуемая

Идея: деньги поступают на внутренний счёт продавца сразу, но вывести их можно только через 7 дней после каждой сделки.

Механика:

  1. Покупатель оплачивает → деньги числятся на внутреннем балансе продавца (он видит их)
  2. Продавец передаёт товар
  3. Если в течение 7 дней покупатель не открыл диспут → продавец может вывести средства
  4. Если диспут открыт → средства заморожены, разбирает поддержка
  5. Диспут решён в пользу покупателя → средства возвращаются покупателю с баланса продавца
  6. Диспут решён в пользу продавца → средства разблокируются для вывода

Преимущества:

  • Деньги никогда не покидают систему до истечения окна споров
  • Продавец видит деньги сразу (психологический комфорт)
  • Платформа всегда имеет резерв для возврата
  • Не нужен залог — самодостаточный механизм
  • Прозрачно и понятно покупателю: "деньги вернутся, если не получил товар в течение 7 дней"

Что нужно в базе:

model SellerBalance {
  userId          String   @id
  user            User     @relation(...)
  totalBalance    Decimal  // общий баланс
  availableAmount Decimal  // доступно для вывода
  pendingAmount   Decimal  // заморожено (сделки < 7 дней)
}

enum OrderStatus {
  PENDING
  PAID
  DELIVERED      // продавец отметил доставку
  CONFIRMED      // покупатель подтвердил ИЛИ прошло 7 дней
  DISPUTED       // открыт диспут
  COMPLETED      // средства разблокированы
  CANCELLED
  REFUNDED
}

Стратегия 2: Залог продавца (Seller Deposit)

Идея: продавец вносит залог перед тем как начать продавать. Залог покрывает возможные возвраты.

Механика:

  • До 1 000 руб. за сделку → залог 500 руб.
  • До 5 000 руб. → залог 2 000 руб.
  • До 20 000 руб. → залог 5 000 руб.
  • Свыше → залог 20–30% от максимальной суммы сделки

Преимущества: покупатель может видеть размер залога продавца и доверять ему.

Недостатки: барьер входа для честных продавцов. Оптимально комбинировать со Стратегией 1.


Стратегия 3: Прогрессивные лимиты (Trust Ladder)

Идея: новый продавец не может торговать дорогими товарами пока не заработает репутацию.

Уровень Завершённых сделок Макс. сумма сделки
Новичок 0–5 500 руб.
Базовый 6–20 2 000 руб.
Доверенный 21–50 10 000 руб.
Продвинутый 51+ без лимита

Мошеннику нерентабельно тратить время на мелкие сделки чтобы выйти на высокий лимит.


Стратегия 4: Верификация через Roblox API (для предметов)

Для Limited-предметов Roblox возможна частичная автоматизация:

  1. Проверить наличие предмета у продавца до сделки через Inventory API
  2. После завершения в игре проверить наличие предмета у покупателя
  3. Если предмет перешёл → автоматически подтвердить сделку, разморозить баланс

Ограничения:

  • Только для предметов с публичным инвентарём
  • Не работает для игровой валюты (Robux)
  • Roblox ToS формально запрещает торговлю за реальные деньги

Рекомендуемая комбинация для qbuy

  1. Delayed Payout (7 дней) — основной механизм, обязательно
  2. Trust Ladder — ограничения для новых продавцов, обязательно
  3. Seller Deposit — опционально, для сделок свыше 5 000 руб.
  4. Roblox API check — для Limited-предметов, как дополнительная проверка

Что сказать покупателю на сайте:

"Деньги поступают продавцу только через 7 дней. Если за это время вы не получили товар и открыли спор — средства гарантированно возвращаются вам. Деньги никогда не покидают систему до закрытия сделки."


Статусы диспута (добавить в схему)

enum DisputeStatus {
  OPEN           // открыт покупателем
  UNDER_REVIEW   // взят в работу поддержкой
  RESOLVED_BUYER // решён в пользу покупателя → refund
  RESOLVED_SELLER // решён в пользу продавца → разблокировать
  CLOSED         // закрыт без решения (отозван)
}

model Dispute {
  id          String        @id @default(uuid())
  orderId     String        @unique
  order       Order         @relation(...)
  buyerId     String
  reason      String
  evidence    String?       // ссылка на скриншоты и т.д.
  status      DisputeStatus @default(OPEN)
  resolution  String?       // комментарий поддержки
  createdAt   DateTime      @default(now())
  resolvedAt  DateTime?
}