При встраивании покупок приложений в приложение iOS Apple предоставляет вам доступ к квитанции, которую вы можете отправить на сервер, чтобы просмотреть все транзакции покупок приложений для данного пользователя iTunes, связанные с вашим приложением.
Если в моем приложении я требую, чтобы пользователи входили в систему или создавали учетную запись через мою систему перед совершением покупки, как я могу гарантировать, что квитанция iTunes не будет дублирована?
Например, если пользователь совершает покупку,Приложение отправляет идентификатор пользователя и квитанцию iTunes на мой сервер.Затем сервер сохраняет эту квитанцию вместе с идентификатором пользователя в базе данных.В следующий раз, когда сервер захочет проверить покупки пользователей, мы можем получить все квитанции для этого заданного идентификатора пользователя из базы данных и запустить проверку.
Но если пользователь выходит из системы и входит в систему как другойпользователь и совершает другую покупку, квитанция будет снова отправлена на сервер с другим идентификатором пользователя.Фактически, позволяя использовать одну покупку на неограниченных учетных записях пользователей.
Из-за того, что квитанции меняются со временем (автоматическое продление подписки и т. Д.), Я не думаю, что можно полагаться на получение квитанции.то же самое каждый раз, когда он отправляется на мой сервер и использует данные квитанции в качестве уникального идентификатора.
Я также рассмотрел сохранение original_transaction_id
для одной из транзакций, но я не думаю, что это сработает, так какприложение может иметь несколько не расходуемых товаров или несколько подписок, поэтому в одной квитанции может быть несколько полностью действительных original_transaction_id
.Таким образом, это на самом деле не связывает эту квитанцию, а только транзакцию.
В идеале, я бы хотел систему, в которой, когда пользователь выходит из системы и входит (как другой пользователь или тот же), приложениеотправит квитанцию на сервер, отменит любые одинаковые квитанции для всех существующих пользователей и свяжет эту новую квитанцию с пользователем, который вошел в систему. Проблема в том, что не существует какого-либо уникального идентификатора дляданную квитанцию, которую я могу использовать для проверки дубликатов квитанций в моей системе.
Каков наилучший способ обнаружения дубликатов квитанций, отправленных на мой сервер (чтобы я мог соответствующим образом отсоединить старые квитанции)?
PS.Я думаю, что эта система наиболее важна для подписки и непотребляемых предметов.Для расходных материалов его всегда нужно будет связать с одним конкретным пользователем, и я могу просто сохранить transaction_id
и original_transaction_id
для этого расходного элемента, чтобы он не дублировался.