Руководство по реализации авто-возобновляемых подписок в iOS-приложениях
Всем привет! Меня зовут Денис, я разрабатываю Apphud – сервис по аналитике авто-возобновляемых подписок в iOS-приложениях.
В данной статье я расскажу как настроить, реализовать и валидировать авто-возобновляемые подписки в iOS 12 и iOS 13. Бонусом расскажу о тонких моментах и подводных камнях, которые не все разработчики учитывают.
Настройка подписок в App Store Connect
Если у вас уже есть Bundle ID и созданное приложение, то вы можете пропустить эти шаги. Если же вы создаете приложение впервые, то сделайте следующее:
На портале разработчиков Apple вы должны создать явный Bundle ID (App ID). Открыв страницу, которая называется Certificates, Identifiers & Profiles, перейдите во вкладку Identifiers. В июне 2019 года Apple, наконец, обновила верстку портала в соответствии с ASC (сокращенно от App Store Connect).

Новый дизайн портала разработчиков Apple в 2019 году

Явный Bundle ID принято указывать в доменном стиле ( com.apphud.subscriptionstest ). В разделе Capabilities вы заметите, что галочка рядом с In App Purchases уже стоит. Создав Bundle ID (App ID), перейдите в App Store Connect.
Тестовые пользователи (Sandbox users)
Для тестирования будущих покупок вам нужно будет создать тестового пользователя. Для этого перейдите в ASC во вкладку Пользователи и Доступ, далее в Тестировщики Sandbox.

Форма создания Sandbox пользователя
При создании тестировщика можно указать любые несуществующие данные, главное, не забыть потом email и пароль!
О том, как тестировать покупки с тестовыми учетными данными я расскажу ближе к концу статьи.
Еще один важный шаг — это настройка контрактов и банковских данных в разделе “Соглашения, налоги и банковские операции”. Если у вас не будет настроено соглашение для платных приложений, то вы не сможете тестировать авто-возобновляемые подписки!
После этого можно создать новое приложение в App Store Connect. Укажите уникальное имя и выберите в качестве ID пакета ваш Bundle ID.

ID пакета — это ваш Bundle ID
Сразу после создания приложения перейдите во вкладку Функции.
Если у вас уже было создано приложение, то можете продолжить читать отсюда.
Процесс создания авто-возобновляемой подписки состоит из нескольких этапов:
1. Создание идентификатора подписки и создание группы подписок. Группа подписок представляет собой коллекцию подписок с разными периодами и ценами, но которые открывают один и тот же функционал в приложении. Так же в группе подписок можно лишь однажды активировать бесплатный пробный период и лишь одна из подписок может быть активной. Если вы хотите, чтобы в вашем приложении было одновременно две разные подписки, то вам нужно будет создать две группы подписок.
2. Заполнение данных подписки: длительность, отображаемое название в App Store (не путать с просто названием) и описание. В случае добавления первой подписки в группу необходимо будет указать отображаемое название группы подписок. Не забудьте почаще сохранять изменения, ASC может зависнуть в любой момент и перестать отвечать на запросы.

Экран подписки
3. Заполнение цены подписки. Тут есть два этапа: создание цены и специальных предложений. Укажите реальную цену в любой валюте, она автоматически пересчитается для всех других стран. Вводные предложения: тут вы можете предложить пользователям бесплатный пробный период либо скидки по предоплате. Промопредложения появились в App Store совсем недавно в 2019 году: они позволяют предлагать особые скидки пользователям, которые отменили подписку и которых вы хотите вернуть.
Генерация секретного общего ключа (shared secret key)
На странице со списком всех ваших созданных подписок вы увидите кнопку Общий ключ для приложения. Это специальная строка, которая нужна для валидирования чека в iOS-приложении. Валидировать чек нам нужно будет для определения статуса подписки.
Общий ключ может быть двух видов: уникальный ключ для вашего приложения или единый ключ для вашего аккаунта. Важно: ни в коем случае не пересоздавайте ключ, если у вас уже есть приложение в App Store, иначе пользователи не смогут получить валидировать чек и ваше приложение перестанет работать как положено.

