Представьте парк аттракционов, фуд-корт на фестивале, корпоративную столовую или сеть автомоек. Что их объединяет? Всем им нужна своя закрытая платёжная система или внутренняя программа лояльности (клубные карты).Обычно внедрение такой системы — это боль. Нужно покупать дорогие терминалы, нанимать интеграторов и пилить самописный софт. А что делать, если система нужна «на один раз» (для трёхдневного фестиваля) или у малого бизнеса просто нет бюджета?Меня зовут Никита, и я решил закрыть эту боль, заодно прокачав своё портфолио. Я разработал легковесную, open-source альтернативу закрытым платёжкам, которая работает прямо в браузере, не требует скачивания приложений и сложного железа.Под капотом — классический стек React + Node.js и капелька технологии в виде WebNFC. Читать далее
Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.6K
Обзор

превью
Представьте парк аттракционов, фуд-корт на фестивале, корпоративную столовую или сеть автомоек. Что их объединяет? Всем им нужна своя закрытая платёжная система или внутренняя программа лояльности (клубные карты).
Обычно внедрение такой системы — это боль. Нужно покупать дорогие терминалы, нанимать интеграторов и пилить самописный софт. А что делать, если система нужна «на один раз» (для трёхдневного фестиваля) или у малого бизнеса просто нет бюджета?
Меня зовут Никита, и я решил закрыть эту боль, заодно прокачав своё портфолио. Я разработал легковесную, open-source альтернативу закрытым платёжкам, которая работает прямо в браузере, не требует скачивания приложений и сложного железа.
Под капотом — классический стек React + Node.js и капелька технологии в виде WebNFC.
🛠 Архитектура и технические костыли (с пользой для юзера)Главная идея проекта — превратить любой обычный смартфон в платёжный терминал без установки лишнего софта. Всё работает через веб-приложение.
Основной упор был сделан на технологию WebNFC, которая позволяет считывать физические NFC-метки и карты прямо из браузера. Но тут мы сразу сталкиваемся с суровой реальностью: WebNFC сейчас поддерживается только в Chrome на Android.
if (!("NDEFReader" in window)) {
alert(
"Ошибка: Web NFC не поддерживается. Используйте Chrome на Android и HTTPS.",
);
return;
}
ndef.current = new NDEFReader();
ndef.current.onreading = async ({ message, serialNumber }) => {
if (readingLock.current) return;
setIsReading(true);
readingLock.current = true;
let cardObject = null;
try {
setUid(serialNumber);
for (const record of message.records) {
if (record.recordType !== "text") continue;
const decoder = new TextDecoder();
const textData = decoder.decode(record.data);
try {
cardObject = JSON.parse(textData);
setCardData(cardObject);
} catch {
console.log("Not JSON");
return;
}
console.log(
`UID: ${serialNumber} \n Balance: ${cardObject.balance} \n Name: ${cardObject.name}`,
);
addLog("read", serialNumber, cardObject.balance);
}
} catch (e) {
console.log("ошибка в карте", e);
} finally {
setIsReading(false);
readingLock.current = false;
}
};Оставлять пользователей iOS за бортом было нельзя, поэтому я придумал элегантный фолбек:
Для Android: Терминал (смартфон администратора/кассира) считывает карту клиента в один клик через WebNFC по её уникальному идентификатору (UID).
Для iOS: На карте генерируется или печатается QR-код, содержащий тот же UID. Кассир просто сканирует его камерой внутри того же веб-приложения.

Как ходят данные:
На этапе MVP я не стал перегружать архитектуру тяжелыми СУБД, поэтому схема выглядит максимально лаконично:
Frontend (React) — отправляет UID карты и сумму —> Backend (Node.js) — парсит данные и проводит транзакцию —> JSON DB (быстрое файловое хранилище на первое время).
💼 В чём профит для бизнеса?Зачем владельцу условной автомойки или кофейни внедрять такое решение вместо обычного банковского эквайринга? Я выделил 5 главных причин:
Деньги сразу в обороте. Клиент покупает локальную валюту или абонемент заранее. Деньги уже у вас в кассе, а услугу вы окажете потом. Это гарантирует, что клиент вернётся именно к вам, а не к конкурентам.
Психология «виртуальных денег». Тратить внутренние баллы или баланс с клубной карты психологически гораздо проще, чем расставаться с реальными рублями на балансе банка. Это кратно поднимает средний чек.
Прощай, грабительский эквайринг. Меньше транзакций через банк — меньше комиссий платежным системам. Бизнес экономит на каждом чихе.
Доступность «из коробки». Не нужно покупать терминалы за десятки тысяч рублей и оплачивать лицензии на софт. Нужен только копеечный набор NFC-карт (или распечатанных QR-кодов) и любой смартфон.
Прозрачный контроль. В систему встроен удобный лог для отслеживания всех операций с возможностью моментального экспорта в Excel для бухгалтерии.

🚀 Что дальше и где посмотреть код?
Получилась гибкая open-source система, которую можно развернуть за полчаса и адаптировать под задачи конкретного локального бизнеса или мероприятия.
В планах — прикрутить полноценную базу данных (MongoDB) вместо JSON-файлов, расширить ролевую модель (суперадмин, кассир, клиент) и добавить более красивую аналитику в реальном времени.
Проект полностью открытый. Вы можете изучить исходники, развернуть его у себя, закинуть пул-реквест или просто поставить звёздочку моему репозиторию.
👉 Ссылка на мой GitHub: https://github.com/lqdope/NFCwebPay/
Буду рад фидбеку в комментариях: взлетит ли такая альтернатива «на коленке» для мелкого бизнеса или WebNFC в вебе — всё ещё слишком нестабильная история?
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | redb.Identity: OAuth 2.1 / OpenID сервер на .NET, где протокол отделён от транспорта, по шине или вообще без сети | 0 | 12.74 | 14-07-2026 |
| 2 | N тел в браузере: PWA‑бенчмарк на Rust, WebAssembly и Three.js | 0 | 7.58 | 21-07-2026 |
| 3 | История JavaScript: браузерные войны, ECMAScript, Node.js, TypeScript, React | 0 | 8.31 | 10-07-2026 |
| 4 | Платёжная платформа на.NET: во что она обходится и что из этого можно не писать | 0 | 7.74 | 28-07-2026 |
| 5 | Как получить пожизненный бан на VC.ru за open-source проект на Node.js без рекламы. Кейс CMTT | 0 | 9.64 | 29-07-2026 |
| 6 | Референсная архитектура платёжной платформы на.NET: схемы, границы транзакций, модули, кластер | 0 | 7.74 | 28-07-2026 |
| 7 | РИА Новости: Россияне массово переходят на платежи без карт и наличных | 0 | 12.83 | 26-07-2026 |
| 8 | Один QR-код вместо двух действий: как Яндекс Пэй объединил оплату и лояльность в Cofix | 0 | 9.47 | 31-03-2026 |
| 9 | В России выросла популярность альтернативных способов оплаты покупок | 1 | 12.66 | 26-07-2026 |
| 10 | Gallery | 0 | 17.54 | 26-09-2026 |