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

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

Подписки поддерживаются на всех платформах:

  • desktop web;
  • mobile web;
  • android;
  • ios.

Как выглядит

Подписки в играх интегрированы в интерфейс Одноклассников. Оформление подписки в игре реализовано в виде диалогового окна, в котором пользователю показывается подписка, её описание, стоимость и остальная информация. В этом же окне пользователь может либо отказаться от подписки, либо подписаться на услугу в игре.

Подписка на desktop web

Подписка на мобильных платформах

В случае, если пользователь успешно подписался на услугу в игре, то в разделе с игровыми подписками (WEB, MOB) будет показываться список активных подписок пользователя для текущей игры:

Возможности

Для продвижения услуги подписки в своей игре мы настоятельно рекомендуем использовать триальный период. По нашим данным, если пользователю сразу предлагать заплатить, не дав ему попробовать услугу бесплатно, то бОльшее число игроков откажутся от этой возможности.

Для подписок реализована гибкая система конфигурации, которая позволяет:

  • управлять триальным периодом подписки - это период, в течение которого подписка будет для пользователя бесплатной. Длительность триального периода можно указывать в днях, часах и минутах.
  • управлять периодом подписки - это периодичность, с которой пользователю будет предоставляться услуга, а он, в свою очередь, будет с такой же периодичностью оплачивать подписку. Длительность периода подписки можно указать в днях, часах и минутах.
  • указывать уникальное название, описание и изображение подписки - для того, чтобы пользователь понимал, что за услугу он получает при подписке, для каждой подписки можно указать своё название, описание, а также изображение, которое будет показываться при оформлении подписки.
  • указывать стоимость подписки - для каждой подписки можно указать стоимость за один период подписки. Стоимость указывается в ОКах.

Как работает

Для того, чтобы подписка заработала в вашей игре, вам надо сделать следующее:

  • зарегистрировать новую подписку в игре;
  • реализовать функционал по подписке пользователей на услугу, используя наше API.

Добавление подписки в игру

Чтобы у вас появилась возможность предлагать пользователям подписку на какую-либо услугу в игре, требуется обратиться по почтовому адресу api-support@ok.ru, предоставив нам следующие данные:

ПараметрОписаниеЕдиница измерения
Триальный периодДлительность бесплатного периода подписки. Минимальная длительность триального периода - 1 деньДни, часы, минуты
ДлительностьПериодичность оплаты подписки. Минимальная длительность подписки - 1 неделяДни, часы, минуты
СтоимостьЦена подписки за один периодОКи
Иконка подпискиСсылка на иконку подписки в формате 256x256 
ProductIdСтроковый идентификатор подписки в Одноклассниках 
НазваниеНазвание подписки (1-3 слова). В названии должна отражаться суть подписки 
ОписаниеКраткое описание подписки (1-2 предложения). В описании должно указываться, на какую услугу подписывается пользователь, что он покупает 

Например, подписка может выглядить так:

  • триальный период - 3 дня;
  • длительность - 1 день;
  • стоимость - 50 ОКов;
  • productId - apples;
  • название - “Три яблока в день”;
  • описание - “Получайте три бонусных яблока каждый день!”.

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

Вызов окна подписки

Чтобы предложить пользователю активировать подписку, можно вызвать специальное окно, в котором он может ознакомиться с подпиской и активировать её.

Для этого реализован FAPI-метод ui.showPaymentSubscription.

Оплата подписки

Если пользователь активировал подписку, и триальный срок завершился, то каждый период подписки с него будет сниматься количество ОКов, равное стоимости подписки.

Все начисления должны отображаться в статистике по оплатам приложения.

В случае, если у пользователя закончились ОКи, то подписка не прекращается; в данном случае подписка оплачивается напрямую с привязанной в профиле карты пользователя.

Отмена подписки

Пользователь в любой момент времени может отменить подписку в игре.

В случае отмены подписки, оплата подписки со стороны пользователя в пользу игры прекращается

Мониторинг статуса подписки

Контроль подписок реализован аналогично системе платежных коллбэков. При любом действии (новая подписка в игре, отмена подписки, оплата подписки) на callback url приложения приходит соответствующий GET-запрос с идентифицирующими подписку параметрами.

В ответ на запрос наш сервис ожидает ответ, аналогичный ответу при проведении простого платежа в игре: callbacks.payment

Запрос должен быть провалидирован, и в случае, если он является корректным с точки зрения игры, callback-сервис должен дать ответ с кодом отклика 200 в формате XML.

В зависимости от действия по подписке приложение должно реагировать соответствующим образом:

  • новая подписка (первый платеж по подписке) - пользователю начисляется бонус / услуга, он может быть оповещен о том, что подписка в игре успешо совершена;
  • отмена подписки - пользователь может быть оповещен, что у него закончилась / приостановлена подписка в игре, бонусы и услуги по подписке ему недоступны;
  • оплата подписки - пользователю должны начисляться бонусы / услуги, предоставляемые по подписке.

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

Формат времени завершения подписки: DD-MM-YYYY hh:mm:ss.

Запрос при новой подписке / оплате подписки

В качестве временной зоны во всех событиях используется московское время (UTC+3:00)

Запрос при оплате подписки и при новой подписке пользователя одинаков. На callback url делается запрос следующего вида:

https://callback.url/
?transaction_id=transactionId
&sig=270c83248ac45232be85bbbe3be7613b
&uid=123456789012
&amount=10
&method=callbacks.payment
&transaction_time=2017-11-08+00:21:10
&product_code=productCode
&extra_attributes={“subscriptionEndDate”:”20-11-2018 13:07:04”,”action”:”reg_subscription”}
&application_key=CBAKMLELABABABABE
&call_id=1510089670220

Запрос при триальной подписке

В случае, если у пользователя активен триальный период подписки, то на callback url приходит запрос с другим значением параметра extra_attributes, но без id транзакции:

https://callback.url/
?sig=270c83248ac45232be85bbbe3be7613b
&uid=123456789012
&amount=0
&method=callbacks.payment
&transaction_time=2017-11-08+00:21:10
&product_code=productCode
&extra_attributes={“subscriptionEndDate”:”20-11-2018 13:07:04”,”action”: “trial_subscription”}
&application_key=CBAKMLELABABABABE
&call_id=1510089670220

Обратите внимание на значение параметра amount. В случае триальной подписки оно равно 0.

Запрос при отмене подписки

Если пользователь отменил подписку, то игре на callback url приходит запрос, в параметре extra_attributes которого указан факт отписки от услуги:

https://callback.url/
?sig=270c83248ac45232be85bbbe3be7613b
&uid=123456789012
&amount=0
&method=callbacks.payment
&transaction_time=2017-11-08+00:21:10
&product_code=productCode
&extra_attributes={“subscriptionEndDate”:”20-11-2018 13:07:04”,”action”: “unsubscribe”}
&application_key=CBAKMLELABABABABE
&call_id=1510089670220

Обратите внимание на значение параметра amount. В случае отписки оно равно 0.