Касса

Didit в FOREVORpay

Касса сейчас принимает TON и один jetton. Jetton задаётся master-контрактом. Ниже как повесить Didit на вход в кассу. Вебхуки не нужны: это точка, счёт выставляется тут, клиент сканирует QR.

uOD-BjXEsYwVID8K2Vpr3--DCuJUQtOhwDZyfMq0LzE

Это master jetton Didit. В TON его надо писать как user-friendly адрес: EQ… или UQ…. Если explorer отдаёт полный EQ/UQ, в env клади его.

0. KYC

Создавать Checkout и Address можно только после KYC Didit. На кассе при входе кнопка «Пройти KYC». Оплата чужого QR в кошельке без KYC.

1. Сервер кассы

В /opt/messenger/.env (или test-стенд) поставь master Didit вместо USDT:

FOREVORPAY_USDT_MASTER=EQ…DiditMaster…
FOREVORPAY_TON_NETWORK=mainnet

Перезапусти messenger. Watcher начнёт ловить входящие jetton-переводы именно этого контракта. В кассе кнопка по-прежнему называется USDT: для киоска это слот «токен», не биржевой тикер.

2. Счёт

Продавец выбирает валюту в кассе. Клиент её не выбирает. API:

POST /api/pay/v1/checkout/sessions
Authorization: Bearer <jwt или fp_live_…>
Content-Type: application/json

{
  "asset": "usdt",
  "amount": "12.50",
  "title": "Заказ 1042",
  "external_id": "order-1042"
}

asset только ton или usdt. Для Didit используй usdt после смены master. Ответ содержит pay_address, comment вида FP-XXXXXXXXXXXX, link, qr_url, jetton_master.

3. Оплата

  1. Клиент сканирует QR в FOREVORmess.
  2. Приложение читает GET /pay/v1/invoices/{id} и шлёт jetton Didit на pay_address с мемо comment.
  3. Касса матчит комментарий FP-… и сумму. Лишнее остаётся на кошельке кассы, товар уходит на адрес из настроек.

4. Кошелёк кассы

TON и Didit приходят на внутренний адрес. Комиссия остаётся там. Вывод: вкладка «Кошелёк», сумма, TON или токен, адрес. Пустой адрес = адрес из настроек.

Позже

Вебхуки, отдельный asset: "didit" и подпись в клиенте «Didit» вместо «USDT». Для киоска достаточно смены master и выставления счетов как сейчас.