В этом примере создано три группы подписок и 3 годовые подписки
Скопируйте ID всех ваших подписок и общий ключ, это пригодится в дальнейшем в коде.
Программная часть
Приступим к практической части. Что нужно для того, чтобы сделать полноценный менеджер покупок? Должно быть реализовано как минимум следующее:
- Оформление покупок
- Проверка статуса подписки
- Обновление чека
- Восстановление транзакций (не путать с обновлением чека!)
Оформление покупок
Весь процесс оформления покупки можно разделить на 2 этапа: получение продуктов (класс SKProduct ) и инициализация процесса покупки (класс SKPayment ). В первую очередь мы должны указать делегат протокола SKPaymentTransactionObserver .
// Starts products loading and sets transaction observer delegate @objc func startWith(arrayOfIds : Set!, sharedSecret : String) < SKPaymentQueue.default().add(self) self.sharedSecret = sharedSecret self.productIds = arrayOfIds loadProducts() >private func loadProducts() < let request = SKProductsRequest.init(productIdentifiers: productIds) request.delegate = self request.start() >public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) < products = response.products DispatchQueue.main.async < NotificationCenter.default.post(name: IAP_PRODUCTS_DID_LOAD_NOTIFICATION, object: nil) >> func request(_ request: SKRequest, didFailWithError error: Error)
Уведомление IAP_PRODUCTS_DID_LOAD_NOTIFICATION используется, чтобы обновить UI в приложении.
Далее пишем метод для инициализации покупки:
func purchaseProduct(product : SKProduct, success: @escaping SuccessBlock, failure: @escaping FailureBlock) < guard SKPaymentQueue.canMakePayments() else < return >guard SKPaymentQueue.default().transactions.last?.transactionState != .purchasing else < return >self.successBlock = success self.failureBlock = failure let payment = SKPayment(product: product) SKPaymentQueue.default().add(payment) >
Делегат SKPaymentTransactionObserver выглядит так:
extension IAPManager: SKPaymentTransactionObserver < public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) < for transaction in transactions < switch (transaction.transactionState) < case .purchased: SKPaymentQueue.default().finishTransaction(transaction) notifyIsPurchased(transaction: transaction) break case .failed: SKPaymentQueue.default().finishTransaction(transaction) print("purchase error : \(transaction.error?.localizedDescription ?? "")") self.failureBlock?(transaction.error) cleanUp() break case .restored: SKPaymentQueue.default().finishTransaction(transaction) notifyIsPurchased(transaction: transaction) break case .deferred, .purchasing: break default: break >> > private func notifyIsPurchased(transaction: SKPaymentTransaction) < refreshSubscriptionsStatus(callback: < self.successBlock?() self.cleanUp() >) < (error) in // couldn't verify receipt self.failureBlock?(error) self.cleanUp() >> func cleanUp() < self.successBlock = nil self.failureBlock = nil >>
При успешном оформлении подписки вызывается метод делегата, в котором транзакция имеет состояние purchased .
Но как определить дату истечения подписки? Для этого нужно сделать отдельный запрос в Apple.
Проверка статуса подписки
Чек валидируется с помощью POST-запроса verifyReceipt к Apple, в качестве параметра посылаем зашифрованный чек в виде base64-закодированной строки, а в ответе нам приходит тот же чек в JSON формате. В массиве по ключу latest_receipt_info будут перечислены все транзакции от каждого периода каждой подписки, включая пробные периоды. Нам остается только спарсить ответ и достать актуальную дату истечения для каждого продукта.
На WWDC 2017 добавили возможность получать только актуальные чеки по каждой подписке с помощью ключа exclude-old-transactions в запросе verifyReceipt .
func refreshSubscriptionsStatus(callback : @escaping SuccessBlock, failure : @escaping FailureBlock) < // save blocks for further use self.refreshSubscriptionSuccessBlock = callback self.refreshSubscriptionFailureBlock = failure guard let receiptUrl = Bundle.main.appStoreReceiptURL else < refreshReceipt() // do not call block yet return >#if DEBUG let urlString = "https://sandbox.itunes.apple.com/verifyReceipt" #else let urlString = "https://buy.itunes.apple.com/verifyReceipt" #endif let receiptData = try? Data(contentsOf: receiptUrl).base64EncodedString() let requestData = ["receipt-data" : receiptData ?? "", "password" : self.sharedSecret, "exclude-old-transactions" : true] as [String : Any] var request = URLRequest(url: URL(string: urlString)!) request.httpMethod = "POST" request.setValue("Application/json", forHTTPHeaderField: "Content-Type") let httpBody = try? JSONSerialization.data(withJSONObject: requestData, options: []) request.httpBody = httpBody URLSession.shared.dataTask(with: request) < (data, response, error) in DispatchQueue.main.async < if data != nil < if let json = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments)< self.parseReceipt(json as! Dictionary) return > > else < print("error validating receipt: \(error?.localizedDescription ?? "")") >self.refreshSubscriptionFailureBlock?(error) self.cleanUpRefeshReceiptBlocks() > >.resume() >
В начале метода вы можете видеть, что идет проверка на существование локальной копии чека. Локальный чек может и не существовать, например, если приложение было установлено через iTunes. При отсутствии чека мы не можем выполнить запрос verifyReceipt . Нам нужно сперва получить актуальный локальный чек, а затем снова попытаться его валидировать. Обновление чека делается с помощью класса SKReceiptRefreshRequest :
private func refreshReceipt() < let request = SKReceiptRefreshRequest(receiptProperties: nil) request.delegate = self request.start() >func requestDidFinish(_ request: SKRequest) < // call refresh subscriptions method again with same blocks if request is SKReceiptRefreshRequest < refreshSubscriptionsStatus(callback: self.successBlock ?? <>, failure: self.failureBlock ?? ) > > func request(_ request: SKRequest, didFailWithError error: Error) < if request is SKReceiptRefreshRequest < self.refreshSubscriptionFailureBlock?(error) self.cleanUpRefeshReceiptBlocks() >print("error: \(error.localizedDescription)") >
Обновление чека реализовано в функции refreshReceipt() . Если чек успешно обновился, то вызовется метод делегата requestDidFinish(_ request : SKRequest) , которая повторно вызывает метод refreshSubscriptionsStatus .
Как реализован парсинг информации о покупках? Нам возвращается JSON объект, в котором есть вложенный массив транзакций (по ключу latest_receipt_info ). Проходимся по массиву, достаем дату истечения по ключу expires_date и сохраняем ее, если эта дата еще не наступила.
private func parseReceipt(_ json : Dictionary) < // It's the most simple way to get latest expiration date. Consider this code as for learning purposes. Do not use current code in production apps. guard let receipts_array = json["latest_receipt_info"] as? [Dictionary] else < self.refreshSubscriptionFailureBlock?(nil) self.cleanUpRefeshReceiptBlocks() return >for receipt in receipts_array < let productID = receipt["product_id"] as! String let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss VV" if let date = formatter.date(from: receipt["expires_date"] as! String) < if date >Date() < // do not save expired date to user defaults to avoid overwriting with expired date UserDefaults.standard.set(date, forKey: productID) >> > self.refreshSubscriptionSuccessBlock?() self.cleanUpRefeshReceiptBlocks() >
Я привел простейший пример, как извлечь актуальную дату истечения подписки. Тут нет обработки ошибок и, например, нет проверки на возврат покупки (добавляется cancellation date).
Чтобы определить, активна подписка или нет, достаточно сравнить текущую дату с датой из User Defaults по ключу продукта. Если же она отсутствует или меньше текущей даты, то подписка считается неактивной.
func expirationDateFor(_ identifier : String) -> Date? < return UserDefaults.standard.object(forKey: identifier) as? Date >let subscriptionDate = IAPManager.shared.expirationDateFor("YOUR_PRODUCT_ID") ?? Date() let isActive = subscriptionDate > Date()
Восстановление транзакций выполняется одной строкой SKPaymentQueue.default().restoreCompletedTransactions() . Эта функция восстанавливает все завершенные транзакции, снова вызывая метод делегата func paymentQueue(**_** queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) .
Чем отличается обновление чека от восстановления транзакций?
Оба метода помогают восстановить данные о покупках. Но в чем же их отличия? Есть замечательная таблица с видео wwdc:

