[PayAndSee] - Версия 2.0


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

Особенности:
  • работа только с новым miniShop2 (version =>2.4.0-beta2)
  • сниппет для вывода контента pas.content
  • сниппет оформления заказа pas.order
  • сниппет вывода оформленного заказа pas.get.order
  • сниппет вывода подписок pas.subscription
Все сниппеты компонента работают при помощи [pdoTools] и рассчитывают на использование [Fenom] в чанках.
Подписка возможна на любой ресурс, товар, тикет и тд.

Демо: PayAndSee
Доки: Документация PayAndSee


[Установка]
Для работы вам нужен 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. Всем спасибо за внимание!)
30 августа 2017, 11:09    Володя   G+  
2    240 +6

Комментарии (25)

  1. Владимир 30 августа 2017, 11:52 # 0
    Ааааааа!!! Бегу обновлять, как раз ждал. Спасибо.
    1. Володя 30 августа 2017, 11:59 # 0
      Пожалуйста!)
    2. Василий Столейков 30 августа 2017, 11:54 # 0
      Здорово, спасибо!
      А вопрос: можно с помощью этого пакета реализовать платную подписку на услуги, и потом проверять их по всему сайту? В прошлой версии я делал это костылями, подписывал на скрытый ресурс, и потом отдельным сниппетом проверял по базе подписан на него пользователь или нет.
      Пример такой реализации: подписка на Премиум-аккаунт, открывающий различные возможности на сайте.
      1. Володя 30 августа 2017, 12:02 # 0
        а почему нет? Можно вполне, реализаций может быть несколько.
        Пример для 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
        реализуется просто отдельным статусом
        1. Василий Столейков 30 августа 2017, 12:09 # 0
          Супер, да, пример проверки доступа даже в последнем примере описан.
          Спасибо, будем осторожно обновляться…
          1. Володя 30 августа 2017, 12:13 # 0
            Спасибо, будем осторожно обновляться…
            Не, не… обновление не прокатит! Только с нуля.
            Сейчас добавлю это в описание.
            1. Василий Столейков 30 августа 2017, 12:16 # 0
              Ок, я так и думал. Просто вводит в заблуждение эта фраза:
              Старые покупатели обновляются бесплатно.
              :)
              1. Володя 30 августа 2017, 12:18 # +2
                уже понял, тоже поправил чтобы не вводить в заблуждение.
                Спасибо!
                1. Владимир 30 августа 2017, 12:26 # 0
                  А старый компонент еще таблицы свои не удалял, я зачистил вручную перед установкой нового (если, конечно, это не лишняя перестраховка).
                  1. Володя 30 августа 2017, 12:41 # +1
                    (если, конечно, это не лишняя перестраховка).
                    Вполне разумно если эти данные тебе не нужны
      2. Прохор 30 августа 2017, 20:43 # 0
        Здравствуйте Владимир! Есть ли какая то статейка или гайд как правильно съехать со старого компонента на новый? Пользуемся старым компонентом с 6000 подписанных юзеров. Трудозатратно ли обновится на новый?
        1. Володя 30 августа 2017, 21:30 # 0
          Добрый вечер. Нет никакого подобного гайда нет.
          Необходимо выполнение следующих условий
          — новая версия minishop2
          — шаблонизатор fenon
          Далее установить новую версию компонента.
          Клиенты могут быть созданы в главной панели, надо просто нажать на кнопку обновления. А вот контент и подписки потребуется набросать скрипт для переноса из старых таблиц в новые.
          Так же нужно будет изменить чанки вывода и покупки подписок.
          Вероятно проще сделать бекап сайта и все это спокойно выполнить на нем…
          1. Прохор 31 августа 2017, 09:11 # 0
            Если в доках будет небольшая инструкция по переезду это облегчит жизнь) Спасибо за компонент!
            1. Володя 31 августа 2017, 10:13 # 0
              Пока что мне этого не приходилось делать. А писать просто теоретически нет никакого желания. Если представится такой случай то инструкция появится.
              Спасибо за понимание!
        2. Алексей Федоров 01 сентября 2017, 15:57 # +1
          Спасибо! Удалил, установил, пошел читать доки, а то, вроде, следил за процессом в трелло, но выход новой версии стал неожиданностью)) Приятной, конечно.
          1. Володя 01 сентября 2017, 16:13 # 0
            Пожалуйста!)
          2. Сергей 03 сентября 2017, 05:44 # -1
            Мдя, знал бы не обновлял.
            В описании ни чего не написано, что все глобально переделывать надо.
            И поддержки нет (
            1. Илья Уткин 03 сентября 2017, 07:41 # 0
              То есть, по этой фразе было непонятно, что «всё глобально переделывать надо»?

              [Обновление]
              Компонент полностью переписан, ни о каком обновлении со старой версии не может быть и речи.
              У кого стоит предыдущая версия, деинсталлируем и устанавливаем/ настраиваем новую.
              1. Сергей 03 сентября 2017, 07:58 # -1
                Не прочел это пояснение и обновил. Пришлось откат делать. И вероятно нужен будет скрипт писать на перенос. В принцыпе это новое дополнение. Не помню, чтоб после обновления нужно было глобально все переписывать.
            2. Алексей Федоров 11 сентября 2017, 15:51 # 0
              Заметил, что появилась версия 2.0.6 и происходит что-то необычное) При обновлении пакет дублируется, при этом кнопка «обновить» остается активной. Думал, так и нужно, удалил не обновленный вариант, но перестала отображаться страница компонента (при переходе через меню). Выдает:
              Could not find action file at: controllers/default/index.php
              Опять установил версию 2.0.0, перезагрузил права доступа — все вернулось на круги своя. Удалил версию 2.0.6, снова попытался обновить, повторно два пакета висят. Опасаюсь чего-то испортить. Это нормально, так и должно быть?
              1. Володя 11 сентября 2017, 15:58 # +1
                Заметил, что появилась версия 2.0.6 и происходит что-то необычное)

                это необычное никак не связано в пакетом. Обновляйте, чистите кеш…
                Опасаюсь чего-то испортить.
                Понятно что удалять ничего не надо.
                Это нормально, так и должно быть?
                нет конечно, это не нормально. Но я на данное поведение повлиять не могу.
                Возможно кто-то прояснит ситуацию…
                1. Алексей Федоров 11 сентября 2017, 16:01 # 0
                  Тогда подожду пока) Кеш чистил. Из-за разницы в названии такого случиться не могло? В смысле, с указанием цены в скобках и без него?
                  1. Володя 11 сентября 2017, 16:06 # +1
                    Из-за разницы в названии такого случиться не могло? В смысле, с указанием цены в скобках и без него?
                    я не пишу нигде никаких цен… название формируется с репозитория магазина.
                    Тогда подожду пока)

                    Попробуй деинсталируй все версии пакета и затем установи последнюю.
                    1. Алексей Федоров 11 сентября 2017, 16:16 # 0
                      Туплю(( Очевидное же решение. Да, так все получилось. Пакет один в установленных, работает все отлично
                      1. Володя 11 сентября 2017, 16:33 # 0
                        Хорошо что разобрались. Спасибо!
              Вы должны авторизоваться, чтобы оставлять комментарии.