[PayAndSee] - Заплати и смотри

Хочу представить вам новый компонент [PayAndSee].
Реализует закрытые ресурсы на MODx. Создание подписки на ресурс, выбор подписки и оплата платной подписки со счета [msProfile] пользователем самостоятельно, а так же подписка пользователей в админке сайта.

Дополнение в Магазине: store.simpledream.ru/packages/ecommerce/payandsee.html

Подключение вкладки с подпиской
В системных настройках выбрать payandsee_enable_for_templates. В ней можно перечислить id шаблонов через запятую, для которых будет активирована вкладка с подпиской.

Создание подписки
На странице ресурса появится новая вкладка Закрытый контент — тут можно создать и настроить подписку к ресурсу(ам).

Параметры подписки и настройки доступа
— заголовок подписки
— описание подписки
— цена подписки
— цена продления подписки
— период подписки
— идентификатор подписки
— показывать авторизованным
— показывать подписанным
— временно открыта
— выключена
— активна для потомков

Тут все просто и понятно, думаю нет смысла особо расписывать. Можно выставить настройку показывать авторизованным и контент будет доступен только авторизованным пользователям, ну а если стоит настройка подписанным то пользователь увидит подписку только при наличии у него активной подписки.

Страница «доступ запрещен»
Если у пользователя нет доступа то он увидит страницу доступ запрещен, id страницы нужно проставить в настройках пакета. На этой странице доступно два плейсходера:
original_id — id оригинальной страницы
subscribed_id — id подписки

Вывод подписок
В комплекте сниппет для вывода подписок — [psSubscription]. C его помощью можно вывести необходымые подписки.


Вывод подписок к оплате
В комплекте сниппет для вывода подписок пользователя — [psList]. C его помощью можно вывести подписки выбранные пользователем, но еще не оплаченные.

Тут можно удалить подписку, изменить кол-во, вообщем и целом это список подписок к оплате.

Оплата подписок
В комплекте сниппет для оплаты подписок — [psBuy]. C его помощью можно вывести профиль покупателя и совершить покупку.


Уведомления при покупке
В настройках [Minishop2] необходимо создать отдельный стутус для покупки подписок. Соответственно весь механизм уведомления при покупке родной от [Minishop2]. Средства с личного счета
[msProfile] списываются при покупке и отображаются в родном табе [msProfile].

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


Окончание срока подписки
Для перевода просроченных подписок в неактивное состояние в комплекте скрипт для cron.
При запуске выбирает просроченные подписки и ставит статус — неактивна. Так же одновременно формирует список писем пользователям и указанным менеджерам об окончании подписки.
Для рассылки писем из очереди тоже имеется скрипт для cron.

ps. Возможно что то еще не описал… Есть вопросы и тд — спрашивайте пожалуйста.
pps. При создании пакета источником вдохновения для меня был и есть репо Василия. Спасибо тебе огромное.
Кстати все сниппеты написаны с использованием [pdoTools].

И отдельное спасибо за помощь при создании пакета и покорение ExtJs хотел бы выразить Льву Вербицкому. Спасибо тебе огромное за помощь!!!
Володя
13 декабря 2014, 13:11
modx.pro
3
5 029
+6
Поблагодарить автора Отправить деньги

Комментарии: 60

Евгений Webinmd
13 декабря 2014, 16:38
0
Чтобы пользоваться, должен быть установлен Minishop2?
    Володя
    13 декабря 2014, 16:43
    0
    пока да… Minishop2 в целом для оплаты и лога покупок. Мне кажется это вполне разумным, там множество на данный момент способов оплаты и удобная админка. Он бесплатен! Почему этими удобствами не пользоваться?
    Вообщем пока да, должен быть установлен Minishop2.
      Евгений Webinmd
      13 декабря 2014, 16:48
      0
      Тогда последний вопрос, ориентировочная стоимость пакета? и когда его можно будет пощупать?
        Володя
        13 декабря 2014, 16:51
        0
        <=1 000. В начале недели.
    Григорий Коленько
    14 декабря 2014, 02:09
    0
    Вопрос, а с помощью этого пакета возможно реализовать следующее:
    Нужно сделать, чтобы пользователь в определенном разделе, при наличии подписки мог создавать ресурсы.
      Володя
      14 декабря 2014, 08:51
      0
      делайте чтоб он вообще мог что то создавать, а потом банальная проверка на подписку. Есть — разрешаете создать, нет — не разрешаете создать…
      Алексей Федоров
      23 февраля 2017, 15:25
      0
      Удалось создать какое-то рабоче решение проверки на подписку? Или вопрос неактуален за давностью лет?
        Володя
        23 февраля 2017, 16:27
        +1
        можно таким образом gist.github.com/vgrish/97db0f633e9bbe390f367ea148dfa0b3
          Алексей Федоров
          23 февраля 2017, 17:19
          0
          Спасибо) К сожалению, не совсем понял суть того, что именно делает сниппет. Применение как модификатора, что именно покажет? То есть при вызове конструкции:
          [[*pagetitle:psCheck=`resource=15,6&active=1`]]
          будет проверена активность подписки на ресурсы 15 и 6. При выполнении условий будет выведено значение pagetitle. Я правильно понял? Кажется, я запутался)
      Володя
      15 декабря 2014, 15:29
      0
      Дополнение в Магазине: store.simpledream.ru/packages/ecommerce/payandsee.html
        Сергей Скат
        15 декабря 2014, 18:24
        0
        чувак, не представляешь как это вовремя, как рас скоро будет проект в котором нужны платные разделы, уже иду покупать, есть пожелание чтобы можно было работать и без minishop2, но пока не обязательно, спасибо, правда большое спасибо!
        Wassi Wassinen
        16 декабря 2014, 12:29
        0
        Владимир, а можно создавать подписки не ограниченные по времени? Один раз подписался и пользуешься всегда, если авторизован.
          Володя
          16 декабря 2014, 12:39
          +1
          Возможно неявно описал, но настройка авторизованным так и работает.
          То есть если у подписки выставлен параметр авторизованным — ДА то покупать ничего не нужно, подписка доступна всем авторизованным пользователям в течении неограниченного времени.
          Ps. Пока так, была мысль еще сделать проверку по группам пользователей…
            Wassi Wassinen
            16 декабря 2014, 18:11
            0
            Понял, спасибо за ответ. В данном случае, конечно, интересна подписка по группам. Есть «все пользователи», а есть «доступ к подписке навсегда» и «доступ на такой-то срок».
              Володя
              17 декабря 2014, 07:42
              0
              опиши подробнее если можешь…
          Володя
          16 декабря 2014, 16:10
          0
          Добавил общую панель редактирования/ добавления подписок и пользователей.
          выглядит так



            Klike
            02 сентября 2015, 12:18
            0
            Можно ли сделать подписку не по количеству дней, а по количеству ресурсов? К примеру, человек подписывается на 10 публикаций, и с выходом очередной платной публикации, соответственно, кол-во оплаченных уменьшается.
            И ещё вытекающий вопрос – есть ли способ оповещения о скором окончании подписки, например, когда осталось 3 публикации, 1 публикация?
            Есть ещё один момент, но об этом наверное уже после покупки дополнения.
            Рустам С
            02 июля 2015, 05:26
            0
            а как сделать проверку, что если пользователь оплатил подписку то делать редирект на страницу оплаченную
            и вывести активные подписки у конкретного пользователя
              Alexander V
              02 июля 2015, 07:25
              +1
              Вы имеете в виду, чтобы пользователь не покупал дважды одну подписку? Если да, то меня тоже этот вопрос интересует.
              p.s. неплохо бы сделать демо на modhost, т.к. дополнение довольно сложное и хотелось бы посмотреть не по картинкам.
                Рустам С
                02 июля 2015, 13:52
                0
                и это тоже)
                но мне просто надо по id пользователя вывести его подписки активные сейчас.
                и если он имеет расширенную подписку, делать редирект на закрытый ресурс
              Надир
              20 декабря 2015, 20:23
              0
              При клике на кнопку «добавить в подписки» ничего не происходит, а в консоли показывает такую ошибку (см. скрин). Подскажите, пожалуйста, что эта ошибка может означать и как ее устранить. Спасибо.



                varanika
                26 марта 2017, 19:53
                1
                0
                Добрый день. Сначала настроила вывод обычных товаров и их добавление в корзину. Затем, когда корзина обновляется при помощи msMiniCartDynamic заменила вызов на psSubscription.
                При нажатии появляется зеленый попур о том, что все ок.
                В js msMiniCartDynamic поменяла cart/add на pssubscription/add.
                Но
                [[!msMiniCart?]]
                (даже стандартный, без внутреннего
                [[!msMiniCartDynamic?]]
                Не пополняется новой строкой о товаре в корзине. Ошибок в консоли нет. Может есть боевой пример где-нибудь на демо сайте, чтобы глянуть?
                  Володя
                  26 марта 2017, 21:28
                  0
                  Добрый вечер.
                  Не пополняется новой строкой о товаре в корзине.
                  потому как подписка не является товаром.
                    varanika
                    27 марта 2017, 10:40
                    0
                    Мг, а как Вы подсвечиваете, что пора переходить к оплате? Появляющейся ссылкой может где?
                      varanika
                      27 марта 2017, 17:11
                      0
                      А пошаговой документации точно нигде нет? Застопорилась. Указала ресурсу, что он закрытый, страница 403 в настройках указана (опять же, 403 страница везде одна? в системных настройках, в минишопе и payandsee? но ведь на ней в трех этих местах показывать желательно разные данные, ну да ладно...), а страница в режиме инкогнито на месте… С минишоп и офис сложностей не возникло, там все по шагам описано. А вот на подписках застряла. Даже сниппеты не нашла с параметрами docs.modx.pro/components/payandsee, чтобы понимать алгоритмы…
                        Jury
                        01 июня 2017, 13:07
                        0
                        Володя привет, перестало работать продление подписки!
                      Александр
                      05 апреля 2017, 15:16
                      0
                      Добрый день, а вот не могу понять, У пользователей есть личный кабинет через Office, они там регистрируются, а как связать msprofile + подписки на страницы.
                        Алексей Шумаев
                        28 июля 2017, 12:50
                        0
                        Сейчас нет компонента в магазине.
                        По ссылке: modstore.pro/packages/ecommerce/payandsee — главная открывается.
                        Он убран из магазина или это ошибка?
                          Володя
                          28 июля 2017, 12:53
                          +2
                          Убран, морально устарел.
                          Будет выпущена новая версия к концу августа.
                            Алексей Шумаев
                            28 июля 2017, 12:56
                            0
                            Спасибо. Буду ждать.
                              Владимир
                              29 июля 2017, 10:54
                              0
                              Вольдь. а подскажи пожалуйста, обратная совместимость у нового PayAndSee со старым будет?
                              А то, вот, буквально недавно решил реанимировать один проектик с платными подписками и как раз PayAndSee на черновик установил (успел), он еще был в репозитарии.
                              Т.е. вопрос, в том, делать на старом или лучше подождать нового?
                                Володя
                                29 июля 2017, 11:18
                                +1
                                Вольдь. а подскажи пожалуйста, обратная совместимость у нового PayAndSee со старым будет?

                                сомневаюсь…
                                Т.е. вопрос, в том, делать на старом или лучше подождать нового?
                                подождать нового.
                                  Владимир
                                  29 июля 2017, 11:36
                                  0
                                  Ага, понял, спасибо!
                                    Владимир
                                    26 августа 2017, 12:10
                                    0
                                    Доброго дня!
                                    Ненавязчиво поинтересуюсь о новой версии PayAndSee
                                      Володя
                                      26 августа 2017, 13:31
                                      0
                                      Привет.
                                      Зачатки документации можно увидеть тут docs.modx.pro/components/payandsee/
                                      Функционал пока не обкатан, если есть проект где можно внедрить и опробовать данный функционал напиши в личку.
                                      Спасибо!
                                        Владимир
                                        26 августа 2017, 15:05
                                        0
                                        Спасибо, сейчас попробую срочно из состояния черновика проект развернуть.
                                          Володя
                                          26 августа 2017, 15:58
                                          0
                                          Да спешка ни к чему.
                                          Как соберешься так и пиши)
                                            Володя
                                            28 августа 2017, 13:39
                                            +1
                                            Доступен демо сайт pas.vgrish.ru/
                                            там можно авторизоваться и пощелкать что к чему
                                              Владимир
                                              28 августа 2017, 14:23
                                              0
                                              Спасибо, посмотрел. Подписка гибкая.
                                              Подписка возможна только на ресурс, товар или тикет, так же? Т.е. если сайт «классически» мультиязычный (контексты) то ресурсы на разных языках в разных контекстах могут быть подписками независимо друг от друга или один может быть подпиской, а второй в открытом доступе. А если сайт сделать на Локализаторе, отдельные поля закрывать подпиской можно? (вот я размечтался-то)
                                                Владимир
                                                28 августа 2017, 14:35
                                                0
                                                PS вижу в шаблоне модификатор
                                                {$_modx->resource.content|pasraccess:('pas.content'|snippet:['resource'=>''])}
                                                Любое поле так можно модификатором закрыть подпиской?
                                                  Володя
                                                  28 августа 2017, 15:00
                                                  +1
                                                  Подписка возможна только на ресурс, товар или тикет, так же?
                                                  на любой ресурс. В демо есть подписка для товара, тикета, обычного ресурса.
                                                  отдельные поля закрывать подпиской можно?
                                                  да можно, docs.modx.pro/components/payandsee/quick-start#Доступ
                                                  Прохор
                                                  01 сентября 2017, 13:59
                                                  0
                                                  Доброго
                              Прохор
                              01 сентября 2017, 14:02
                              0
                              Пока до обновления компонента руки не дошли… есть вопросик.
                              Как можно на старой версии дать бесплатный месяц подписки к контенту вновь зарегистрировавшимся??
                                Володя
                                01 сентября 2017, 15:13
                                0
                                к какому конкретно контенту? всему? то это только если плагин на сохранение пользователя, смотрим что пользователь новый, получаем массив контента и проходимся по нему добавляя подписки.
                                Кароч гемор.
                                  Прохор
                                  01 сентября 2017, 15:30
                                  0
                                  Суть такая… пользователь регистрируется через [[!officeAuth? &groups=`Users`]] и имеется одна подписка на скрытые ресурсы вот и к ней нужно дать допуск на месяц. Вот хотелось бы понять че где дописывать. Думал что где-то в таблицу нужно дописать startdate и stopdate.
                                    Володя
                                    01 сентября 2017, 15:45
                                    1
                                    0
                                    есть метод SubscriptionAppend
                                    $payandsee = $modx->getService('payandsee');
                                    $payandsee->SubscriptionAppend($resource_id, $user_id, $period = 30, 1)
                                      Прохор
                                      01 сентября 2017, 15:57
                                      0
                                      Благодарю! Попробую
                                Прохор
                                04 сентября 2017, 13:52
                                0
                                Не знаю на сколько адекватен код для плагина но он работает!
                                Добавляя бесплатную подписку на скрытые ресурсы на месяц
                                <?php
                                $resource_id = 25;
                                $user_id = $modx->user->get('id');
                                switch ($modx->event->name) {  
                                    case 'OnUserFormSave':   // Событие после регистрации пользователя
                                        // Здесь мы добавляем подписку на месяц
                                        $payandsee = $modx->getService('payandsee');
                                        $payandsee->SubscriptionAppend($resource_id, $user_id, $period = 30, 1);
                                        break;
                                }
                                  Володя
                                  04 сентября 2017, 14:16
                                  +1
                                  Если код плагина один в один с оригиналом то у тебя будет добавляться подписка каждый раз при сохранении пользователя. И надо добавить проверку на нового.
                                    Прохор
                                    04 сентября 2017, 15:37
                                    0
                                    Точна! Об этом не подумал… Посмотрел как реализовано в плагине officeAuth и сделал так же.
                                    <?php
                                    switch ($modx->event->name) {
                                    // Срабатывает после того как пользователь сохранен.
                                             case 'OnUserSave':
                                        if (!empty($user) && !empty($mode) && $mode == 'new') {
                                            if (!$user->get('remote_key')) {
                                                $user->set('remote_key', $user->get('id'));
                                                $user->save();
                                                // вытаскиваем id юзера
                                                $user_id = $user->get('id');
                                                $resource_id = 25;
                                                
                                                // Здесь мы добавляем подписку на месяц
                                                $payandsee = $modx->getService('payandsee');
                                                $payandsee->SubscriptionAppend($resource_id, $user_id, $period = 30, 1);
                                            }
                                        }
                                        break;
                                    }
                                      Прохор
                                      28 сентября 2017, 12:07
                                      0
                                      День добрый Владимир! Пытаясь добавить подписку на месяц при регистрации где то кривого кода написал и в таблице
                                      modx_paysee_resource_user_list
                                      создалось много дублей. О чем Вы писали выше. Можно ли одним SQL запросом удалить дубли? И появился ли какой то гайд о перезде со старого компонента на новый?

                                        Володя
                                        28 сентября 2017, 12:11
                                        0
                                        Добрый день.
                                        Можно ли одним SQL запросом удалить дубли?
                                        написать какой то код, у меня нет готового решения. Если дублей немного — почистите руками.
                                        И появился ли какой то гайд о перезде со старого компонента на новый?
                                        нет, не появился.
                                          Прохор
                                          28 сентября 2017, 13:17
                                          0
                                          Если кому то понадобится такой запрос вроде срабатывает.
                                          ALTER IGNORE TABLE modx_paysee_resource_user_list ADD UNIQUE KEY(user_id);
                                            Прохор
                                            07 декабря 2017, 10:10
                                            0
                                            День добрый Володя! возможно ли в Вашем компоненте давать доступ к скрытым ресурсам всем залогиненым пользователям но не имеющим подписку (на 10 мин например) потом скрывать. Думаю по идее это не сложно как то реализовать через сессию?
                                      Сергей
                                      05 июня 2019, 15:36
                                      0
                                      У данного модуля есть автоматическое продление? что бы деньги автоматом снимались?
                                        Володя
                                        05 июня 2019, 19:32
                                        0
                                        Нет. Автоматического списания денежных средств в счет продления подписки нет.
                                        Можно настроить оповещение на окончание подписки и оповестить пользователя о необходимости продлить подписку.
                                        Артем
                                        09 июля 2020, 19:38
                                        0
                                        поможет ли данный модуль в реализации следующей задачи: при покупке товара открыть доступ к контенту на другой текстовой странице этого сайта?
                                          Никита
                                          13 декабря 2021, 10:50
                                          0
                                          Добрый день! @Володя, подскажите, пожалуйста. Я в системных настройках minishop2 (по ключу ms2_order_user_groups) поставил при покупке регистрацию пользователей в группы 3, 4. Прописывать названия групп полностью тоже пробовал (users и member) в моем случае.
                                          Но при оформлении подписки через PayAndSee не происходит добавления в группы. Не подскажите, как исправить? Хочу добавлять пользователей в нужные группы, в которых установлю их права.
                                            Никита
                                            13 декабря 2021, 11:12
                                            0
                                            Нашел как сделать. Извините, что невнимательно изучил.
                                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                            60