PerfectMoney
Начнем с самой популярной на данный момент платежной системы PerfectMoney. Система работает на классической системе - СУБД/фронтэнд/бэкэнд. Фактически, насколько можно выяснить, снаружи система построена на более-менее enterprise-платформе - это Windows + ASP/ASP.NET + SQL, резервирование производится с помощью ежедневных резервных копий. Рассмотрим более подробно нюансы использования данного решения:
Достоинства:
I. Использование операционной системы Windows сразу определяет то, что инженеров, которые смогли бы поддерживать данную платформу можно привлечь достаточно легко, так как платформа по сути своей одна из самых распространенных.
II. При использовании C# и технологии ASP существует возможность работы через прекомпилированные запросы к БД, что, в свою очередь, обеспечивает некоторую безопасность и защиту от SQL-инъекций.
III. Достаточно продуманный API, можно за недолгий срок произвести интеграцию в практически любой проект.
IV. Неплохая производительность, сравнимая по скорости работы с такими технологиями как Java, C++ и т.д., но все-таки более медленная.
Недостатки:
I. Наличие вирусов для платформы Windows сигнализирует о том, что рано или поздно случится падение системы с огромной вероятностью потери большинства данных пользователей и, соответственно, приведет к откатам на сутки или более. В зависимости от того существует резервная копия также на платформе Windows или нет - также существует опасность потери и резервных копий.
II. Особенность платформы Windows со временем терять производительность и стабильность также является фактором того, что система с годами будет все чаще падать и все чаще будут откаты. Согласно статистике, за последние 2 года частота откатов на состояние суточной давности увеличилась в 1.5 раза.
III. При эксплуатации системы, практически у всех разработчиков случаются проблемы с использованием API. Как, например, несоответствие проверочного хэша (подтверждающего транзакцию) и системой нотификации в целом, подтверждение транзакции при отсутствии фактического перевода средств, также отказ от транзакции при успешном переводе средств, что часто приводит к финансовым потерям предприятия и недовольству клиентов, которые произвели оплату, но оплата не зафиксирована.
IV. Отсутствие или частичное отсутствие внутренней целостности данных (отсутствие нормализации структуры БД), что проявляется в возможности произвести оплату по номеру платежного поручения дважды, трижды и вообще сколько угодно раз, что противоречит банковской логике по сути своей.
V. Наличествуют откаты (возвращение на состояние БД вчерашнего дня и удалением всех транзакций с момента последнего резервного копирования) Например недавний откат на сутки назад. Это обусловлено отсутствием какого-либо механизма защиты от сбоев. По всей видимости, используется только ежедневное резервное копирование данных.
VI. Отсутствие отделения бизнес - логики, от отображения. Вероятней всего транзакции либо отсутствуют полностью, либо реализованы для каждой конкретной операции на стороне web-интерфейса. Не редки случаи пропадания средств «в никуда», как то списание произведено, но зачисления на получающей стороне не случилось. В истории операции данной операции также нет, что говорит о не совершенности внутренних алгоритмов, что, в свою очередь снова говорит об отсутствии нормализации структуры БД.
VII. Очень сложный интерфейс пользователя с дублированием многих функций через различные пункты меню. Начинающим пользователям это доставляет особенно большие проблемы.
Итого:
Система относительно стабильная и ситуации, описанные в пункте «Недостатки» случаются на данный момент не часто, тут больше все зависит от везения. Если Вы произвели транзакцию, она была зафиксирована интернет - магазином и после ее совершения прошли сутки, то можно быть совершенно спокойным за то, что больше никаких проблем не будет. Решения, платформа и реализация имеют достаточно серьезные недостатки, но все-таки Window / ASP и SQL применяются и применяются успешно в системе банковского обслуживания, но даже банки, которые думают, о безопасности предпочитают использовать для обработки данных системы под управлением ОС семейства Unix (Solaris, BSD, Linux).
MeraPay
Система написана на PHP и использует СУБД MySQL. Про технологию PHP можно рассуждать долго и у нее существует немало поклонников среди начинающих разработчиков публичных сайтов и сайтов-визиток, но по-факту можно было написать кратко в разделе «Недостатки» всего один пункт: Используется технология PHP. Для специалиста, работающего с enterprise и системами, где безопасность стоит на первом месте - скриптовый язык PHP является запретной темой. Данная система не может быть рассмотрена как надежная и как платежная система в целом. Потому что помимо явно плохой реализации, отсутствие большинство заявленного функционала, существует проблема платформы PHP, которая во все года славилась проблемами с переполнением буфера, которые позволяют осуществлять взлом и доступ к приватным данным, существованием большого количества эксплойтов, готовых решений для взлома и вызова отказа в обслуживании, неявного механизма защиты данных от SQL-инъекции (можно использовать, а можно не использовать, что может привести к краже данных посредством получения доступа к серверу). Отсутствия проверок на работоспособность кода, (код может быть неработоспособным или содержать ошибки, но пока он не будет использован - ошибка не будет выявлена), отсутствия жесткой типизации данных (переменная может содержать число, но если там окажется строка, то операция сложения вызовет сложение двух переменных как двух строк и вызовет непредсказуемое поведение системы в целом). Например, удалось передать в систему суммы на перевод 120.00A и к этому прибавляется 0.360 - комиссия системы. Поскольку в переменной содержится буква A, в результате мы получим вместо 120.360 - 120.00А0.360, что вероятней всего вызовет сбой, отсутствие явной обработки исключений (транзакция, которая должна произвести списание с одного счета и зачисление на другой может быть прервана по середине и не завершена, что приведет к потере средств и дестабилизации системы в целом).
Достоинства:
I. Эргономичный интерфейс с красивым дизайном.
II. Простота использования (новичкам будет достаточно просто разобраться).
Недостатки:
I. Использование скриптового языка PHP не предназначенного для систем уровня предприятия. (Все недостатки см. выше в общем описании)
II. Отсутствие защиты данных, кроме резервного копирования.
III. Малое время существования системы (для проектов, написанных на PHP - время использования в продакшене является ключевым мерилом стабильности).
IV. Частое изменение процентных ставок по операциям. Сначала было заявлено, что переводы в системе «всегда будут бесплатными», сейчас ситуация изменилась и теперь перевод стоит 0.3%.
V. Явная нестабильность системы (тестировщику несколько раз удалось вызвать экран с ошибкой в системе).
Итого:
Система не может быть рассмотрена как серьезный продукт и тем более как полноценное средство расчетов в интернете. Единственное назначение - это макетирование платежной системы с целью отладки внутренних механизмов.
NixMoney
Система использует платформу Java, которая запускается на ОС Семейства Unix (Solaris, Linux). Бизнес - логика полностью отделена от интерфейса пользователя. Все операции со стороны интерфейса производятся в изолированных потоках (threads) и не могут быть прерваны извне. В случае возникновения нештатных ситуаций операция будет аннулирована полностью и средства физически не могут пропасть. Внутренний механизм системы гарантирует полное завершение транзакций и исключает возможность частичного его проведения. Для хранения всех данных используется СУБД Oracle, Apache Cassandra, Hazelcast, H2Database, что полностью исключает возможность откатов или потери данных. Платформа Java устойчива к взломам, переполнениям буфера, экспортам и SQL-инъекциям (внутренние механизмы Java исключают возможность игнорирования исключений и отсутствия обработки SQL-запросов). Операционные системы семейства Unix устойчивы к взломам и по факту не могут быть заражены вирусами. Java - это строго-типизированный язык программирования, с принудительной обработкой исключений. Стабильность же совокупности операционных систем семейства Unix и платформы Java доказана десятилетиями использования данных технологий в банковской среде и в среде обработки больших массивов данных.
Достоинства:
I. Интуитивно - понятный интерфейс, красивый дизайн. (Особенно просто разобраться новичкам)
II. Вся инфраструктура NixMoney работает в кластере и сохраняет свою работоспособность при выходе из строя до 30% серверов кластера, которые разнесены по миру (Германия, Австрия, США, Испания).
III. Система репликации данных, исключающая возможность откатов, даже делающая откат невозможным. Фактически эта система является мгновенной системой резервирования данных.
IV. Любая теоретически-возможная ошибка в системе приведет к остановке операции и возвращению системы с состояние до возникновения ошибки. Это делает невозможным потерю средств, отсутствие оповещения об операции и другие, существующие у конкурентов, проблемы.
V. Система полностью исключает возможность множественной оплаты платежного поручения с одним номером.
VI. Механизм трекинга нотификаций о транзакциях совершает множественные попытки оповещения, добиваясь гарантированного информирования сервиса интернет - магазина об оплате.
VII. Для расчета контрольной суммы транзакции используется платформа - независимый механизм расчета MD5-суммы, что исключает проблемы, связанные с проверкой валидности оповещения о транзакции.
VIII. В NixMoney применяется API, совместимое с API PerfectMoney, что делает миграцию с PerfectMoney на NixMoney достаточно простой. Необходимо лишь заменить ссылки с PerfectMoney на NixMoney (в соответствии с назначением операции)
IX. В системе NixMoney существует механизм определения кошелька пользователя по e-mail адресу. Данная операция выдает достоверный кошелек пользователя, но не соответствующий его реальным номерам кошельков (счетов). При миграции с PerfectMoney, можно легко перевести всех пользователей на систему NixMoney, зная только e-mail адреса этих клиентов. Причем средства на кошелек пользователя будут приниматься до его регистрации, а как только он зарегистрируется - он тут же получит доступ к переведенным ему средствам.
Недостатки:
I. Возможно, как недостаток можно воспринять тот факт, что система полностью автономна и фактически является аналогом физического кошелька. То есть, пользователь же не может подать в суд на производителя кошелька, чтобы тот ему вернул средства, которые у него украли вместе с кошельком.
II. Малое количество обменщиков в сети (в данный момент эта проблема решается и в ближайшее время будет полностью решена).
Итого:
Как ни странно, но NixMoney является самой технологичной платежной системой, которая единственная может гарантировать сохранность средств и целостность данных, отсутствие взломов и полную анонимность пользователей. Система допускает использование ников вместо Ф.И.О. при создании и использовании кошелька. Ни при каких обстоятельствах кошелек и счет не могут быть заблокированы. Система гарантирует, что описанные комиссии будут сохранены, и не будут меняться с течением времени. Система гарантирует, что при полном уничтожении любой точки присутствия серверного оборудования (физическое уничтожение дата - центра, где располагается один из серверов кластера) данные не пострадают и будут в целости и сохранности.