2014-02-19 2 views
1

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

Я знаю, что для iOS 7.0 мне не нужно хранить квитанцию, потому что мои квитанции о покупке iAP находятся в самой квитанции о приеме, что нетрудно разобрать и получить эту информацию.

Но для iOS 6.1 или более ранней версии я могу сохранить квитанцию ​​от транзакции в NSUserDefaults, так что позже, когда мне нужно, например, загрузить некоторый контент с самообслуживающего сервера, я могу использовать эту квитанцию ​​для проверки этой конкретной загрузки на сервере (и то сервер отправит его на яблоко)? Является ли это законной, безопасной и общепринятой практикой хранить квитанцию?

ответ

2

Я уверен, что вы уже пошли по следующей ссылке

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html#//apple_ref/doc/uid/TP40008267-CH8-SW9

Кроме того, я считаю, что нет никаких проблем в сохранении данных транзакций. Что касается сохранения в NSUserDefaults, есть одна проблема, с которой я могу думать: если пользователь удаляет и переустанавливает приложение или покупает новый телефон, эти данные не будут храниться на устройстве. Поэтому сохранение чека каким-то образом в ВАШЕМ самообслуживаемом сервере было бы лучше. Для устройств pre iOS7 ссылка ссылается на эту технику:

«Если вам нужно поддерживать версии iOS раньше, чем iOS 7, где квитанция приложения недоступна, вместо этого восстановите завершенные транзакции».

+0

Так что, если кто-то украдет квитанцию ​​из 'NSUserDefaults', он может отправить ее на мой сервер и загрузить контент, который я пытался защитить. Или я чего-то не хватает? Также я не понимаю логику сохранения чека на моем сервере. Тогда что я должен держать на устройстве? что отправить с устройства на сервер, чтобы убедиться, что предоставление контента аутентифицировано? Я был бы признателен за ваши мысли выше. – Pablo

+0

Я не думаю, что кто-то может украсть квитанцию, потому что все они связаны с этим идентификатором Apple конкретного пользователя. Кроме того, поскольку ваш расход, не потребляемый по требованию, предоставляется по требованию, я предполагаю, что вы храните данные о покупке каждого пользователя на своем сервере. Когда вы сохраняете квитанцию ​​на своем сервере, всякий раз, когда пользователь пытается загрузить контент, вы можете проверить квитанцию, связанную с этим контентом, в качестве дополнительного уровня безопасности для вас. Это единственная причина, по которой я предложил сохранить ее на вашем сервере. –

+0

Даже если квитанция подключена к Apple ID, имея только данные квитанции (украденные с помощью iFunbox, даже если устройство не взломанно) дадут плохим парням возможность отправить его на мой сервер для аутентификации. Нет, я не храню информацию о покупке. Мой сервер используется только как прокси-сервер между устройством и сервером проверки Apple. Я понимаю, что вы имеете в виду, просто проверьте, что квитанция действительна, проверяя дату покупки и другие поля. Но все же мы приходим к первому вопросу, когда квитанция сама украдена. Загружаемый контент можно загрузить даже с iDevice, а с ПК, используя HTTP (S) запрос. – Pablo

Смежные вопросы