Возможность использования платного доступа возможна при помощи интеграции с платежной системой Яндекс.Касса. Для организации данного механизма взимания абонентской платы необходима настройка системы 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 позволяет создавать неограниченное число  тарифов. 

В разделе "Действие" можно отредактировать тариф. Описание тарифа состоит из набора обязательных полей (свойств тарифа), а также списка тарифных элементов.
Обязательные поля настройки тарифа:
  • название тарифа - произвольное слово, которое затем будет отображаться в отчетности;
  • параметры "Число сессий в день доступа без оплаты" и "Число сессий в день доступа без оплаты" позволяют задать желаемое число (рекомендуемые значения: 1 и 3); 
  • страница выбора тарифа позволяет задать созданную на предыдущем шаге в конструкторе страницу.
  • параметр "Длительность бесплатной сессии, сек." определяет время, в течение которого абонент может произвести оплату после того, как выберет один из тарифных элементов;
  • параметр "Действие по исчерпанию лимита числа бесплатных сессий" определяет, что произойдет, когда абонент достигнет установленного ограничения. Возможны два варианта: показ формы (страницы с запретом), либо переход по ссылке (адрес сайта должен находиться в Walled Garden хотспота);
  • параметр "Отключен" позволяет отключить работу по тарифу (прием оплаты будет невозможен);
  • параметр "Показывать рекламу даже тем, кто оплатил" отключает безусловный пропуск устройств абонентов при МАС-авторизации с целью демонстрации даже платным абонентам хотспота и страницы с рекламным материалом;
  • параметр "Платежный шлюз" имеет только одно допустимое значение: Yandex.Kassa.

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

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

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

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

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

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

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


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

  • открытие полного доступа в сеть Интернет на хотспоте на время, соответствующее выбранном тарифному элементу или без лимита по времени;
  • перенаправление сессии абонента путем отправки формы методом POST на сайт платежной системы (Яндекс.Касса).

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

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

  • номер заказа - последние 4 цифры номера телефона абонента и 4 случайных цифры;
  • номер покупателя - МАС-адрес абонентского устройства;
  • сумма соответствует выбранному абоненту тарифному элементу.

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

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

Переход по любой из ссылок дает возможность абоненту повторить оплату еще раз. В случае, если абонент произвел успешную оплату до завершения периода, указанного в параметре "Длительность бесплатной сессии, сек.", то по завершении оплаты сессия абонента не прерывается. В противном случае, система 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}

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

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


  • No labels