Возможность использования платного доступа возможна при помощи интеграции с платежной системой Яндекс.Касса. Для организации данного механизма взимания абонентской платы необходима настройка системы WNAM с платежной системы.

Настройка системы WNAM

Необходимо подключиться к платежной системе Яндекс.Касса (https://kassa.yandex.ru/). После получения идентификаторов необходимо прописать их в настройках системы WNAM (/etc/wnam.properties):

yamoney_shopid=хххх
yamoney_scid=хххх
yamoney_url=https://money.yandex.ru/eshop.xml
yamoney_password=YYYYY

Для проведения тестирования следует указать: yamoney_url=https://demomoney.yandex.ru/eshop.xml

В личном кабинете Яндекс.Кассы необходимо указать URL возврата веб-сессии абонента на адрес вашего сервера WNAM, а также пути до API проверки валидности платежа:

https://wnam.provider.ru/api/yandex/check  
https://wnam.provider.ru/api/yandex/aviso  
https://wnam.provider.ru/api/yandex/success  
https://wnam.provider.ru/api/yandex/fail

Необходимо установить SSL-сертификат на ваш сервер WNAM (https://wnam.provider.ru/), в противном случае платежная система не будет с ним взаимодействовать. Сертификат можно приобрести (купить), либо подписаться на сервис от Let's Encrypt. В административном интерфейсе WNAM в конструкторе страниц следует создать страницу типа "Приветствие" или "Другое" с шаблоном, соответствующим платежной форме, на которой абонент будет выбирать одну из тарифных опций для совершения платежа. Образец такой страницы приведен на сайте http://www.netams.com/files/wnam/portalpages/pay.html. Следует отредактировать страницу (указать варианты платежей согласно вашему предполагаемому тарифу) в "экспертном режиме" конструктора.

После приобретения сертификата и создания страницы с требуемым тарифом необходимо создать тариф в меню "Конфигурация " → "Платный доступ". Система WNAM позволяет создавать неограниченное число  тарифов. 

В разделе "Действие" можно отредактировать тариф. Описание тарифа состоит из набора обязательных полей (свойств тарифа), а также списка тарифных элементов.
Обязательные поля настройки тарифа:

Затем идет набор одного или более "тарифных элементов", которые определяют сетку тарифа, то есть суммы оплаты за предоставление доступа на заданное время.

Параметры (длительность, стоимость) должны в точности повторять набор параметров, заданных в форме оплаты (функция doPay(X,Y)).

Каждый из тарифных элементов редактируется отдельно. Параметр "Промо код" в настоящий момент не используется.

По завершении редактирования параметров тарифа и его тарифных элементов необходимо нажать на кнопку "Сохранить". После произведенной настройки тариф можно включить в разделе "Перенаправление" общих настроек или настроек площадки.

На этом настройка системы WNAM завершена. Ознакомьтесь с описанием логики работу системы платного доступа перед переходом к проверке.

Описание логики работы

Ранее не зарегистрированный в системе абонент обязан пройти стадию идентификации (авторизации) согласно настроек в соответствующем разделе WNAM. Если для площадки (или в общих настройках) включен параметр использовать платный доступ и указан тариф, абоненту будет продемонстрировано окно с шаблоном, заданным в настройках тарифа. Абонент может выбрать одну из тарифных опций, либо воспользоваться бесплатным подключением (если такая возможность предоставлена в настройках тарифа). Длительность сессии такого бесплатного подключения определяется либо настройками меню "Ограничения", либо заданными на самом хотспоте параметрами.


Если сессия закончена и абонент подключается заново, но лимит числа бесплатных сессий для данного тарифа исчерпан, абоненту будет представлено соответствующее сообщение либо совершен переход по заданной ссылке (убедитесь, что она находится "внутри" Walled Garden хотспота). Если абонент выбирает один из тарифных элементов, то происходят последовательно следующие действия:

Полный доступ в сеть Интернет требуется, в первую очередь, для проверки платежа абонента через 3D Secure, для подтверждения платежа кодом из СМС на сайте банка-эмитента карты абонента, который заранее не известен. На сайте платежной системы абоненту демонстрируется предзаполненная форма с идентификаторами оплаты и предложением указать реквизиты кредитной карты.

В форме оплаты тарифа указываются следующие данные:

При успешной оплате абоненту демонстрируется подтверждение.

Кнопка "Перейти на сайт магазина" направляет абонента по ссылке, указанной в окне "Перенаправление" ("Отправлять по ссылке") при задании тарифного плана на площадке, а если ссылка не указана - то по  ссылке, которую изначально запрашивал сам абонент. Если платеж не успешен (например, произошел отказ в проведении транзакции, либо абонент не успел совершить оплату в отведенное для платежа время), абоненту демонстририруется страница с ошибкой.

Переход по любой из ссылок дает возможность абоненту повторить оплату еще раз. В случае, если абонент произвел успешную оплату до завершения периода, указанного в параметре "Длительность бесплатной сессии, сек.", то по завершении оплаты сессия абонента не прерывается. В противном случае, система WNAM сбрасывает сессию абонента и регистрирует необработанный заказ. При успешной оплате абонент переводится в категорию "платных". Значок кредитной карты свидетельствует, что абонент производил оплату, а "жирный" шрифт в строке со списком абонентов - что в текущий момент у абонента действует платный доступ.

Параметры учетной записи абонента содержат заполненную третью вкладку "Оплата".


На вкладке "Оплата" указаны:

Администратор может подарить время (продлить действие платного доступа), сбросить факт оплаты доступа, а также перейти в отчет с историей оплат данного абонента. Факт оплаты будет также отображен в сведениях о сессии абонента.

Диагностика настройки

В случае успешного подключения с последующей оплатой в лог-файле wnam.log появятся записи подобного типа: 

20:07:41.424 DEBUG [c.n.w.web.cp.CaptivePortalController:384] - CP mikrotik clicked: username=4C:57:CA:XX:XX:XX, ip=10.130.102.195, dst='http://bash.im/', server_address=10.1.0.102:80, server_name='mk-provider'
20:07:41.433 DEBUG [c.n.w.web.cp.CaptivePortalController:1732] - processAuthRequest MIKROTIK: username=4C:57:CA:XX:XX:XX, ip=10.130.102.195, server=10.1.0.102:80, site_id=10, dst='http://bash.im/'
20:07:41.433 DEBUG [c.n.w.web.cp.CaptivePortalController:1890] - processRedirectRequestCi mac=4C:57:CA:XX:XX:XX, method=PAY, formName=, redirectUrl=http://www.provider.ru/, key=7974c020-3ae3-421e-b88a-469d45e98d7b
20:07:46.121 DEBUG [c.n.w.web.cp.CaptivePortalController:1517] - postPay tariff='ТарифПервый' (58aca3a6a18c761e7c359b61), t_element='Один' (1), amount='10', time=1, code='null', ci=7974c020-3ae3-421e-b88a-469d45e98d7b
20:07:46.133 DEBUG [c.n.w.web.cp.CaptivePortalController:2234] - loginAtNasCi MIKROTIK mac=4C:57:CA:XX:XX:XX, ip=10.130.102.195, server=10.1.0.102:80, dst='http://wnam.provider.ru/cp/pay'
20:07:46.138 DEBUG [com.netams.wnam.web.cp.Mikrotik:37] - backToMikrotik login len=548, server='10.1.0.102:80', username=4C:57:CA:XX:XX:XX, password=password, dst='http://wnam.provider.ru/cp/pay'
20:07:47.610 INFO [WnamRadius:549] - AUTH for new session ID=80100f03-xxxxxx, request MAC=4C:57:CA:XX:XX:XX, IP=10.130.102.195, cust_clientid=null
20:07:47.686 INFO [WnamRadius:723] - ACCT Start existing (80100f03-xxxxxx) session ID=80100f03-xxxxxx, MAC=4C:57:CA:XX:XX:XX, IP=10.130.102.195, NAS=172.16.130.9
20:07:47.691 DEBUG [c.n.wnam.services.WnamCmdService:826] - ACCT-Start uhid task NAS=172.16.130.9, CUST=4C:57:CA:XX:XX:XX, IP=10.130.102.195, DB=wnam_db
20:07:47.692 DEBUG [c.n.wnam.services.WnamCmdService:189] - ACCT-Start uhid processing NAS=172.16.130.9, CUST=4C:57:CA:XX:XX:XX, IP=10.130.102.195, DB=wnam_db
20:07:47.693 DEBUG [c.n.wnam.services.WnamCmdService:991] - updateHostIdentity connecting to NAS 172.16.130.9 of 0
20:07:47.723 DEBUG [c.n.w.web.cp.CaptivePortalController:1556] - getPay tariff='58aca3a6a18c761e7c359b61, amount='10.0', time=1
20:08:16.578 DEBUG [com.netams.wnam.web.api.YandexKassa:95] - CHECK customerNumber=4C:57:CA:XX:XX:XX, Payment={Phone=79996662211, tariffId=58aca3a6a18c761e7c359b61, amount=10.0, orderId=2211-6129}, code=0
20:08:16.964 INFO [com.netams.wnam.web.api.YandexKassa:145] - AVISO customerNumber=4C:57:CA:XX:XX:XX, amount=10.00, payment ID=2000001131544 for tariff 'ТарифПервый' until 1491070096962 (+ 1 hours)
20:08:30.621 INFO [com.netams.wnam.web.api.YandexKassa:195] - SUCCESS customerNumber=4C:57:CA:XX:XX:XX, orderNumber=2211-6129, invoiceId=2000001131544, shopDefaultUrl='http://www.provider.ru/', CI=found

Также в веб-интерфейсе системы WNAM в разделе "Диагностика" → "Логи переданных в WNAM команд" отобразятся сведения о транзакции:

01.04.2017 21:42:47PAYMENT{Site=10, Phone=79996662211, Amount=200.00, OrderNumber=2211-3744, InvoiceId=2000001131561, MAC=4C:57:CA:XX:XX:XX, Until=2017-04-08T21:42:47.584+03:00}

Отчеты платного доступа

По результатам работы платежного механизма формируются соответствующие отчеты платного доступа.