Таблица различий двух способов восстановления покупок из WWDC
В большинстве случаев вам достаточно использовать SKReceiptRefreshRequest() , потому что нас интересует только получение чека для последующего вычисления даты истечения.
В случае авто-возобновляемых подписок сами транзакции нас не интересуют, поэтому достаточно использовать только обновление чека. Однако есть случаи, когда нужно использовать способ восстановления транзакций: если ваше приложение скачивает контент при покупке (Apple hosted content) или если вы до сих пор поддерживаете версии ниже iOS 7.
Тестирование покупок (Sandbox Testing)
Раньше для тестирования покупок необходимо было логаутиться из App Store в настройках вашего iPhone. Это доставляло большие неудобства (например, стиралась вся медиатека Apple Music). Однако сейчас этого делать не нужно: аккаунт песочницы теперь существует отдельно от основного аккаунта.

Процесс покупки происходит схожим образом в сравнении с реальными покупками в App Store, но есть некоторые моменты:
- Вам всегда нужно будет вводить логин-пароль через системное окно. Покупки с использованием Touch ID/Face ID до сих пор не поддерживаются.
- Если при верном вводе логина и пароля система снова и снова запрашивает логин-пароль, нажмите “Отменить”, сверните приложение, затем попробуйте снова. Выглядит как бред, но у многих срабатывает. Но иногда после второго ввода пароля процесс все же идет дальше.
- Вы никак не сможете протестировать процесс отмены подписки.
- Длительности периодов подписок значительно ниже реальных. И обновляются они не более 6 раз в день.
| Фактическая длительность | Тестовая длительность |
|---|---|
| 1 неделя | 3 минуты |
| 1 месяц | 5 минут |
| 2 месяца | 10 минут |
| 3 месяца | 15 минут |
| 6 месяцев | 30 минут |
| 1 год | 1 час |
Что нового в StoreKit в iOS 13?
Из нового – только класс SKStorefront , который дает информацию о том, в какой именно стране в App Store зарегистрирован данный пользователь. Это может быть полезно тем разработчикам, которые используют разные подписки для разных стран. Раньше все проверяли по геолокации либо по региону устройства, но это не давало точный результат. Теперь страну в App Store узнать очень просто: SKPaymentQueue.default().storefront?.countryCode . Так же добавился делегат метода, если во время процесса покупки сменилась страна в App Store. В этом случае можно самим продолжить или отменить процесс покупки.
Подводные камни при работе с подписками
- Проверка чека прямиком с устройства не рекомендуется Apple. Они несколько раз говорили об этом на WWDC (с 5:50) и это указано в документации. Это небезопасно, потому что злоумышленник может перехватить данные с помощью man-in-the-middle атаки. Правильный способ проверки чеков — это локальная валидация либо используя свой сервер.
- Существует проблема, связанная с проверкой даты истечения. Если вы не используете свой сервер, то системное время на устройстве можно изменить на более старое и тогда наш код будет выдавать неверный результат – подписка будет считаться активной. Если вас это не устраивает, то можете использовать любой сервис, выдающий точное мировое время.
- Не для всех пользователей бесплатный пробный период может быть доступен. Пользователь мог заново установить приложение через некоторое время, а приложение покажет, что триал доступен как обычно. Правильно будет обновлять чек, валидировать его и проверять в JSON доступность триала для данного пользователя. Многие этого не делают.
- Если пользователь запросил возврат средств, то в JSON подписки добавится cancellation_date , но expires_date останется неизменным. Поэтому важно всегда проверять наличие поля cancellation_date , которое является преимущественным по отношению к expires_date .
- Не стоит обновлять чек при каждом запуске приложения, потому что, во-первых, это бессмысленно, во-вторых, скорее всего пользователю покажется окно ввода пароля от Apple ID. Обновлять чек стоит, например, когда пользователь сам нажал на кнопку восстановления покупок.
- Как определить, в какие моменты стоит валидировать чек для получения актуальной даты истечения подписки? Можно валидировать чек при каждом запуске либо только при истечении подписки. Однако если вы будете проверять чек только при истечении подписки, пользователь, оформивший возврат средств, сможет бесплатно пользоваться вашим приложением до конца периода.
Заключение
Надеюсь, данная статья вам будет полезна. Я попытался добавить не только код, но и объяснить тонкие моменты при разработке. Полный код класса можете скачать здесь. Этот класс будет очень полезен для ознакомления начинающим разработчикам и тем, кто хочет подробнее узнать, как все устроено. Для живых приложений рекомендуется использовать более серьезные решения, например, SwiftyStoreKit.
- оформляйте покупки с помощью лишь одного метода;
- автоматически отслеживайте состояние подписки каждого пользователя;
- легко интегрируйте Subscription Offers;
- отправляйте события о подписках в Amplitude, Mixpanel, Slack и Telegram с учетом локальной валюты пользователя;
- уменьшайте Churn rate в приложениях и возвращайте отписавшихся пользователей.
- Блог компании Apphud
- Разработка под iOS
- Разработка мобильных приложений
- Swift
Как вернуть деньги за подписку
В этой статье мы расскажем, как вернуть средства за подписку, в том числе на таких популярных сервисах, как Google Play, Apple, Яндекс.Плюс, Иви и Литрес.
Автор, юрист с опытом 5+

