Платежная система

Система оплаты mod_paysystem

Введение

Данный модуль служит для осуществления процесса оплаты посетителем сайта услуг и товаров, представленных на сайте. Инициатором оплаты может быть любой модуль. При переходе в модуль в раздел оплаты, посетителю выписывается финансовый документ типа «счет на оплату», также он вводит дополнительные данные для осуществления платежа. Затем модуль предлагает список доступных способов оплаты, а пользователь выбирает один из них. При выборе некоторых способов процесс взаимодействия с плательщиком:
  1. заканчивается на этапе формирования печатной формы счета на оплату или квитанции. В этом случае перевод счета на оплату в состояние «оплачен» производит бухгалтер на основе выписки по расчетному счету.
  2. в других случаях посетитель автоматически переходит на сайт платежной системы, производит действия по оплате и возвращается в модуль с результатом «оплачена сумма S» или «нет оплаты». Если платежная система ответила модулю, что счет на оплату оплачен, она автоматически переводит состояние счета на оплату в значение «оплачен».
При переводе счета на оплату в состояние «оплачен», модуль создает документ типа «оплата», автоматически формирует событие и помещает в пул событий ядра InlifeCMS, используя mod_event_controller. Модуль, который инициировал процесс оплаты, видит это событие, извлекает из дополнительной информации события информацию, за что произведена оплата, и производит соответствующие действия внутри себя (перевод заказа товара в состояние «оплачен», уведомление по почте пользователя о поступлении оплаты его заказа, и т.д.)

Задачи модуля:

  1. Управление способами оплаты;
  2. Формирование документов на оплату;
  3. Осуществление процесса оплаты;
  4. Взаимодействие с другими модулями в части сообщения об оплате.

Управление способами оплаты

Управление осуществляется путем формирования списка доступных для сайта способов оплаты. Для каждого способа оплаты указывается:
  1. Тип платежной системы:
    1. Оплата безналичным переводом через банк.
    2. Оплата безналичным переводом через Сбербанк.
    3. Оплата по кредитной карте через систему cyberplat.ru.
    4. Оплата по кредитной карте через систему chronopay.com.
    5. Оплата через систему «Webmoney».
  2. Приоритет, которым данный способ появляется среди списка других способов.
  3. Активность (видим/не видим).
В зависимости от выбранного посетителем способа оплаты, модуль выполняет обработчик, соответствующий данному типу оплаты.
Модуль, инициирующий оплату, вызывает метод api модуля CreateBill с входными параметрами:
  1. Шапка
    1. Идентификатор клиента – user_id;
    2. Дата и время документа – date;
    3. Имя модуля - инициатора оплаты (mod_basket, mod_service_manager, …) – module_name;
    4. Внутренний идентификатор объекта оплаты (№ заказа, …) – object_id;
    5. Информацию об объекте оплаты – object_info.
  2. Табличная часть представляет собой массив записей - items, в каждой из которых есть:
    1. Наименование – name;
    2. Количество – quantity;
    3. Цена –cost;
    4. Валюта – currency;
    5. Имя модуля, к которому относится позиция номенклатуры – module_name;
    6. Идентификатор внутренней группы модуля, к которому относится позиция номенклатуры – group_id;
    7. Тип строки табличной части - item_type (empty=item, item, discount, subtotal, total);
    8. Информация о позиции номенклатуры 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/, производит действия по оплате, далее возвращается в модуль с результатом:
  • «сумма $$$ оплачена». Счет на оплату автоматически переводится в состояние «оплачен».
  • «нет оплаты». Возврат на страницу выбора способа оплаты.