[PayAndSee] - Версия 2.0
[PayAndSee] — реализует закрытый контент на MODX Revolution. Создание контента и тарифов, клиентов и подписок на контент, подписка на контент через оплату любым методом [miniShop2], а так же через в админку сайта.

Особенности:
Подписка возможна на любой ресурс, товар, тикет и тд.
Демо: PayAndSee
Доки: Документация PayAndSee
Обзор: Обзор компонента PayAndSee от OpenModx
[Установка]
Для работы вам нужен MODX не ниже 2.3 и PHP не ниже 5.4.
— Установите pdoTools — это библиотека для быстрой работы с БД и оформлением, необходима для многих компонентов
— Установите miniShop2 — это магазин на основе которого реализован функционал заказов и оплаты
— Установите Theme.Bootstrap — это тема оформления Twitter Bootstrap для MODX, под неё заточены стандартные чанки
— Установите PayAndSee
[Обновление]
Компонент полностью переписан,ни о каком обновлении со старой версии не может быть и речи.
У кого стоит предыдущая версия, деинсталлируем и устанавливаем/ настраиваем новую.
[Основное]
Основная панель управления находятся в отдельном разделе сайта, доступном через меню.
Содержит следующие вкладки:
— [Контент]
Вкладка, на которой собран контент. Доступна сортировка по статусу контента и поиск.

Для создании контента необходимо указать ресурс к которому он будет привязан. Тарифы и подписки контента будут доступны после его сохранения.
— [Тарифы]
Вкладка, на которой собраны тарифы контента. Доступна сортировка по контенту, сроку действия тарифа и поиск.

Для создании тарифа необходимо указать стоимость, контент к которому он будет привязан и срок подписки.
— [Клиенты]
Вкладка, на которой собраны клиенты. Доступна сортировка по статусу и поиск.

Для создании клиента необходимо выбрать пользователя сайта, либо указать почту. В случае если пользователя с данной почтой не существует он будет автоматически создан.
— [Подписки]
Вкладка, на которой собраны подписки. Доступна сортировка по клиенту, контенту, статусу и поиск.

Для создании подписки необходимо выбрать контент и пользователя сайта. Указать дату начала и окончания подписки.
Доступен для редактирования контент, клиент, статус подписки. Можно скорректировать срок подписки.
— [Статусы]
Вкладка, на которой собраны статусы. Доступна сортировка по классу.

Для создании статусы необходимо задать название и выбрать класс. Указать флаг активности и разрешения.
Дефолтные статусы:
* новый — задается при создании
* активен — характеризует активность
* неактивен — характеризует неактивность
Возможно создание статусов для реализации своей логики работы компонента.
Наличие разрешающих статусов у вышеперечисленных сущностей разрешает, в противном случае запрещает доступ к контенту.
— [Оповещения]
Вкладка, на которой собраны оповещения. Доступна сортировка по классу и поиск.

Оповещение срабатывает в момент смены статуса сущности.
Для создании оповещения необходимо указать класс и статус. Задать почту, тему и тело сообщения.
Для каждой сущности определены методы getClientEmails и getManagerEmails
Результат набивается в переменные:
* $client_email — почта клиента
* $manager_email — почта менеджера
Таким образом вы можете просто указать $client_email|join и для сущности клиент это будет почта клиента, для сущности контент это будет почта всех клиентов с активной подпиской на данный контент и тп.
[Настройки]
Настройки PayAndSee расположены в Системные настройки > PayAndSee
— [Основные]
Содержит основные настройки:
* working_templates — активные шаблоны. Список id шаблонов через запятую, для которых нужно активировать функционал.
* front_css — файл с css для подключения на фронте.
* front_js — файл с javascript для подключения на фронте.
* client_groups — группы регистрации клиентов, через запятую.
* email_manager — почтовые адреса менеджеров, через запятую.
— [Заказ]
Содержит настройки необходимые для заказа:
* order_handler_class — имя класса, который реализует логику оформления заказа.
* order_delivery_id — идентификатор способа доставки [miniShop2], который используется при оформлении заказа.
* order_resource_id — идентификатор страницы заказа, на которой происходит оформление заказа.
[Службы]
Покупка и оформление заказа реализовано своим классом, в конечном счете заказ будет
сформирован и его можно будет увидеть в интерфейсе заказов [miniShop2]