Многие интернет-сервисы, работающие по модели подписки, требуют от пользователя ввести данные банковской карточки, которая будет привязана к аккаунту. Это, безусловно, упрощает процесс получения услуг. Но при этом можно не заметить, как с карточки начнут производиться нежелательные списания. В этой статье мы расскажем, как вернуть деньги за подписку.
%%type:widget, id:content_pay, name:quiz%%
Оглавление
- Сняли деньги за подписку. Как вернуть?
- Можно ли вернуть деньги за подписку в приложении
- Возврат денег за подписку в различных сервисах
Сняли деньги за подписку. Как вернуть?
Единых правил, которые бы регулировали процедуру возврата денег за подписку, в России на данный момент нет. Подписка на сервис — это услуга, а значит к ней применяются требования Закона о защите прав потребителей (глава III). Кроме того, нужно внимательно читать условия пользовательского соглашения.
Пользовательское соглашение покупатели чаще всего пролистывают и просто ставят галочку напротив «Согласен». Если не хотите читать большой документ полностью, мы все же советуем обращать внимание на пункты об оплате услуг, отказе от подписки и возврате денежных средств.
Помните, что от подписки как от услуги вы можете отказаться в любой момент. Такое право предоставлено всем потребителям в соответствии со статьей 32 Закона о защите прав потребителей, а также в соответствии с пунктом 1 статьи 782 Гражданского кодекса РФ.
Помните, что есть одно условие. При отказе вы должны будете возместить сервису фактически понесенные им расходы. Что это значит на практике? Из суммы возврата вычтут плату за дни, в которые вы уже пользовались подпиской.
Но есть и ситуации, в которых вы можете отказаться от подписки и рассчитывать на возврат всей суммы. Вот несколько примеров:
- приложение не открывается, происходит сбой;
- в приложении есть ошибки: контент низкого качества, функции приложения не соответствуют описанию, приложение не загружается и т.д.;
- вы покупали приложение с намерением слушать/смотреть определенный контент, но это контент по каким-то причинам был удален из приложения;
Согласно статье 29 Закона о защите прав потребителей при обнаружении недостатков оказанной услуги потребитель вправе отказаться от договора и потребовать возврата уплаченных денежных средств.
Связаться с сервисом и попросить возврат полной суммы вы можете и в следующих ситуациях:
- вы оформили подписку по ошибке;
- вы не совершали покупку (например, телефон был украден, либо злоумышленники завладели данными банковской карты).
По общему правилу для оформления возврата необходимо обратиться с претензией к продавцу услуг. Укажите в претензии сумму, которую вы заплатили за подписку, причину возврата, недостатки подписки. К претензии следует приложить копию чека об оплате, подтверждение, что деньги списали с банковской карты и т.д.
После этого подпишите претензию, отсканируйте и отправьте продавцу по электронной почте. В зависимости от интернет-сервиса, который снял деньги, можно выбрать и более удобный способ связи:
- через личный кабинет;
- через службу поддержки.
В течение какого времени сервис должен вернуть деньги?
Требования потребителя о возврате уплаченных за услугу денежных средств подлежат удовлетворению в течение 10 дней со дня их предъявления (пункт 1 статьи 31 Закона о защите прав потребителей).
Если служба поддержки сервиса, который снял с вас деньги, не реагирует на вашу претензию (заявление о возврате), то вы можете обратиться с жалобой в Роспотребнадзор. Для ее подачи удобно использовать онлайн-приемную в Интернете, выбрав соответствующее территориальное подразделение по месту нахождения продавца (его юридический адрес можно найти на сайте или в пользовательском соглашении).
Помните, что помимо обращения в Роспотребнадзор, вы вправе защищать свои права в суде.
У вас уже есть конкретные вопросы относительно возврата денег за подписку? Тогда скорее открывайте наше готовое решение «Вернуть деньги за подписку». Заполните форму, ответив на несколько вопросов и вы сможете воспользоваться претензией о возврате денежных средств за подписку, а если у вас остались вопросы, то юристы DestraLegal с радостью проконсультируют вас в чате.
%%type:widget, id:content_pay, name:order-quiz%%
Мы посмотрели на общие правила возврата. Теперь давайте рассмотрим процедуру возврата применительно к популярным приложениям и сервисам.
Можно ли вернуть деньги за подписку в приложении
Google Play
В соответствии с Правилами возврата платежей Google Play процедура возврата средств зависит от продукта, причины возврата и времени обращения.
Прошло не более 48 часов с момента, когда списали деньги
Если с момента оплаты приложения или покупки в нем прошло не более 48 часов, то вернуть деньги несложно. Нужно лишь быстро оформить заявку онлайн, указав данные Google-аккаунта, в котором была совершена покупка. Далее через Историю заказов выбрать нужную подписку, нажать кнопку «Запросить возврат средств» или «Сообщить о проблеме» и в открывшейся форме подробно описать причину возврата.
Обычно решение принимается быстро, но на сайте указано, что решение более сложных вопросов может занять до четырех рабочих дней. Если проблема связана не просто со случайной оплатой, а с ненадлежащим качеством контента, то сервис может предложить обратиться напрямую к разработчику приложения (его контактные данные обычно содержатся на странице приложения в Google Play в разделе «Дополнительная информация»).
Средства списаны с карты, хотя вы покупку не совершали
В данной ситуации обратиться в Google можно в течение 120 дней с момента транзакции. Это можно сделать либо через Историю заказов и форму запроса из предыдущего пункта либо через специальный раздел «Сообщить о несанкционированной покупке» (например, если в выписке по карте вы нашли списания, начинающиеся с комбинации GOOGLE*название приложения).
Возврат некоторых подписок
Что касается подписки на Google Music, то согласно правилам после начала действия подписки (например, начала нового месяца, который был оплачен) вернуть платеж уже нельзя. Отказаться от подписки удастся лишь на будущее. Доступ к контенту будет сохранен до конца оплаченного периода.
Платная подписка на YouTube Premium (YouTube Music Premium) может быть отменена в любой момент. После отмены плата перестает взиматься, но деньги за оставшийся период (часть стоимости) назад не вернут. Просто доступ к сервису будет открыт до конца платежного цикла. Запросить возврат средств (форма для возврата в Интернете) можно в случае, если с купленной подпиской возникнут проблемы (не было доступа, возникали ошибки, ненадлежащее качество и т.д.).
Кроме того, Google возвращает средства только за активные подписки, но не за истекшие. К примеру, вы по ошибке подписались на полгода, но только после окончания этого периода решили вернуть всю сумму сразу и обратились в службу поддержки Google. В этой ситуации вероятнее всего придет отказ.
Apple
Что касается покупки подписок в магазинах App Store, iTunes Store, то тут также действует особые правила. Запросить возврат денег за подписку можно через специальный сайт http://reportaproblem.apple.com/. Для оформления запроса необходимо ввести Apple ID и пароль. Рядом с приложением/подпиской нужно выбрать раздел «Сообщить о проблеме».
Далее вы указываете, что хотите запросить возврат средств, и выбираете либо предложенную причину из списка (оформление подписки произошло случайно, покупка была сделана случайно и т. д.), либо собственную причину и отправляете запрос.
В течение 48 часов Apple обязан предоставить ответ. Когда деньги вернут обратно? Это будет зависеть от способа оплаты (возврат полной стоимости на банковскую карту – до 30 дней, возврат на счет Apple ID – до 48 часов).
Мы понимаем, что алгоритм действий может быть довольно запутанным и сложным для простого обывателя, поэтому настоятельно рекоменудем воспользоваться нашим автодокументом в разделе «Возврат денег за подписку», а юристы DestraLegal с радостью ответят на любые ваши вопросы в чате и помогут с его подачей.
Возврат денег за подписку в различных сервисах
Обратите внимание: в настоящее время для пользователей из России ограничена оплата покупок и продление подписок через Google Play и App Store. Нет доступа и к Премиум подписке на YouTube. Что делать? Есть несколько вариантов, например, включить VPN и оплатить покупку картой зарубежного банка (если такая есть). Недавно стало известно о возможности оплаты через подарочную карту Google Play. Но ситуация быстро меняется. Советуем периодически проверять информацию, чтобы выбрать подходящий, а главное надежный способ оплаты.

