Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 

Регламент
Документация
Часто задаваемые вопросы (FAQ)
Решения типовых вопросов
Форум поддержки
Библиотека разработчика

Посмотрите демо-ролики и убедитесь в том, что "Twilight CMS" очень удобна в управлении, понятна и проста.

Бесплатно скачайте "Twilight.Basic", установите на своем компьютере и изучите систему более детально.

Если вам нужно установить "Twilight CMS" на существующий сайт или разработать новый - обращайтесь в отдел интеграции.

 

Ваше имя
Ваш Email
Вопрос
Twilight.basic
  • Узнайте больше
  • Сравните версии
  • Twilight.selection
  • Узнайте больше
  • Сравните версии
  • Twilight.evolution
  • Узнайте больше
  • Сравните версии
  •  
    Главная // Библиотека разработчика // Справочники // Макроподстановки //

    Payment


    Назначение

    Обработка результатов платежей, передаваемых внешней платежной системой в виде GET/POST запроса.

    Ключи

    secretkey Строка, состоит из пар ключ=значение разделенных запятыми. Проверяется GET/POST параметр с именем "ключ" на совпадение со "значением". Если совпадает - макрос выполняет все операции, если нет - только логирует полученные данные (если задано логирование), но никаких изменений в базе не будет. Если в случае некорректного или пустого секретного ключа вообще ничего делать не нужно  - эту проверку лучше реализовать через ключ condition. Если ключ не задан - проверка не выполняется.
    logtable Строка, содержит имя таблицы, куда сохраняются все данные, поступившие из внешней системы. Если параметр не задан - логирование выключено. Какие именно поля приходят нужно смотреть в документации по конкретной платежной системе, т.к. CMS логирует все поступающие параметры.
    table Строка, имя таблицы в которой производятся действия над данными. Если ключ не задан - ничего не делается. Также см. описание ключа secretkey, который может блокировать работу с данными при определенных условиях.
    filter Строка, сложный фильтр (key1=value1,key2=value2,...,keyN=valueN), полностью аналогичен фильтрам в макросе News и других. Определяет множество записей в указанной в ключе table таблице, над которыми будут производиться действия.
    action Строка, определяет производимое над выбранными строками действие. Может принимать значение update (по умолчанию) или delete. Значение update позволяет установить определенные поля в записях отобранных через filter с помощью ключа set. Значение delete удаляет запись из таблицы table целиком.
    set Строка вида field=value, при ключе action со значением update в выбранных строках поле field получит значение value.
    return Строка, возвращаемое значение. Если какая-то операция с данными в таблице успешно выполнена, то макрос вместо себя подставит в тело страницы данную строку. В любом другом случае (ошибка, ничего в базе не удовлетворило фильтру, никаких операций в базе не планировалось, неверно передан секретный ключ и т.д.) возвращается пустая строка. Если нужно вернуть что-то иное используйте комбинацию с макросом Text.

    Комментарии

    Макрос работает по следующей схеме:

    1. С сайта осуществляется переход во внешнюю платежную систему, туда передаются параметры товара: стоимость, количество и другие данные. Это может быть просто текст "отправьте SMS с кодом таким-то на номер такой-то", может быть кнопка "платить" из корзины интернет-магазина - неважно. Все параметры в большинство платежных систем обычно передаются стандартными GET/POST запросами и никак CMS не касаются, нужно только корректно настроить все ссылки и формы в соответствии с документацией платежной системы.

    2. Внешняя система каким-то образом обрабатывает платеж и передает обратно на сайт данные. Для того чтобы их принять на сайте нужно создать отдельную страницу, в которой и будет находиться макрос $Payment[]$. Получив данные от внешней системы он может произвести проверку секретного кода, может логировать данные о проведенной попытке платежа в указанную таблицу и может произвести какие-то действия с одной или несколькими записями в таблице с данными. Все эти возможности управляются ключами макроса.

    Конкретно данный макрос используется нами в проектах по приему SMS платежей, а также по приему платежей с кредитных карт через систему Plimus.com. В принципе, он подключается к любой системе платежей с подобной логикой.

    Примеры

    I. Пример подключения к системе cmcbilling.ru (SMS платежи)

    Примечание: описанная схема подключает "SMS префикс" в терминологии данного провайдера. Также, имейте в виду, что любые формулировки и настройки провайдером могут быть изменены со временем, поэтому подключение потребует изучения документации в любом случае.

    1. Создадим страницу на сайте, которая будет обрабатывать сигналы от биллинга о проведенных платежах. Пусть её alias будет payment_done. В странице пишем макрос, который будет проверять секретный ключ (чтобы враги не могли вызвав страницу в браузере напрямую без оплаты получить услугу или товар), после чего логировать попытки оплаты в таблицу smspayments, а затем в таблице items проставит в поле status значение paid (оплачено) для записи, номер (numberid) которой был отправлен в SMS пользователем. При этом, мы будем обрабатывать только SMS, полученные на короткий номер 1700, чтобы SMSки на другие, более дешевые, к примеру, номера игнорировались.

    При построении макроса учтем, что номер, отправленный покупателем в теле SMS, передается нам биллинговой системой в поле text, а короткий номер на который была отправлена SMS - в поле short_number, так устроен конкретно этот биллинг и в других системах это может быть названо иначе. Обратно пользователю на сотовый можно отправить некоторый текст, чтобы ему было приятно.

    Итоговый вид макроса:

    $Payment[secretkey: secret_key=ABCDEF; logtable: smspayments; table: items; filter: numberid=; set: status=paid; return: "<text>Товар номер оплачен, сыпасиба</text>"; condition: =1700]$

    2. После создания нового префикса в его настройках прописывается секретный ключ (в примере ABCDEF), в поле "полный путь до принимающего скрипта" пропишем путь к странице, принимающей данные. В нашем случае это будет http://www.имясайта.ru/paymentdone/blank. Указание шаблона blank необязательно, но нужно понимать, что после получения данных от биллинга сайт отдаст эту страницу биллингу обратно, чтобы он нашел в ней сообщение для пользователя и отправил ему ответную SMSку. Нам нужно чтобы это было как можно быстрее, и чтобы ответ по размеру был наименьшим, для чего мы и используем шаблон без оформления blank (проверьте чтобы он был в вашей папке Templates).

    Все, можно тестировать настройки, должно работать.

    II. Пример подключения к системе plimus.com (платежи чеками, paypal, wire transfer, кредитные карты и т.д.)

    Система Plimus работает примерно по тому же принципу. В случае если вы торгуете не через встроенный в них магазин, а с внешнего сайта, в ней настраивается некоторый интерфейс оплаты, куда можно передать идентификатор товара и ряд параметров (цену, количество и так далее). Настройки очень широки и гибки, поэтому без чтения документации не обойтись. После проверки кредитной карты Plimus может вернуть на ваш сайт набор данных, содержащий результат транзакции и другую информацию. Соответственно, нам нужно:

    1. Создать страницу на сайте для приема результата платежа. Мы создадим страницу с alias paymentdone и на ней разместим макрос с такой же как в примере выше логикой:

    $Payment[secretkey: transactionType=CHARGE; logtable: payments; table: items; filter: numberid=; set: state=paid]$

    В данном случае, в качестве секретного ключа мы используем поле transactionType, в котором будет лежать результат обработки платежа. В случае, если результат будет не CHARGE (деньги успешно заплачены), то мы получим запись в таблице payments, но никаких данных в базе модифицировано не будет, иначе будет прописано значение paid в поле status записи, numberid которой будет равен переданному в платежную систему нами же параметру good_id.

    Примечание: alias страницы paymentdone в данном случае не является публичным, но его можно подобрать или украсть. Если мы хотим установить защиту от людей, которые захотят обратиться к URL напрямую, мы можем передать в биллинг еще один дополнительный секретный параметр и проверять его в ключе secretkey. Тогда проверку статуса оплаты можно сделать через condition, логируя только успешные статусы в одном макросе, и все остальные в другом без обработки товарных записей. Варианты практически безграничны, можно комбинировать и другие макросы (использовать RegistrationConfirm для перемещения записей из таблицы в таблицу, например).

    2. Если мы хотим передавать какие-то свои параметры, например номер товара в нашей внутренней системе счисления, в настройках контракта в Plimus нужно на закладке "Дополнительные поля" определить одно или несколько полей. Например, создайте поле good_id типа hidden, поставьте галочки "активное" и "необходимое". Там же делается секретное поле для защиты (см. п.1).

    3. В настройках контракта есть ссылка специального вида (типа https://www.plimus.com/jsp/buynow.jsp?contractId=NNNNNN), которая ведет на страницу оплаты. Нам нужно дописать к ней параметр good_id и передать в нем нужную нам информацию. Этот параметр пройдет насквозь процедуру проверки оплаты и вернется к нам на странице обработки результатов платежа, чтобы мы могли что-то сделать с товаром с указанным номером в базе данных (см. п.1: в макросе мы используем этот параметр для фильтрации данных в таблице). Итоговая ссылка будет выглядеть как https://www.plimus.com/jsp/buynow.jsp?contractId=NNNNNN&good_id=MMMMM.

    Там же в настройке "URL мгновенного оповещения" пропишите http://www.имясайта.ру/paymentdone и наш сайт готов принимать платежи по кредиткам.

    « к списку макроподстановок

    версия для печати

     
    © 2003-17 Страта Технологии (создание сайтов, разработка cms), Twilight CMS in english.
    Наш адрес: Москва, пр. Маршала Жукова д.51
    Тел.: (495) 222-6436, E-mail: , карта сайта, условия использования информации о CMS
    Звоните через Skype:  

    Реклама: