Управление подписками и разовыми покупками

Возможно, вам придется принять меры по управлению подписками или разовыми покупками в рамках повседневной деятельности. Например, вашей службе поддержки клиентов может потребоваться произвести полный или частичный возврат средств пользователям, или в некоторых случаях вам может потребоваться отозвать права. Вы можете управлять заказами из Play Console или, если вы хотите управлять ими из своей собственной системы, вы можете сделать это с помощью API разработчика Google Play .

Отменить подписку

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

Самый простой способ дать пользователям возможность добровольно отменить подписку — это установить глубокую ссылку на PlayStore , где они смогут просматривать свою подписку и управлять ею.

Вам также может потребоваться инициировать отмену из вашего бэкэнда. Метод purchases.subscriptions.cancel позволяет отменить покупку подписки. Например, вы можете использовать этот метод, чтобы отключить устаревшую службу. Отмена подписки не приводит к возврату средств, и пользователь продолжает иметь доступ до конца текущего расчетного периода. Отмена подписки с помощью этого метода не позволяет пользователю восстановить подписку в Play Store, но при необходимости пользователи все равно могут зарегистрироваться снова через ваше приложение.

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

Отсрочка платежа

Используйте subscriptions.defer , чтобы продлить срок действия подписки. В течение периода отсрочки пользователь остается подписанным на ваш контент, но за дополнительное время не взимается плата. Когда вы откладываете выставление счетов за подписку, информация о состоянии обновляется соответствующим образом, и вы видите ее в поле expiryTime в информации о статусе покупки:

  • Для активных повторяющихся подписок отложенное выставление счетов продлевает следующую дату продления.
  • Для планов с предоплатой отложенное выставление счетов продлевает срок действия.

Вот несколько примеров использования отложенного платежа:

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

Выставление счетов может быть отложено на срок от одного дня до года за каждый вызов API. Чтобы еще больше отложить окончание срока действия, вызовите API еще раз до наступления новой даты истечения срока действия.

Выполнение этого действия вызывает уведомление разработчика SUBSCRIPTION_DEFERRED в режиме реального времени. См. раздел «Отсрочка выставления счетов для подписчика» в разделе «О подписках» , чтобы узнать, как обрабатывать эти события.

Пример:

  1. Стриминговый сервис FitnessGoals хочет провести акцию, поощряющую регулярные физические упражнения в феврале.

  2. Они решили предложить дополнительный месяц обслуживания любому подписчику, который тренируется с FitnessGoals не менее 10 раз в течение февраля.

  3. Они отслеживают результаты испытания и 1 марта вызывают API- subscriptions.defer для каждой активной покупки подписки, принадлежащей пользователям, которые выполнили задание в феврале.

  4. Эти пользователи получают дополнительный месяц бесплатных видео с регулярными упражнениями, а также рассказывают всем своим друзьям, как FitnessGoals помогает им оставаться здоровыми!

Возврат средств и аннулирование

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

Полный возврат заказа по идентификатору заказа

С помощью API orders.refund вы можете осуществить полный возврат средств за любой заказ в течение трех лет с момента покупки. Метод orders.refund получает параметр revoke, указывающий, следует ли отозвать доступ в дополнение к возврату средств.

Если вы отмените отзыв с требованием возврата денег за покупку подписки, подписка немедленно прекращается и активируется уведомление разработчика в режиме реального времени SUBSCRIPTION_REVOKED . Прочтите раздел «Отзывы» руководства по управлению жизненным циклом подписки, чтобы узнать, как обрабатывать эти события.

Пример:

  1. Чтобы отпраздновать начало нового чемпионата мира, киберспортивное приложение Football-Not-Soccer решает разыграть бесплатные виртуальные футболки для всех пользователей, которые купят новую форму команды в первые 24 часа.

  2. Football-Not-Soccer использует API orders.refund без передачи параметра отзыва, чтобы вернуть победителям деньги за покупку футболки.

Отменить и вернуть подписку с помощью токена покупки

В некоторых случаях вам может потребоваться отозвать доступ к подписке пользователя и вернуть деньги. Play Billing предлагает методы отзыва, включая полный возврат средств и пропорциональный возврат средств через API subscriptionsv2.revoke . С помощью этой конечной точки вы можете указать revocationContext , чтобы определить, как рассчитывается возврат средств.

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

Пример:

  • Покупка с помощью токена покупки 1a2b3c4d5e6f7g8h9i0j
  • Приложение с именем пакета com.your.app
  • Намерение произвести пропорциональное возмещение

HTTP POST-запрос:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Тело запроса:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Полный возврат средств

Если вам необходимо прекратить подписку и вернуть полную сумму текущего расчетного периода, оформите полный возврат средств. Используйте функцию purchases.subscriptionsv2.revoke и установите "fullRefund": {} в качестве типа возврата.

Пример:

  1. У Марии есть автоматически продлеваемая 30-дневная подписка на ежемесячный план потоковой передачи SuperMovies. Мария столкнулась с техническими проблемами, которые не позволяют ей получить доступ к контенту. На третий день расчетного цикла она обращается в службу поддержки клиентов и заявляет, что так и не получила доступа к подписке.

  2. Служба поддержки клиентов находит сведения о покупке подписки Марии в своей системе и инициирует звонок на purchases.subscriptionsv2.revoke с просьбой о полном возврате средств.

  3. Служба поддержки клиентов сообщает Марии, что ей следует вернуть 100 % стоимости подписки, и она больше не подписана на этот план.

Пропорциональное возмещение

Если вам необходимо прекратить подписку и частично возместить оставшееся время, выполните пропорциональное возмещение. Используйте функцию purchases.subscriptionsv2.revoke и установите "proratedRefund": {} в качестве типа возврата.

Пример:

  1. У Марии есть автоматически продлеваемая 30-дневная подписка на ежемесячный план потоковой передачи SuperMovies. Она уже некоторое время с удовольствием пользуется этой услугой. Мария связывается со службой поддержки клиентов на 15-й день своего платежного цикла и сообщает, что она уезжает за границу и больше не сможет пользоваться этой услугой, начиная со следующего дня.

  2. Служба поддержки клиентов находит сведения о покупке подписки Марии в своей системе и вызывает звонок на purchases.subscriptionsv2.revoke с запросом пропорционального возмещения.

  3. Служба поддержки клиентов сообщает Марии, что ей должно быть возвращено около 50% стоимости подписки, и что доступ к услуге немедленно прекращен.