Управление покупками iOS в приложении - PullRequest
0 голосов
/ 13 декабря 2018

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

Если в моем приложении я требую, чтобы пользователи входили в систему или создавали учетную запись через мою систему перед совершением покупки, как я могу гарантировать, что квитанция iTunes не будет дублирована?

Например, если пользователь совершает покупку,Приложение отправляет идентификатор пользователя и квитанцию ​​iTunes на мой сервер.Затем сервер сохраняет эту квитанцию ​​вместе с идентификатором пользователя в базе данных.В следующий раз, когда сервер захочет проверить покупки пользователей, мы можем получить все квитанции для этого заданного идентификатора пользователя из базы данных и запустить проверку.

Но если пользователь выходит из системы и входит в систему как другойпользователь и совершает другую покупку, квитанция будет снова отправлена ​​на сервер с другим идентификатором пользователя.Фактически, позволяя использовать одну покупку на неограниченных учетных записях пользователей.

Из-за того, что квитанции меняются со временем (автоматическое продление подписки и т. Д.), Я не думаю, что можно полагаться на получение квитанции.то же самое каждый раз, когда он отправляется на мой сервер и использует данные квитанции в качестве уникального идентификатора.

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

В идеале, я бы хотел систему, в которой, когда пользователь выходит из системы и входит (как другой пользователь или тот же), приложениеотправит квитанцию ​​на сервер, отменит любые одинаковые квитанции для всех существующих пользователей и свяжет эту новую квитанцию ​​с пользователем, который вошел в систему. Проблема в том, что не существует какого-либо уникального идентификатора дляданную квитанцию, которую я могу использовать для проверки дубликатов квитанций в моей системе.

Каков наилучший способ обнаружения дубликатов квитанций, отправленных на мой сервер (чтобы я мог соответствующим образом отсоединить старые квитанции)?


PS.Я думаю, что эта система наиболее важна для подписки и непотребляемых предметов.Для расходных материалов его всегда нужно будет связать с одним конкретным пользователем, и я могу просто сохранить transaction_id и original_transaction_id для этого расходного элемента, чтобы он не дублировался.

...