Яндекс.Плюс
Решили воспользоваться услугами Яндекс.Плюс? Внимательно прочитайте пользовательское соглашение и условиям подписки. Так, согласно пунктам 2.9 и 2.11 Условий подписки Яндекс.Плюс пользователь соглашается на
- бессрочное оформление подписки;
- на периодическое автоматическое списание денег с его счета в оплату подписки.
Отказаться от подписки пользователь может в Личном кабинете, она прекратится со дня, следующего за последним днем оплаченного периода. А вот чтобы вернуть деньги, нужно будет обратиться в службу поддержки и заполнить специальную форму. Укажите в ней характер проблемы, данные о последнем списании денег с карты (первые и последние цифры карты, дату и время списания) и не забудьте поставить галочку напротив пункта «Я не пользовался подпиской и хочу вернуть деньги».
К заявке вы можете прикрепить необходимые документы (скриншоты из приложения банка, личного кабинета Яндекс.Плюс). Ответ должен прийти в течение нескольких дней, а срок возврата денег будет зависеть от вашего банка (обычно 5-7 дней).

Онлайн-кинотеатр Иви
Пользователь может в любой момент отказаться от подписки (ищите раздел «Управление подпиской иви» в Личном кабинете), и доступ к контенту прекратится сразу после окончания оплаченного периода (пункт 6.3 Пользовательского соглашения).
Будьте внимательны при оформлении пробного периода. Когда он закончится, подписка будет подключена автоматически и с вашей карты спишут деньги. После пробного периода поняли, что сервис вам не подходит? Тогда не забудьте отключить подписку через Личный кабинет до окончания пробного периода.
В каких случаях Иви гарантирует возврат денег?
- если услуги были оплачены, но не были оказаны в течение 30 дней из-за неполадок на сервисе, то пользователь имеет право требовать возврата уплаченной суммы;
- подписка была оформлена по ошибке;
В обоих случаях возврат производится на основании письменного заявления, направленного по почте или курьерской службой с приложением копии чека об оплате.
Перед тем как направлять письменное заявление, вы можете обратиться в службу поддержки ( [email protected] либо по телефону горячей линии 8 800 234 49 23). Если нет спорных моментов, то решить вопрос с возвратом денег за подписку, вероятно, получится дистанционно, без обращения с письменным заявлением.

