ua:authors_main:game_management:payments

Платний контент (Paywall)

У грі можна продавати доступ до окремого рівня, підказки або будь-якого шматка тексту завдання. Схема така: автор заводить товар, ставить у завдання кнопку оплати, а показ платного вмісту закриває шаблоном, який перевіряє, оплачено товар чи ні.

Перед початком: платіжна система вмикається адміністратором домену, а не автором гри. Якщо на домені оплата не налаштована, кнопка оплати просто не з'явиться на сторінці. Тестувати пейвол при цьому можна й без налаштованої оплати — див. розділ «Як це протестувати».

У редакторі гри відкрийте «Товари / Платні доступи (Paywall)». На екрані товарів задаються чотири поля:

  • Ключ — ідентифікатор товару, за яким ви звертатиметеся до нього із завдання. Тільки англійські літери, цифри та підкреслення: ключ із дефісом, пробілом або кирилицею збережеться, але кнопка оплати його не знайде. Ключ не можна змінити після створення — можна лише видалити товар і завести заново.
  • Назва — іде в платіжну систему як опис рахунку. Гравцеві на кнопці не показується.
  • Ціна — має бути більшою за нуль.
  • Валюта — UAH, USD, EUR, GBP, CAD, PLN, CZK.

Товарів у грі може бути скільки завгодно: наприклад, окремий товар на кожен платний рівень.

У тому місці завдання, де має з'явитися кнопка, напишіть:

%pay_button ключ_товару%

Движок замінить це на кнопку «Сплатити {ціна} {валюта}». Після натискання відкривається окреме вікно платіжної системи.

Що важливо знати про кнопку:

  • Якщо товар уже куплено, кнопка зникає сама — її не потрібно ховати вручну.
  • Якщо ключ написано з помилкою і такого товару немає, замість кнопки з'явиться сірий напис «Товар не знайдено» з цим ключем. Зручно для самоперевірки.
  • Кнопку можна ставити в тексті завдання, у підказках, у бонусах та в тексті фінішу — усюди, де працюють підстановки. Зокрема всередині шаблону: шаблони обчислюються раніше, тому кнопка спокійно живе в гілці {%= no}.

Сама по собі кнопка нічого не ховає — платний текст треба закрити шаблоном product_КЛЮЧ. У нього три значення:

  • yes — товар куплено, доступ є.
  • pending — оплату розпочато, але банк ще не підтвердив її. Трапляється рідко, але гілку краще передбачити.
  • no — не оплачено.
{% match product_level_5 }:{
  {%= yes}:{
Дякуємо за покупку! Код для проходження рівня: ЗООПАРК
  %}
  {%= pending}:{
Ваш платіж обробляється банком. Зачекайте трохи та оновіть сторінку.
  %}
  {%= no}:{
Цей рівень містить платний контент.
%pay_button level_5%
  %}
%}

Шаблон обчислюється на сервері, тому неоплачений вміст не потрапляє у вихідний код сторінки — підглянути його не можна.

Якщо в імені товару описка, шаблон не сварить, а просто завжди повертає no. Перевіряйте ключ за кнопкою: вона в цьому випадку покаже «Товар не знайдено».

Коли гравець завершує оплату, вікно платіжної системи закривається саме і сторінка гри перезавантажується — платний вміст з'являється без жодних дій гравця.

Доступ видається на команду, а не на гравця: заплатив один — відкрилося всім. В одиночних іграх це, звісно, той самий гравець.

Список покупок по грі бачить автор на екрані покупок гри — там же видно й незавершені спроби оплати. Звідти ж доступ можна видати вручну: це зручно, якщо гравець розрахувався з вами іншим способом або якщо оплата зависла і її треба закрити руками.

Заходьте у гру через «Тестувати гру». Для тестової команди движок сам підміняє платіжну систему на тестову, незалежно від того, що налаштовано на домені й чи налаштовано взагалі. Кнопка оплати працює як справжня, але замість банку відкривається форма з полем для коду — потрібний код написаний просто в цій формі. Реальні гроші не списуються.

Так можна перевірити весь ланцюжок цілком: і гілку no з кнопкою, і перехід до гілки yes після «оплати».

Тут описано продаж контенту всередині гри. Плата за участь у грі — це окремий механізм: ціна задається в налаштуваннях гри, а команди після оплати приймаються у гру автоматично. Див. Налаштування гри.

Приклад у грі

  • ua/authors_main/game_management/payments.txt
  • Last modified: 2026/08/14 16:50
  • (external edit)