Подтвердить что ты не робот

Как Apple уведомляет приложения iOS о возмещении покупок в приложении (IAP)?

У меня Apple IOS IAP успешно реализована в моем приложении и протестирована в песочнице. Отлично работает.

Я обеспокоен тем, что пользователи могут покупать что-то с помощью IAP, загружать его в мое приложение, а затем жаловаться в Apple и получать возмещение. Там нет очевидного способа, чтобы возврат был отправлен в мое приложение. Они просто исключены из списка продуктов, которые я получаю во время операции "восстановления"? Есть ли какой-либо недокументированный тип транзакции, который будет асинхронно отображаться в моем SKPaymentTransactionObserver при возврате платежа?

В настоящий момент я исхожу из предположения, что мне нужно удалить транзакции IAP пользователя перед выполнением восстановления, и что все, что было возвращено, просто не будет в списке восстановленных транзакций. Правильно ли это? Есть ли способ проверить это в песочнице?

Кто-нибудь видел возмещение в производственной среде и может объяснить, как они работают?

4b9b3361

Ответ 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

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

Так что у нас это.