Сервис ЛитРес (электронные книги и аудиокниги)
Автопродление подписки на сервисе ЛитРес можно отключить через личный кабинет на сайте (или в приложении) в разделе «ЛитРес: Абонемент», нажав на кнопку «Отменить автопродление».
- Отказаться от покупки в ЛитРес можно в течение 14 дней при условии, что вы не начали чтение и не скачали электронную книгу.
- Отказаться от услуги абонемент также можно в течение 14 дней с даты совершения оплаты при условии, что вы не получали книгу из персональной подборки и не воспользовались скидкой.
Процедура возврата следующая: необходимо обратиться с запросом (претензией) на адрес [email protected] , указав логин, причину возврата, данные об оплате, дату покупки (чтобы подтвердить соблюдение 14-дневного срока), а также реквизиты для возврата денежных средств.
Судебная практика
Суд рассматривал иск гражданки А., которая оплатила месячную подписку на ЛитРес, а затем с её карты стали автоматически списываться деньги за дальнейшую подписку. На требование о возврате списанных средств сервис не ответил. Суд первой инстанции указал, что правила об автоматическом продлении содержались в договоре публичной оферты, с условиями которого А. согласилась путем введения данных банковской карты и оплаты первого месяца подписки.
Отменить платное продление можно было в любой момент в настройках. В удовлетворении требований гражданки А. мировой суд отказал, с ним согласились суды апелляционной и кассационной инстанций (Определение Первого кассационного суда общей юрисдикции от 12.02.2021 № 88-2551/2021).
Совет напоследок: обязательно просматривайте условия подключения и оплаты услуг сервисов и приложений, чтобы быть в курсе их платежной политики и не потерять деньги.
Но если с вами уже произошла неприятная история, воспользуйтесь нашим готовым решением «Возврат денег за подписку». Вы можете воспользоваться и опросником ниже, а затем связаться с нашими юристами. Они ответят на все вопросы и помогут.
%%type:widget, id:content_pay, name:order-quiz%%
Что такое check your name и как отключить подписку

