Как Apple уведомляет приложения iOS о возмещении покупок в приложении (IAP)?
У меня Apple IOS IAP успешно реализована в моем приложении и протестирована в песочнице. Отлично работает.
Я обеспокоен тем, что пользователи могут покупать что-то с помощью IAP, загружать его в мое приложение, а затем жаловаться в Apple и получать возмещение. Там нет очевидного способа, чтобы возврат был отправлен в мое приложение. Они просто исключены из списка продуктов, которые я получаю во время операции "восстановления"? Есть ли какой-либо недокументированный тип транзакции, который будет асинхронно отображаться в моем SKPaymentTransactionObserver при возврате платежа?
В настоящий момент я исхожу из предположения, что мне нужно удалить транзакции IAP пользователя перед выполнением восстановления, и что все, что было возвращено, просто не будет в списке восстановленных транзакций. Правильно ли это? Есть ли способ проверить это в песочнице?
Кто-нибудь видел возмещение в производственной среде и может объяснить, как они работают?
Ответы
Ответ 1
В руководстве по покупке приложений обсуждается концепция "отмены" подписки. Это единственное место, где я обсуждал этот вопрос.
Более подробная информация о поле даты отмены также может быть найдена в документации проверки валидации App Store.
cancellation_date
После декодирования квитанции вы можете получить дату отмены, которая сообщит вам следующее:
Для транзакции, которая была отменена службой поддержки Apple, время и дата отмены.
Ответ 2
Возвраты возвращаются, но ваше приложение не получает уведомления о них вообще. Независимо от того, покупаете ли вы приложение, загружаете приложение или какой-либо другой контент iTunes, пользователь может использовать контент, даже если он попросил возмещение.
Ответ 3
Стратегия такова:
-
Вы сохраняете поле latest_receipt
( "MIIUJgYJKoZIhvc..." base64) в своей базе данных, связанную с учетной записью пользователя.
-
Каждый день вы запрашиваете яблоко для проверки всех квитанций, отправив их квитанции base64 из сохраненного поля latest_receipt
.
-
В квитанции вы проверяете наличие поля cancellation_date
. Если вы его найдете, обратитесь к документации:
Относите отмененную квитанцию так же, как если бы никакая покупка не была сделана.
Точно так же вы также проверяете продление подписки (отметьте поле expires_date_ms
).
Ответ 4
Я получил ответ от Apple Developer Relations сегодня (6 декабря 2018 года):
Привет, Йоханнес,
В ответ на ваш вопрос, к сожалению, нет никаких поддерживаемых средств для обнаружения того, что пользователь связался с Apple Care и получил возмещение за покупку входящего продукта в приложении. Единственный вариант, к которому я могу обратиться, - отправить запрос API-расширения для API, который будет доступен для приложения, чтобы обнаружить, что возмещение было предоставлено пользователю покупки в приложении. В настоящее время эта поддержка реалистично доступна только для приложений, которые предлагают автоматическую возобновляемую подписку In-App Purchase.
Вы можете отправить запрос на улучшение с помощью веб-страницы отчета об ошибках Apple Developer - http//bugreport.apple.com
Поскольку это проблема типа запроса повышения, я собираюсь организовать для этого инцидента неисполнение из вашей учетной записи для использования в будущей проблеме.
Так что у нас это.