— [Заказ]
Процессом оформления заказа занимается специальный класс PasOrderHandler, который реализует интерфейс PasOrderInterface.
Конечно, вы можете подключить собственный класс для заказа и указать его в системной настройке order_handler_class
— [Корзина]
Не реализован.
— [Доставка]
Никак не используется, нужен только для задания обязательный полей заказа и наименования доставки в заказе.
— [Оплата]
Стандартный [miniShop2]
Пример оформления и покупки можно увидеть тут pas.vgrish.ru/kupit.html?content=1
[События]
Актуальный список доступен в документации docs.modx.pro/components/payandsee/development/events
[Доступ]
Доступ определяется наличием разрешающих статусов у [контент], [клиента], [подписки]
Подписка также имеет дату начала/окончания действия что тоже учитывается при определении доступа.
Для проверки доступа добавлены два модификатора:
* pas_content_access — проверка доступа к контенту. Синоним pascaccess
* pas_resource_access — проверка доступа к ресурсу. Синоним pasraccess
1 параметр — значение по дефолту
2 параметр — идентификатор контента / ресурса. По умолчанию текущий ресурс.
3 параметр — идентификатор клиента. По умолчанию текущий клиент.
[Примеры]
— Закрыть свободный доступ для поля content
— Закрыть свободный доступ для поля content и вывести форму покупки платного контента
— Проверить наличие доступа у текущего клиента к ресурсу 15 и записать в переменную
[Демо сайт]
Доступен демо сайт pas.vgrish.ru
Логин и пароль для входа в test
[Цена]
[PayAndSee] теперь стоит 1490 рублей. Старые покупатели получают новую версию бесплатно.
Компонент в магазине modstore.pro/packages/ecommerce/payandsee
P.S. Всем спасибо за внимание!)

Особенности:
- работа только с новым miniShop2 (version =>2.4.0-beta2)
- сниппет для вывода контента pas.content
- сниппет оформления заказа pas.order
- сниппет вывода оформленного заказа pas.get.order
- сниппет вывода подписок pas.subscription
Подписка возможна на любой ресурс, товар, тикет и тд.
Демо: PayAndSee
Доки: Документация PayAndSee
Обзор: Обзор компонента PayAndSee от OpenModx
[Установка]
Для работы вам нужен MODX не ниже 2.3 и PHP не ниже 5.4.
— Установите pdoTools — это библиотека для быстрой работы с БД и оформлением, необходима для многих компонентов
— Установите miniShop2 — это магазин на основе которого реализован функционал заказов и оплаты
— Установите Theme.Bootstrap — это тема оформления Twitter Bootstrap для MODX, под неё заточены стандартные чанки
— Установите PayAndSee
[Обновление]
Компонент полностью переписан,ни о каком обновлении со старой версии не может быть и речи.
У кого стоит предыдущая версия, деинсталлируем и устанавливаем/ настраиваем новую.
[Основное]
Основная панель управления находятся в отдельном разделе сайта, доступном через меню.
Содержит следующие вкладки:
— [Контент]
Вкладка, на которой собран контент. Доступна сортировка по статусу контента и поиск.

Для создании контента необходимо указать ресурс к которому он будет привязан. Тарифы и подписки контента будут доступны после его сохранения.
— [Тарифы]
Вкладка, на которой собраны тарифы контента. Доступна сортировка по контенту, сроку действия тарифа и поиск.