За все в мире приходится платить и современный человек порой не успевает держать под контролем все свои задолженности.
Существует удобный сервис check your name, который помогает прослеживать имеющиеся задолженности
Кстати, подписка на сервис платная. Но она имеет множество дополнительных возможностей.
Зачем нужен?
К основным функциям check your name относятся следующие списания: штрафы, налоги (на землю, на транспорт).
Чтобы система списывала долги, при регистрации необходимо ввести: личные данные, номер автомобиля и сведения, относящиеся к объекту списания.
К дополнительным функциям можно отнести: возможность проследить, где находится отправленное письмо или посылка, узнавать обо всех штрафах, налогах, вычетах
Подписку check your name можно самостоятельно как подключить в настройках, так и отключить. При подключении следует учесть, что она платная.
Почему check your name списали деньги?
Сервис может списать денежные средства по 2-м причинам.
- Первое — была найдена неоплаченная задолженность и произошло по ней списание.
- Второе — была снята стоимость подписки.
Специально для Вас: Яндекс списал деньги с карты: как вернуть средства
В случае, когда было снятие по неизвестной причине, необходимо связаться со службой технической поддержки сервиса.
Важно : Просмотреть все списания можно в истории, там отображается причина, по которой были списаны денежные средства, в том числе и оплата за услугу.
Как отключить подписку check your name?
Учитывая тот факт, что данные моменты можно узнавать бесплатно, к примеру, через Госуслуги, подписка может быть невыгодной и не нужной.
В данном случае check your name можно отключить:
- Найти кнопку «Отмена подписки» и нажать на нее (она находится внизу сервиса);
- Далее откроется окошко, данные в нём нужно будет заполнить;
- Затем необходимо из всех подписок выбрать check your name и отказаться от нее, нажав соответствующую кнопку.
Список всех подписок можно найти через поисковик. После отключения должно прийти оповещение, что услуга отключена.
Как отменить подписку на iPhone: подробная инструкция


