Электронная платежная система ваучерного типа

Для зарубежного заказчика была разработана электронная платежная система, позволяющая выпускать ваучеры на сумму введенных в систему денежных средств, а затем оплачивать этим ваучером товары и услуги в сети интернет. Была разработана как онлайновая система, позволяющая работать с ваучерами, включая API для подключения возможности оплаты ваучером и пополнения ваучера со стороннего ресурса, так и программное обеспечение для электронных киосков, позволяющих клиентам выполнять операции с наличными: пополнять баланс ваучера, снимать наличные с баланса ваучера.

Система передана заказчику и запущена в производственную эксплуатацию.

Техническое описание.

Система представляет собой программный комплекс, разработанный с применением свободного ПО, в состав которого входит веб-приложение и приложение для управления электронным киоском.

Серверная сторона:

  1. Операционная система Linux
  2. Объектно-ориентированный язык программирования Java
  3. Динамический объектно-ориентированный язык программирования Groovy
  4. Объектно-реляционная СУБД PostgreSQL
  5. Nginx
  6. Tomcat 6

Клиентская сторона:

  1. HTML
  2. CSS
  3. JavaScript (с применением библиотеки jQuery)
  4. AJAX

Киоск:

  1. Операционная система CrunchBang Linux
  2. Java
  3. OSGI
  4. Cromium
  5. HTML
  6. CSS
  7. JS (jQuery)

Серверное приложение разработано с применение Java фреймоворка Grails Framework. В качестве сервера приложений используется Tomcat. Tomcat позволяет эффективно использовать системные ресурсы и достигать высокой производительности. В качестве фронтенда используется Nginx. Запросы к статическим ресурсам также обрабатываются с помощью Nginx.

Архитектура решения построена на основе модели MVC.

Основные архитектурные решения серверного приложения:

  1. Реализует шаблон проектирования Model-View-Controller.
  2. Слой Model. Для доступа к данным используется реализация JPA - библиотека GORM, основанная на Hibernate 3. Данная библиотека для языка программирования Java, предназначена для решения задач объектно-реляционного отображения (object-relational mapping — ORM).
  3. Слой View. Представления реализованы технологией Groovy Servers Pages (GSP).
  4. Слой Controller. Использование языка программирования Groovy позволяет строить гибкую и мощную логику и использовать объектно-ориентированное программирование, динамическую типизацию, многопоточность, обработку исключений. В приложении применяются свободно распространяемые библиотеки программного кода.

Система написана с применением практики TDD. Используются библиотеки тестирования JUnit, Mockito. Написано несколько сотен юнит-тестов. Также разработаны функциональные тесты с применением инструмента тестирования Selenium. Использование юнит и функциональных тестов обеспечивает высокое тестовое покрытие кода.

Ведется журналирование работы приложения в отдельный файл с использованием библиотеки логирования Log4J. Реализован удаленный доступ к файлу логов посредством FTP.

Репликация и резервное копирование данных выполняется ежедневно и реализовано с применением механизмов, предоставляемых СУБД PostrgreSQL, и утилиты rsnapshot.

Реализована интеграция системы с сетью платежных киосков. Взаимодействие сервера и киоска происходит по защищенному протоколу HTTPS с использованием клиентских сертификатов X.509.