Для создании тарифа необходимо указать стоимость, контент к которому он будет привязан и срок подписки.
— [Клиенты]
Вкладка, на которой собраны клиенты. Доступна сортировка по статусу и поиск.

Для создании клиента необходимо выбрать пользователя сайта, либо указать почту. В случае если пользователя с данной почтой не существует он будет автоматически создан.
— [Подписки]
Вкладка, на которой собраны подписки. Доступна сортировка по клиенту, контенту, статусу и поиск.

Для создании подписки необходимо выбрать контент и пользователя сайта. Указать дату начала и окончания подписки.
Доступен для редактирования контент, клиент, статус подписки. Можно скорректировать срок подписки.
— [Статусы]
Вкладка, на которой собраны статусы. Доступна сортировка по классу.

Для создании статусы необходимо задать название и выбрать класс. Указать флаг активности и разрешения.
Дефолтные статусы:
* новый — задается при создании
* активен — характеризует активность
* неактивен — характеризует неактивность
Возможно создание статусов для реализации своей логики работы компонента.
Наличие разрешающих статусов у вышеперечисленных сущностей разрешает, в противном случае запрещает доступ к контенту.
— [Оповещения]
Вкладка, на которой собраны оповещения. Доступна сортировка по классу и поиск.

Оповещение срабатывает в момент смены статуса сущности.
Для создании оповещения необходимо указать класс и статус. Задать почту, тему и тело сообщения.
Для каждой сущности определены методы getClientEmails и getManagerEmails
Результат набивается в переменные:
* $client_email — почта клиента
* $manager_email — почта менеджера
Таким образом вы можете просто указать $client_email|join и для сущности клиент это будет почта клиента, для сущности контент это будет почта всех клиентов с активной подпиской на данный контент и тп.
[Настройки]
Настройки PayAndSee расположены в Системные настройки > PayAndSee
— [Основные]
Содержит основные настройки:
* working_templates — активные шаблоны. Список id шаблонов через запятую, для которых нужно активировать функционал.
* front_css — файл с css для подключения на фронте.
* front_js — файл с javascript для подключения на фронте.
* client_groups — группы регистрации клиентов, через запятую.
* email_manager — почтовые адреса менеджеров, через запятую.
— [Заказ]
Содержит настройки необходимые для заказа:
* order_handler_class — имя класса, который реализует логику оформления заказа.
* order_delivery_id — идентификатор способа доставки [miniShop2], который используется при оформлении заказа.
* order_resource_id — идентификатор страницы заказа, на которой происходит оформление заказа.
[Службы]
Покупка и оформление заказа реализовано своим классом, в конечном счете заказ будет
сформирован и его можно будет увидеть в интерфейсе заказов [miniShop2]