Совершать покупки в цифровом магазине App Store очень легко и удобно. Настолько, что иногда оформление происходит как-то незаметно. Деньги с вашей карты списываются моментально, а вот осознание, что с покупкой вы поторопились, приходит позже.
Но Apple не против вернуть ваши деньги за подписку в App Store, если вы оформили ее по неосторожности или же и вовсе разочаровались в оплаченном контенте. Чтобы это сделать, необходимо пройти официальную процедуру.
- Перейдите на сайт reportaproblem.apple.com через браузер устройства.
- Авторизуйтесь с помощью своего Apple ID и пароля.
- В графе «Чем мы можем вам помочь?» выберите вариант ответа «Запросить возврат средств».
- В графе «Расскажите нам больше» укажите причину, по которой вы хотите вернуть деньги.
- Выберите сервис, на который вы хотите отменить платную подписку, и нажмите «Представлять на рассмотрение».




При отправке запроса нужно убедиться, что деньги уже были списаны. Если платеж находится на рассмотрении, то запрос возврата будет недоступен. Его можно будет подать повторно, когда платеж уже пройдет.
Последний совет: не обманывайте и не сочиняйте неправдоподобных историй. Если вы редко обращаетесь в Apple с просьбами вернуть деньги, ваши шансы очень высоки. А вот если ваш обман вскроется, больше на их помощь не рассчитывайте.
Теперь вы знаете, как устроено управление подписками Apple . Ещё больше лайфхаков ищите в нашем «Блоге» .
ЧИТАЙТЕ ТАКЖЕ:
