restore purchases что это значит
Что означает» восстановить покупки » в покупках в приложении?
Я действительно не понимаю эту идею. Должен ли я предоставить кнопку восстановления для пользователя? Какой метод должен вызывать этот метод? Что будет делать restore?
3 ответов
обычно вы восстанавливаете покупки с помощью этого кода:
не все типы покупок в приложении могут быть восстановлены.
вы получите сообщение об отклонении от apple только потому, что продукт, который вы зарегистрировали для покупки inApp, может подпадать под категорию необновляемых подписок и расходных продуктов. Этот тип продуктов не будет автоматически возобновляемым. вам нужно иметь явную кнопку restore в вашем приложении.
для другого типа продуктов он автоматически восстановит его.
пожалуйста, прочитайте следующий текст, который очистит вашу концепцию об этом:
после того как транзакция была обработана и удаляется из очереди, ваш приложение обычно никогда не видит его снова. Однако, если ваше приложение поддерживает типы продуктов, которые должны быть восстановимыми, необходимо включить интерфейс, позволяющий пользователям восстанавливать эти покупки. Этот интерфейс позволяет пользователю добавлять продукт на другие устройства или, если оригинал устройство было стерто, чтобы восстановить транзакцию на исходном устройстве.
магазин комплект обеспечивает встроенный функциональность для восстановления проводки для non-потребляемые продукты, автоматическ-возобновляемые подписки и свободно подписки. Для восстановления транзакций приложение вызывает метод restoreCompletedTransactions очереди платежей. Очереди оплаты отправляет запрос в App Store для восстановления транзакций. В return, App Store генерирует новую транзакцию восстановления для каждого транзакция, которая была ранее завершена. Операции восстановления свойство originalTransaction объекта содержит копию оригинала торговая операция. Приложение обрабатывает транзакцию восстановления с помощью получение исходной транзакции и ее использование для разблокировки приобретенный контент. После Store Kit восстанавливает все предыдущие транзакции, он уведомляет наблюдателей очереди платежей, вызывая их paymentQueueRestoreCompletedTransactionsfinished: метод.
если пользователь пытается приобрести восстанавливаемый продукт (вместо используя реализованный вами интерфейс восстановления), приложение получает обычная транзакция для этого элемента, а не транзакция восстановления. Однако, потребитель не поручен снова для этого продукта. Ваш приложение должно обработать эти проводки одинаково к исходная транзакция. Номера-продление подписки и расходных материалов продукты не восстанавливаются автоматически магазином Kit. Не возобновляя однако подписки должны быть восстановлены. Восстановление этих продуктов, транзакции необходимо записывать на собственном сервере, когда они приобретенные и предоставить свой собственный механизм для восстановления этих транзакций к устройствам пользователя
Это как дополнительная функция.
Если вы не предоставите его, когда пользователь попытается приобрести непотребляемый продукт, AppStore восстановит старую транзакцию. Но ваше приложение будет думать, что это новая сделка.
Если вы предоставите механизм восстановления, ваш менеджер покупок увидит восстановленную транзакцию.
Если приложение должно различать эти параметры, вы должны предоставить функциональность для восстановления ранее приобретенных продуктов.
In-app purchases: продвинутые механики работы с покупками на Android и iOS
Привет, я Влад, core разработчик Android SDK в Adapty. Это заключительная статья из серии туториалов по внедрению внутренних покупок в мобильные приложения:
iOS in-app purchases:
Android in-app purchases:
Написано совместно с:
Андреем Кяшкиным,
В заключительной статье мы решили не замыкаться на одной платформе, а рассказать о продвинутых практиках работы с покупками на iOS и Android и показать, как сервер расширяет наши возможности при работе с подписками и какие преимущества даёт.
Работа с продуктами на сервере
Для получения данных о продуктах на iOS/Android с помощью StoreKit/Billing Library нам нужно передавать id продуктов, информацию о которых мы хотим запросить — то есть, нет способа получить все доступные продукты, не зная о них вообще ничего. Бэкенд дает нам замечательное преимущество — не зашивать id продуктов на клиенте и тем самым иметь возможность манипулировать списком актуальных продуктов без обновления приложения.
Таким образом, мы можем отдавать на клиент общую модель продукта:
product_id — это id продукта в сторе. Может возникнуть вопрос, почему таких полей, как описание продукта или цена, в этой модели нет. Тут важно понимать, что создание продуктов в соответствующих консолях никто не отменял, просто часть клиентской логики мы переносим на бэк, а другую ее часть мы перенести не можем. Помимо самого совершения покупки, которое без участия сторов невозможно (пока ещё), информацию о продукте по id тоже нужно получать от стора напрямую, потому что Apple и Google отдают локализованные значения в зависимости от того, к какой стране привязан данный аккаунт.
И теперь флоу получения продуктов на клиенте будет выглядеть так:
Получаем историю транзакций от стора на девайсе.
Отправляем данные о транзакциях на сервер. В этом месте бэк вычисляет, доступны ли данному пользователю скидочные предложения.
Запрашиваем у бэка продукты.
По id продуктов запрашиваем у стора всю остальную информацию.
Предоставление кросс-доступа пользователю
Как только вы вынесли продукты на сервер и сделали само понятие «продукт» универсальным, стоит задуматься о том, как сделать то же самое для понятия «статус покупки». Идея в том, что если у вас больше одной платформы, то покупка на одном устройстве должна разблокировать доступ к контенту на любом устройстве вне зависимости от ОС, но в пределах аккаунта, с которого она была совершена. Если у вас больше одного продукта, то сделать это не так просто, т.к. вам на устройстве необходимо понимать, что именно купил пользователь, и давать ему доступ к той или иной части вашего приложения.
Для универсализации статуса покупки удобно ввести понятие «уровень доступа», который выставляется пользователю при совершении покупок из определенного набора. Например, мы добавляем четыре продукта — по два на каждую платформу, недельная премиум и недельная премиум плюс. Пример из жизни — Silver и Gold подписка в Тиндере. Gold стоит дороже и открывает больше возможностей. За обычными недельными мы закрепляем уровень доступа «обычная», а за премиум подписками, соответственно, «премиум». Если пользователь на какой-либо платформе или девайсе покупает подписку, за которой, например, закреплен уровень доступа «обычная» то сервер должен после покупки прислать на устройство этот идентификатор (внутри профиля или каким-то другим способом) и, выполнив обычное сравнение строк, вы сможете понять, что именно купил пользователь и отреагировать на это.
Так выглядит проверка на наличие уровня доступа:
Таким образом, мы абстрагируемся от понятия «покупка» и «платформа», в сторону одного общего абстрактного понятия «доступ». Единственный недостаток этого подхода — что уровни доступа вам придется указывать напрямую в коде, но обычно их не очень много (один или два) и они весьма статичны, так что их поддержка не должна вызывать сложностей. Также не забывайте получать актуальный уровень доступа где-то на запуске приложения, чтобы обрабатывать случай, когда покупка была сделана на другом устройстве / платформе.
В большинстве случаев приложение ограничивается одним уровнем доступа «купленный», т.е. пользователь или что-то купил, или ничего не купил. В этом случае достаточно будет обойтись одним уровнем доступа, но благодаря ему обработка кроссплатформенных покупок не доставит вам проблем в будущем.
Синхронизация истории покупок и восстановление покупок
Помимо всего прочего, также важно уметь правильно работать с историей покупок пользователя. Например, это актуально в случае переустановки приложения, если у вас предусмотрена только анонимная или неявная авторизация, т.е. нельзя сразу понять, есть ли у пользователя платный доступ. В этом случае достаточно будет получить историю покупок и отправить ее на сервер для обработки. Сделать это можно следующими способами:
просто запросив рецепт (receipt) — актуально, если в пределах установки уже были совершены какие-то покупки;
запустив процесс восстановления покупок (restore purchases).
А вот на iOS 15+ появилась возможность получать все entitlements пользователя в любой момент.
О получении рецептов мы уже писали в предыдущих статьях, поговорим чуть больше про восстановление. Восстановление не стоит запускать сразу же на старте, т.к. оно вызывает показ окна для пользователя, где требуется ввести логин и пароль от аккаунта. Подобный интерфейс на старте без каких-либо предшествующих действий со стороны пользователя может отпугнуть и создать ощущение мошенничества.
Как только пользователь сам инициировал процесс восстановления покупок, то тут уже можно спокойно обращаться к системному фреймворку работы с покупками. После успешного восстановления необходимо пересинхронизировать все покупки пользователя на сервер, что позволит определить текущее состояние его подписки; понять, доступны ли ему скидки; возможно составить какую-то аналитику для этого аккаунта.
В iOS 15+ появился listener, который в две строки можно запустить на старте приложения. Этот listener получает все текущие покупки, которые есть у пользователя, в виде массива и на старте обновляет их данные – статус и проч. В целом, при первом запуске приложения рестор покупок больше не нужен, т.к. в реал-тайме можно получить обновления по всем покупкам пользователя между разными девайсами.
Обработка покупок, когда сервер не отвечает
К сожалению, такое бывает. Если сервер лежит и покупка в это время невозможна, вы теряете не только подписчиков, но и деньги, как в настоящем, так и будущие автосписания, которые были бы возможны, если бы покупка состоялась.
При этом с ошибками от сторов на iOS или Android, как правило, сложно что-то сделать, кроме как показать ошибку в UI, а вот в случае недоступности нашего бэка мы можем чуть лучше сгладить углы.
Например, мы можем локально кэшировать продукты после их получения с бэка. Таким образом, если при запросе на продукты код ответа 500 и после нескольких повторных запросов ничего не поменялось, мы просто берем продукты из кэша и идем с ними в стор.
Тогда встаёт вопрос, что делать, если сервер лежал при первом запуске приложения, и в кэше пока ничего нет. Можно, конечно, показать ошибку, а можно «зашить» данные о продуктах прямо в сборку, чтобы в том кейсе, когда сервер упал, а пользователь открыл приложение впервые, мы бы могли ему сразу же на онбординге предложить совершить покупку.
Второе критичное место, где нам очень нужен бэк – это валидация покупки. Чтобы не расстраивать пользователя, можно сразу дать ему доступ, но при этом пытаться провалидировать покупку при любом удобном случае, например, при следующем запуске приложения или при возвращении приложения в foreground. Решение дать пользователю доступ к контенту без всех проверок может показаться поспешным, но если у вас преимущественно онлайн-контент, нечестным пользователям будет сложно пользоваться приложением без интернета, и рано или поздно неправомерный доступ будет отозван.
Заключение
В этой статье мы затронули более сложные механики работы с продуктами и покупками. Как правило, о них задумываются сразу после того, как сделали базовую интеграцию и основные механики уже работают: показ экрана оплаты, отображение актуальной информации о продуктах, покупка, обработка самых популярных ошибок.
Как видите, процесс подключения покупок довольно трудоёмкий и требует учёта очень разных сценариев. Упростить задачу можно с помощью сторонних сервисов. Например, в Adapty все продвинутые кейсы и, тем более, базовое подключение покупок с серверной валидацией уже готовы. Для работы нужно создать аккаунт и подключить Adapty SDK. Так вы сэкономите пару месяцев разработки и начнёте быстрее монетизироваться. Для роста продаж в Adapty есть продвинутая аналитика, когортный анализ, а/б тесты пейволлов и интеграции с сервисами аналитики и атрибуции.
What does «restore purchases» in In-App purchases mean?
I don’t really understand this idea. Do I have to provide a restore button for the user? What method should this method invoke? What will restore will do?
3 Answers 3
You typically restore purchases with this code:
Not all types of In-App purchases can be restored.
You will get rejection message from apple just because the product you have registered for inApp purchase might come under category Non-renewing subscriptions and consumable products. These type of products will not automatically renewable. you need to have explicit restore button in your application.
for other type of products it will automatically restore it.
Please read following text which will clear your concept about this :
Once a transaction has been processed and removed from the queue, your application normally never sees it again. However, if your application supports product types that must be restorable, you must include an interface that allows users to restore these purchases. This interface allows a user to add the product to other devices or, if the original device was wiped, to restore the transaction on the original device.
Store Kit provides built-in functionality to restore transactions for non-consumable products, auto-renewable subscriptions and free subscriptions. To restore transactions, your application calls the payment queue’s restoreCompletedTransactions method. The payment queue sends a request to the App Store to restore the transactions. In return, the App Store generates a new restore transaction for each transaction that was previously completed. The restore transaction object’s originalTransaction property holds a copy of the original transaction. Your application processes a restore transaction by retrieving the original transaction and using it to unlock the purchased content. After Store Kit restores all the previous transactions, it notifies the payment queue observers by calling their paymentQueueRestoreCompletedTransactionsFinished: method.
If the user attempts to purchase a restorable product (instead of using the restore interface you implemented), the application receives a regular transaction for that item, not a restore transaction. However, the user is not charged again for that product. Your application should treat these transactions identically to those of the original transaction. Non-renewing subscriptions and consumable products are not automatically restored by Store Kit. Non-renewing subscriptions must be restorable, however. To restore these products, you must record transactions on your own server when they are purchased and provide your own mechanism to restore those transactions to the user’s devices
Восстановленный Айфон: как отличить от подделки и стоит ли покупать
И что это вообще такое
Лучше купить восстановленный Айфон, чем б /у.
Восстановленными, или refurbished, называются Айфоны, которые купили, сдали обратно в магазин, а затем снова выставили на продажу со скидкой.
Перед возвращением в продажу их инспектируют, ремонтируют, чистят и тестируют на работоспособность. Под программу восстановления чаще всего попадают смартфоны с некритичными неисправностями, витринные образцы и полностью работоспособные Айфоны, которые покупатели по той или иной причине вернули в магазин.
Восстановленные и б/у Айфоны — это две разные вещи. В первом случае подразумевается, что по работоспособности устройство ничем не отличается от нового, а его компоненты протестировали и отремонтировали перед повторной продажей. Во втором случае речь идет об Айфоне, который перепродается в том же состоянии, в котором он был у предыдущего владельца: скорее всего, его никто не ремонтировал, не тестировал и не чистил.
Какие восстановленные Айфоны бывают
Восстановленные Айфоны можно разделить на три категории.
Айфоны, официально восстановленные производителем. Это устройства, восстановленные самой «Эпл», по-английски они называются Manufacturer Refurbished или Certified Refurbished.
«Эпл» принимает на восстановление Айфоны, которые вернули в магазины вскоре после покупки, например покупатель передумал, у которых обнаружили какие-то некритичные дефекты — гарантийные случаи — или которые сдали по программе трейд-ин. Сильно изношенные телефоны с серьезными поломками в программу восстановления не попадают, а отправляются сразу на переработку.
Процесс восстановления происходит на заводе «Эпл» и состоит из нескольких этапов. Сначала сотрудники компании проводят диагностику Айфона и выявляют проблемы в его работе. После этого все неисправные компоненты заменяются на новые. Восстановленное устройство тщательно чистят, в обязательном порядке меняют ему корпус и батарею, а затем отправляют на подробное тестирование — то же самое, которое проходит вся техника «Эпл».
Если тестирование прошло успешно, специалисты «Эпл» присваивают смартфону свежий серийный номер, упаковывают в новую коробку со всем набором аксессуаров и отправляют в продажу со скидкой до 15%. Важно отметить, что такой Айфон не пытаются выдать за новый: внешний вид коробки отличается от обычной и на ней есть специальная маркировка — Apple Certified Pre-Owned. В остальном Айфон позиционируется «как новый».
Айфоны, восстановленные продавцами. Это устройства, восстановленные у мастеров, которые не имеют к «Эпл» никакого отношения, — по-английски Seller Refurbished. Например, у «Амазона» есть подразделение Amazon Renewed — оно занимается продажей техники, которую восстанавливали их собственные подрядчики.
Если «Эпл» всегда восстанавливает Айфоны до состояния «как новый», то в случае с неофициальным восстановлением каждый продавец сам решает, какую планку качества установить. Тот же самый Amazon Renewed сразу предупреждает, что их техника может иметь незначительные царапины и вмятины, коробки и аксессуары могут оказаться неоригинальными, а емкость батареи будет не полной, но не ниже 80%.
Продавцы могут делить восстановленные Айфоны на разные категории, например по внешнему виду. В категории «идеально» будут полностью работоспособные Айфоны с корпусом без видимых дефектов. В категорию «хорошо» попадают устройства с незначительными внешними повреждениями: маленькими царапинами или потертостями. В категорию «удовлетворительно» — Айфоны с заметными внешними дефектами, но которые тоже при этом будут нормально функционировать. Чем ниже категория — тем больше скидка.
Процедура восстановления Айфонов может значительно отличаться от той, которая принята у «Эпл». Например, мастера могут не менять дефектные детали, а просто чинить их. Если какие-то комплектующие все-таки меняют, то не факт, что они окажутся оригинальными. Критерии тестирования работоспособности тоже у всех разные, и нередко они оказываются гораздо менее строгими, чем у «Эпл».
Техника из категории Seller Refurbished — очень распространенное явление на американском рынке. В США есть маркетплейсы, которые восстанавливают технику и затем перепродают ее с большой скидкой. Чтобы не терять клиентов, они стараются держать планку качества и всегда предоставляют гарантию на свои устройства.
Кустарно восстановленные Айфоны. Это могут быть в том числе поддельные устройства, которые продаются под видом новых. На рынке есть недобросовестные компании, которые скупают сломанные или утопленные телефоны, разбирают их на комплектующие и пересобирают в более-менее работающие устройства.
Такие Айфоны упаковывают в коробки, очень похожие на оригинальные, и иногда им даже присваивают поддельные серийные номера и идентификаторы. Чаще всего их продают через онлайн-магазины.
Как поставить цель и не бросить ее
Где купить официально восстановленный Айфон
В службе поддержки «Эпл» мне сообщили, что официально восстановленные Айфоны в Россию не поставляют. По словам сотрудника компании, если кто-то продает восстановленные Айфоны и утверждает, что они официальные, то можно быть уверенным, что это неправда.
Я написала в онлайн-магазин техники BigGeek, который продает в том числе восстановленные Айфоны, и уточнила этот вопрос. В службе поддержки мне ответили, что их Айфоны восстанавливала «Эпл», но это неофициальные поставки. То есть магазин сам закупает за границей официально восстановленные устройства и привозит их в Россию для перепродажи.
Таким образом, единственная возможность купить восстановленный Айфон от «Эпл» в России — искать неофициальные поставки из-за рубежа. Но нужно учитывать, что это будут устройства, выпущенные для заграничного рынка, то есть без сертификации Ростеста. В техническом плане они ничем не будут отличаться от сертифицированных, но если вы решите обратиться с ним в сервисный центр «Эпл», могут возникнуть проблемы.
Дело в том, что российские центры не принимают по гарантии некоторые модели без сертификата Ростеста, в частности это касается iPhone 11 Pro Max. Поэтому перед покупкой лучше заранее уточнить этот вопрос.
Другой вариант — самому заказать официально восстановленный Айфон из-за рубежа. Например, это можно сделать напрямую в американском Apple Store с помощью одного из сервисов для заграничного шопинга, которые заказывают товары на свои склады в США или Европе и затем пересылают их в Россию. Но не факт, что это будет намного выгоднее, чем покупка нового Айфона в России.
Как отличить восстановленный Айфон от оригинала
«Эпл» не делает тайны из того, что она перепродает часть своей техники, поэтому отличить официально восстановленный телефон от нового не составит труда. Достаточно взглянуть на коробку: на ней не будет изображения Айфона, вместо этого там просто напечатано название модели с подписью Apple Certified Pre-Owned.
Вторая деталь, которая укажет на то, что перед вами восстановленный смартфон, — номер модели. Он начинается с буквы F, тогда как номера новых моделей начинаются с буквы M.
Другой вопрос — если вам пытаются продать неофициально восстановленный Айфон под видом нового. Вот несколько шагов, которые помогут выявить подмену.
Если мы говорим об официально восстановленном Айфоне, то вероятность, что он сломается, не выше, чем у обычного Айфона. На всю восстановленную продукцию «Эпл» выдает такую же гарантию, как и на новую. При восстановлении Айфона все компоненты, которые работали некорректно, не чинят, а меняют на новые, поэтому риск повторных поломок исключается.
В случае с неофициально восстановленным Айфоном ситуация сложнее. Работоспособность такого устройства будет целиком зависеть от добросовестности магазина, в котором вы его покупаете.
Если мастера не отличаются высокой квалификацией и если они использовали неоригинальные комплектующие, то риск, что Айфон поломается, многократно увеличивается. Поэтому при покупке неофициально восстановленных устройств важно выбирать крупных продавцов с хорошей репутацией.
Выдается ли гарантия на восстановленный Айфон
Гарантия на официально восстановленные Айфоны длится один год — в течение этого срока можно без проблем пользоваться услугами сервисного центра «Эпл». На неофициально восстановленные устройства эта гарантия, само собой, не распространяется.
Зато на неофициально восстановленные телефоны могут давать гарантию сами продавцы. Например, крупный американский магазин восстановленной техники BackMarket дает покупателям 30 дней на возврат товара и 12 месяцев бесплатного сервисного обслуживания. Amazon Renewed предоставляет возможность вернуть или обменять Айфон в течение 90 дней.
Ну а другие продавцы могут не давать гарантию и даже не принимать купленные Айфоны обратно, если с ними что-то окажется не так. Поэтому перед покупкой такого устройства важно уточнять условия гарантии и возврата.
Стоит ли покупать восстановленный Айфон
Официально восстановленные Айфоны — хорошая альтернатива для тех, кто хочет сэкономить деньги на покупке нового смартфона. Правда, с учетом того, что Apple не поставляет их в Россию, эта выгода может быть нивелирована стоимостью доставки устройства из-за рубежа. Если же покупать восстановленный Айфон из неофициальных поставок, то есть вероятность нарваться на мошенников.
Перед тем как купить восстановленный Айфон в одном из российских магазинов, стоит связаться со службой поддержки и уточнить, кто именно занимался восстановлением. Убедитесь, что на выбранную модель будет действовать гарантия «Эпл» и что магазин дает возможность оформить возврат товара, если он вам не понравится.
Если вы хотите приобрести модель, на которую гарантия российских сервисных центров «Эпл» не распространяется, то ее должен предоставлять сам магазин.
Тщательно изучите условия гарантийного обслуживания: что оно покрывает и кто конкретно будет заниматься ремонтом. Обязательно почитайте отзывы о продавце, чтобы убедиться, что он продает оригинальную продукцию. Самый лучший вариант — прийти в офлайн-магазин и удостовериться в этом лично.