Проверьте, соответствует ли AppStore Receipt текущей учетной записи App Store с помощью Swift

Как я могу проверить с помощью Swift, соответствует ли квитанция App Store на устройстве iOS учетной записи, в которую я сейчас вошел в App Store? Вот в чем проблема. Мои действия:

  1. Я покупаю подписку с учетной записью №1
  2. Получение квитанции (см. Код ниже)
  3. Я отправляю квитанцию ​​с помощью Swift URLSession в Apple через свой сервер, пока все в порядке
  4. Я выхожу из текущей учетной записи песочницы №1
  5. Я вхожу в учетную запись песочницы №2
  6. Я отправляю квитанцию ​​с помощью Swift URLSession, но квитанция устарела, связана с учетной записью №1 (я даже пытался подождать 60 минут)
  7. *** Если я сделаю покупку из учетной записи № 2 сейчас или восстановлю ее, вызвав метод restoreCompletedTransactions() SKPaymentQueue, или использую SKReceiptRefreshRequest, на устройстве появится новая квитанция, но до этого я понятия не имею, как правильно выполнить проверку, приложение не знает, сменил ли пользователь учетную запись Appstore.

Есть ли способ явно проверить, является ли квитанция той, которая мне нужна, и соответствует ли она учетной записи App Store?

Я получаю сам чек стандартным способом

      if let appStoreReceiptURL = Bundle.main.appStoreReceiptURL,
    FileManager.default.fileExists(atPath: appStoreReceiptURL.path) {

    do {
        let receiptData = try Data(contentsOf: appStoreReceiptURL, options: .alwaysMapped)
        print(receiptData)

        let receiptString = receiptData.base64EncodedString(options: [])

        // Read receiptData
    }
    catch { print("Couldn't read receipt data with error: " + error.localizedDescription) }
}

0 ответов

Другие вопросы по тегам