— [Заказ]
Процессом оформления заказа занимается специальный класс PasOrderHandler, который реализует интерфейс PasOrderInterface.
Конечно, вы можете подключить собственный класс для заказа и указать его в системной настройке order_handler_class
— [Корзина]
Не реализован.
— [Доставка]
Никак не используется, нужен только для задания обязательный полей заказа и наименования доставки в заказе.
— [Оплата]
Стандартный [miniShop2]
Пример оформления и покупки можно увидеть тут pas.vgrish.ru/kupit.html?content=1
[События]
Актуальный список доступен в документации docs.modx.pro/components/payandsee/development/events
[Доступ]
Доступ определяется наличием разрешающих статусов у [контент], [клиента], [подписки]
Подписка также имеет дату начала/окончания действия что тоже учитывается при определении доступа.
Для проверки доступа добавлены два модификатора:
* pas_content_access — проверка доступа к контенту. Синоним pascaccess
* pas_resource_access — проверка доступа к ресурсу. Синоним pasraccess
1 параметр — значение по дефолту
2 параметр — идентификатор контента / ресурса. По умолчанию текущий ресурс.
3 параметр — идентификатор клиента. По умолчанию текущий клиент.
[Примеры]
— Закрыть свободный доступ для поля content
{$content|pasraccess}— Закрыть свободный доступ для поля content и вывести форму покупки платного контента
{$content|pasraccess:('pas.content'|snippet:['resource'=>$id])}— Проверить наличие доступа у текущего клиента к ресурсу 15 и записать в переменную
{set $access = 1|pasraccess:0:15}
{* далее можно использовать для проверки доступа переменную $access *}
{if $access}
Есть доступ
{else}
Нет доступа
{/if}[Демо сайт]
Доступен демо сайт pas.vgrish.ru
Логин и пароль для входа в test
[Цена]
[PayAndSee] теперь стоит 1490 рублей. Старые покупатели получают новую версию бесплатно.
Компонент в магазине modstore.pro/packages/ecommerce/payandsee
P.S. Всем спасибо за внимание!)
Комментарии: 55
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А вопрос: можно с помощью этого пакета реализовать платную подписку на услуги, и потом проверять их по всему сайту? В прошлой версии я делал это костылями, подписывал на скрытый ресурс, и потом отдельным сниппетом проверял по базе подписан на него пользователь или нет.
Пример такой реализации: подписка на Премиум-аккаунт, открывающий различные возможности на сайте.
Пример для VIP клиента имеющего доступ ко всему контенту сразу github.com/vgrish/Docs-1/blob/master/ru/01_%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B/22_PayAndSee/03_%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/03_%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D1%8F.md
реализуется просто отдельным статусом
Спасибо, будем осторожно обновляться…
Сейчас добавлю это в описание.
:)
Спасибо!
Необходимо выполнение следующих условий
— новая версия minishop2
— шаблонизатор fenon
Далее установить новую версию компонента.
Клиенты могут быть созданы в главной панели, надо просто нажать на кнопку обновления. А вот контент и подписки потребуется набросать скрипт для переноса из старых таблиц в новые.
Так же нужно будет изменить чанки вывода и покупки подписок.
Вероятно проще сделать бекап сайта и все это спокойно выполнить на нем…
Спасибо за понимание!
В описании ни чего не написано, что все глобально переделывать надо.
И поддержки нет (
Опять установил версию 2.0.0, перезагрузил права доступа — все вернулось на круги своя. Удалил версию 2.0.6, снова попытался обновить, повторно два пакета висят. Опасаюсь чего-то испортить. Это нормально, так и должно быть?
это необычное никак не связано в пакетом. Обновляйте, чистите кеш…
Понятно что удалять ничего не надо.
нет конечно, это не нормально. Но я на данное поведение повлиять не могу.
Возможно кто-то прояснит ситуацию…
Попробуй деинсталируй все версии пакета и затем установи последнюю.
мне нужно ограничить список разделов в форме создания тикета
т.е. вывести только те на которые есть активная подписка у пользователя
пытаюсь это сделать указав в параметрах снипета ticketForm &where предварительно загрузив модель &loadModels=`payandsee`, не могу сообразить какие поля подцеплять
ведь надо получить ид пользователя и выдернуть по его ид статус подписки
а потом в select отобрать только с активным статусом
подскажи в правильном ли направлении думаю
заранее Спасибо!
уже второй день изучаю эти запросы голова кругом
поэтому забыл уточнить, что у меня 2 одинаковых раздела
в один подписываются в другой пишут
вот поэтому то я попросил помощи в том как можно организовать выборку и возможно ли это используя сниппет ticketForm
вот как-то так я думаю
Спасибо за терпение :)
Пишите в ТП с указанием доступов к админке сайта и ссылкой на форму вызова.
Так будет проще и понятнее.
Спасибо!
— таблица контента
— таблица клиента
— таблица подписок
— статусы ко всем этим сущностям
все это определяет наличие доступа.
вроде даже понятна логика того что мне нужно но как реализовать не знаю, знаний не хватает
с джойнами то я бы еще справился но написать сниппет мне пока не под силу
в любом случае Спасибо дружище!
От себя хочу сказать Modstore и OpenModx за обзор — большое спасибо!!!
На сайте хотим сделать 3 варианта оплаты — за 1 урок, за конкретный месяц (в нем несколько уроков) и за годовой доступ ко всем урокам. 9 учебных месяцев в курсе. Как лучше логику отстроить.
Пока сообразил проверку через вложенные .
Подскажите как вывести форму оплаты за годовой доступ?
Пока сообразил так:
то есть вывод формы оплаты сделал так:
{getContentId($parrentyear, 10, $cache)|pasraccess:('pas.content'|snippet:['resource'=>$parrentyear])}
что значит параметр 10 сам не понял, взял из документации расширения, вроде сработало. Где лежит код функции getContentId?
Прикол в том что в 1 уроке все норм работает, а в следующих (входящем в месяц 1) не работает.
Контент и тарифы зада на годовой курс (он корневой ресурс), на месяцы (они включают в себя уроки) и на сами уроки.
И как можно повесить на свою кнопку?
написать кастомный
В описании расширения для примеров не указаны какие параметры задавать надо — где их посмотреть я не нашел. Можете документацию дополнить описанием параметров?
— вот тут второй параметр из документации — почему 10?
— я так понимаю этим способом можно присвоить доступ? $uid как подхватывается? Из примера не понял как он присваивается переменной, вроде задана пустая? Это id клиента (скорее всего) или пользователя?
— это мы добавляем по ключу я так понимаю доступ?
$cache — что за переменная? Надо ее как-то задавать?
$PayAndSee->getStore('access', $key)) — это я так понимаю можно считать доступ к ресурсу для любого ресурса?
Извините, что вопросов много задаю :) PayAndSee супер вещь, но многое не понятно.
написать какой то обработчик на нажание своей кнопки.
Олег не нужно бомбить тут вопросами, посмотри демо, почитай описание
docs.modx.pro/search?query=%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B5%D0%BD+%D0%B4%D0%BB%D1%8F+%D0%BF%D0%BE%D1%82%D0%BE%D0%BC%D0%BA%D0%BE%D0%B2
подумай…
Так или иначе ответы на твои вопросы есть.
Спасибо!
Вопрос сюда пишу потому что в других ветках вижу люди также делятся наработками.
Мне пришлось делать треххуровневый доступ с разными тарифами оплаты.
Несколько бессонных дней и ночей уже делаю сайт, многое не сразу стало понятно, но разобрался вроде. Ваше приложение очень крутое, сильно выручило!
Или еще как вариант используя плейсхолдеры ClientConfig. Для этого надо добавить возможность прописывать их в поле цены — сейчас плейсхолдер ClientConfig туда не вставишь :).
2.0.12-beta (23.02.2018)
— Add «checkStat» [PayAndSee]
— Change «Order.submit» [js]
Что за изменения в последних версиях?
Не нужно ичего додумывать, если у вас какие либо сложности стоит писать в ТП.
Какие либо новшества будут документированы после обкатки…
Спасибо.
modx 2.8.3
Minishop 2.8.3
PAS 2.0.24-beta
Поднимал на modhost разные тестовые сайты с PAS 2.0.24 и разными modx (2.6.5, 2.7.0, 2.8.0) — ни на одном хосте PAS не работает.
Например, конструкция в шаблоне:
дает всегда один результат — Есть доступ.
Дополнение работает, никто в ТП не писал о каких либо проблемах с пакетом.
Если у вас какие либо сложности пишите в ТП — решим.
В лог modx пишется следующее:
[2024-04-22 10:18:14] (ERROR @ /var/www/site.ru/core/xpdo/xpdo.class.php: 644) Could not load class: PasValidator from payandsee.pasvalidator.
Можете написать в ТГ в профиле.