{{indexmenu_n>40}} ====== Платный контент (Paywall) ====== В игре можно продавать доступ к отдельному уровню, подсказке или любому куску текста задания. Схема такая: автор заводит **товар**, ставит в задание кнопку оплаты, а показ платного содержимого закрывает [[authors_main:task_editor:advanced:edit_templates|шаблоном]], который проверяет, оплачен товар или нет. > **Перед началом:** платёжная система включается администратором домена, а не автором игры. Если на домене оплата не настроена, кнопка оплаты просто не появится на странице. Тестировать пейволл при этом можно и без настроенной оплаты — см. раздел «Как это протестировать». ===== 1. Завести товар ===== В редакторе игры, во вкладке **«Полезные ссылки»**, откройте **«Товары / Платные доступы (Paywall)»**. На экране товаров задаются четыре поля: * **Ключ** — идентификатор товара, по которому вы будете обращаться к нему из задания. Только английские буквы, цифры и подчёркивание: ключ с дефисом, пробелом или кириллицей сохранится, но кнопка оплаты его не найдёт. **Ключ нельзя изменить после создания** — можно только удалить товар и завести заново. * **Название** — уходит в платёжную систему как описание счёта. Игроку на кнопке не показывается. * **Цена** — должна быть больше нуля. * **Валюта** — UAH, USD, EUR, GBP, CAD, PLN, CZK. {{ :authors_main:game_management:game_products.png?800 |Товары игры: ключ, название, цена и валюта}} Товаров в игре может быть сколько угодно: например, отдельный товар на каждый платный уровень. Писать шаблон с нуля не обязательно: в колонке **«Шаблон»** кнопка **«Копировать»** кладёт в буфер готовый кусок с ключом этого товара, а под таблицей лежит тот же пример с пояснением. ===== 2. Поставить кнопку оплаты ===== В том месте задания, где должна появиться кнопка, напишите: %pay_button ключ_товара% Движок заменит это на кнопку **«Оплатить {цена} {валюта}»**. По нажатию открывается отдельное окно платёжной системы. Что важно знать про кнопку: * Если товар уже куплен, кнопка **исчезает сама** — её не нужно прятать вручную. * Если ключ написан с ошибкой и такого товара нет, вместо кнопки появится серая надпись «Товар не найден» с этим ключом. Удобно для самопроверки. * Кнопку можно ставить в тексте задания, в подсказках, в бонусах и в тексте финиша — везде, где работают подстановки. В том числе **внутри шаблона**: шаблоны вычисляются раньше, поэтому кнопка спокойно живёт в ветке ''{%= no}''. ===== 3. Закрыть платное содержимое ===== Сама по себе кнопка ничего не прячет — платный текст надо закрыть шаблоном ''product_КЛЮЧ''. У него три значения: * **''yes''** — товар куплен, доступ есть. * **''pending''** — оплата начата, но банк ещё не подтвердил её. Встречается редко, но ветку лучше предусмотреть. * **''no''** — не оплачено. {% match product_level_5 }:{ {%= yes}:{ Спасибо за покупку! Код для прохождения уровня: ЗООПАРК %} {%= pending}:{ Ваш платёж обрабатывается банком. Подождите немного и обновите страницу. %} {%= no}:{ Этот уровень содержит платный контент. %pay_button level_5% %} %} Вот как это выглядит у игрока, пока не оплачено: текста нет, вместо него кнопка. {{ :authors_main:game_management:paywall_closed.png?800 |Ветка «не оплачено»: текст закрыт шаблоном, вместо него кнопка оплаты}} Шаблон вычисляется на сервере, поэтому неоплаченное содержимое не попадает в исходный код страницы — подсмотреть его нельзя. > Если в имени товара опечатка, шаблон не ругается, а просто всегда возвращает ''no''. Проверяйте ключ по кнопке: она в этом случае покажет «Товар не найден». ===== Что происходит после оплаты ===== Когда игрок завершает оплату, окно платёжной системы закрывается само и страница игры перезагружается — платное содержимое появляется без каких-либо действий игрока. {{ :authors_main:game_management:paywall_open.png?800 |Тот же уровень после оплаты: сработала ветка «yes», и кнопка оплаты пропала сама}} Доступ выдаётся **на команду**, а не на игрока: заплатил один — открылось всем. В одиночных играх это, естественно, тот же самый игрок. Список покупок по игре виден автору на экране покупок игры — там же видны и незавершённые попытки оплаты. Оттуда же доступ можно выдать вручную: это удобно, если игрок рассчитался с вами другим способом, или если оплата зависла и её нужно закрыть руками. {{ :authors_main:game_management:game_purchases.png?800 |Покупки по игре: кто и что купил, что ждёт оплаты и выдача доступа вручную}} ===== Как это протестировать ===== Заходите в игру через **«Тестировать Игру»**. Для тестовой команды движок сам подменяет платёжную систему на тестовую, независимо от того, что настроено на домене и настроено ли вообще. Кнопка оплаты работает как настоящая, но вместо банка открывается форма с полем для кода — нужный код написан прямо в этой форме. Реальные деньги не списываются. {{ :authors_main:game_management:payment_test_form.png |Тестовая оплата: для тестовой команды движок подменяет платёжную систему, код написан в самой форме}} Так можно проверить всю цепочку целиком: и ветку ''no'' с кнопкой, и переход к ветке ''yes'' после «оплаты». {{ :authors_main:game_management:payment_chain.gif |Оплата целиком: кнопка, форма, код подтверждения — и уровень открывается веткой yes}} ===== Не путать с платным входом в игру ===== Здесь описана продажа контента **внутри** игры. Плата за **участие** в игре — это отдельный механизм: цена задаётся в настройках игры, а команды после оплаты принимаются в игру автоматически. См. [[authors_main:game_management:game_settings|Настройки игры]]. [[https://qeng.org/game.php?jump_to&gid=3493&task_id=81984|Пример в игре]]