Платежная система
Система оплаты mod_paysystem
Данный модуль служит для осуществления процесса оплаты посетителем сайта услуг и товаров, представленных на сайте. Инициатором оплаты может быть любой модуль. При переходе в модуль в раздел оплаты, посетителю выписывается финансовый документ типа «счет на оплату», также он вводит дополнительные данные для осуществления платежа. Затем модуль предлагает список доступных способов оплаты, а пользователь выбирает один из них. При выборе некоторых способов процесс взаимодействия с плательщиком:
- заканчивается на этапе формирования печатной формы счета на оплату или квитанции. В этом случае перевод счета на оплату в состояние «оплачен» производит бухгалтер на основе выписки по расчетному счету.
- в других случаях посетитель автоматически переходит на сайт платежной системы, производит действия по оплате и возвращается в модуль с результатом «оплачена сумма S» или «нет оплаты». Если платежная система ответила модулю, что счет на оплату оплачен, она автоматически переводит состояние счета на оплату в значение «оплачен».
При переводе счета на оплату в состояние «оплачен», модуль создает документ типа «оплата», автоматически формирует событие и помещает в пул событий ядра InlifeCMS, используя mod_event_controller. Модуль, который инициировал процесс оплаты, видит это событие, извлекает из дополнительной информации события информацию, за что произведена оплата, и производит соответствующие действия внутри себя (перевод заказа товара в состояние «оплачен», уведомление по почте пользователя о поступлении оплаты его заказа, и т.д.)
Задачи модуля:
- Управление способами оплаты;
- Формирование документов на оплату;
- Осуществление процесса оплаты;
- Взаимодействие с другими модулями в части сообщения об оплате.
Управление способами оплаты
Управление осуществляется путем формирования списка доступных для сайта способов оплаты. Для каждого способа оплаты указывается:
- Тип платежной системы:
- Оплата безналичным переводом через банк.
- Оплата безналичным переводом через Сбербанк.
- Оплата по кредитной карте через систему cyberplat.ru.
- Оплата по кредитной карте через систему chronopay.com.
- Оплата через систему «Webmoney».
- Приоритет, которым данный способ появляется среди списка других способов.
- Активность (видим/не видим).
В зависимости от выбранного посетителем способа оплаты, модуль выполняет обработчик, соответствующий данному типу оплаты.
Модуль, инициирующий оплату, вызывает метод api модуля CreateBill с входными параметрами:
- Шапка
- Идентификатор клиента – user_id;
- Дата и время документа – date;
- Имя модуля - инициатора оплаты (mod_basket, mod_service_manager, …) – module_name;
- Внутренний идентификатор объекта оплаты (№ заказа, …) – object_id;
- Информацию об объекте оплаты – object_info.
- Табличная часть представляет собой массив записей - items, в каждой из которых есть:
- Наименование – name;
- Количество – quantity;
- Цена –cost;
- Валюта – currency;
- Имя модуля, к которому относится позиция номенклатуры – module_name;
- Идентификатор внутренней группы модуля, к которому относится позиция номенклатуры – group_id;
- Тип строки табличной части - item_type (empty=item, item, discount, subtotal, total);
- Информация о позиции номенклатуры item_info.
Модуль производит действия:
1. Через account_manager достает информацию о клиенте: наименование и адрес.
2. В таблице fin_document формирует документ типа «счет на оплату»;
3. Выводит форму этого документа и предоставляет посетителю ссылку на дальнейшую оплату сформированного счета.
При выборе пользователем кнопки «Оплатить счет», вызывается метод handler_do_payment. Посетитель перед собой видит таблицу с выбором способа оплаты счета. В зависимости от способа оплаты действия модуля разные:
Оплата безналичным перечислением
|
В этом случае задача системы состоит в выводе формы счета на оплату, чтобы посетитель мог распечатать счет. Бухгалтер в списке неоплаченных счетов переводит состояние счета на оплату в «оплачен» на основе выписки по кассе и расчетному счету.
|
Оплата через Сбербанк
|
В этом случае задача системы состоит в выводе формы квитанции на оплату, чтобы посетитель мог распечатать ее. Бухгалтер в списке неоплаченных счетов переводит состояние счета на оплату в «оплачен» на основе выписки по кассе и расчетному счету.
|
Оплата по кредитной карте через систему cyberplat.ru.
|
Выбрав этот способ оплаты, посетитель переходит на сайт cyberplat.ru, производит действия по оплате, далее возвращается в модуль с результатом:
|
Оплата по кредитной карте через систему chronopay.com.
|
Выбрав этот способ оплаты, посетитель переходит на сайт chronopay.com, производит действия по оплате, далее возвращается в модуль с результатом:
|
Оплата через систему «Webmoney».
|
Выбрав этот способ оплаты, посетитель переходит на сайт http://www.webmoney.ru/, производит действия по оплате, далее возвращается в модуль с результатом:
|