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. Оплата
- Клиент сканирует QR в FOREVORmess.
- Приложение читает GET
/pay/v1/invoices/{id}и шлёт jetton Didit наpay_addressс мемоcomment. - Касса матчит комментарий
FP-…и сумму. Лишнее остаётся на кошельке кассы, товар уходит на адрес из настроек.
4. Кошелёк кассы
TON и Didit приходят на внутренний адрес. Комиссия остаётся там. Вывод: вкладка «Кошелёк», сумма, TON или токен, адрес. Пустой адрес = адрес из настроек.
Позже
Вебхуки, отдельный asset: "didit" и подпись в клиенте «Didit» вместо «USDT». Для киоска достаточно смены master и выставления счетов как сейчас.