Ошибка при попытке проверить рецепт на стороне сервера: ошибка проверки квитанции iOS 21002 - PullRequest
0 голосов
/ 28 июня 2019

В моем приложении установлено приложение InAppPurchase с использованием SwiftyStoreKit , и я пытаюсь подтвердить свою квитанцию. Для этого я извлекаю его и отправляю в Apple.

Я знаю, что это не правильный способ сделать это, но я просто тестирую. Если я заставлю это работать плохо, сделайте это на стороне сервера. В любом случае, проблема в том, что ответ всегда 21002 , что, по мнению Apple, означает: Данные в свойстве квитанции были искажены или отсутствуют. Но когда я проверяю свою квитанцию, используя метод SwiftStore, она работает.

Вот код, который я использую, чтобы получить квитанцию ​​и отправить ее в яблоко (примечание: CarregaDados.callMethodJson, это просто функция с вызовом Alamofire внутри)

SwiftyStoreKit.fetchReceipt(forceRefresh: true) { result in
            switch result {
            case .success(let receiptData):
                let encryptedReceipt = receiptData.base64EncodedString(options: [])
                let parametros = ["receipt-data" : encryptedReceipt,
                                  "password" : "XXXXXX",
                                  "exclude-old-transactions" : true] as [String : Any]
                CarregaDados.callMethodJson(.post, parametros: parametros, 
                             url: "https://sandbox.itunes.apple.com/verifyReceipt", 
                             nomeCache: "", onCompletion: { (response) in
                    print(response)
                })

            case .error(let error):
                print("IAP: ERROR: \(error)")
            }
        }

Это всегда возвращает 21002 . Но когда я проверяю его с помощью SwiftyStoreKit, он работает и возвращает мне всю необходимую информацию:

let appleValidator = AppleReceiptValidator(service: .production, sharedSecret: "XXXXXX")
SwiftyStoreKit.verifyReceipt(using: appleValidator, forceRefresh: false) { result in
    switch result {
    case .success(let receipt):
        print("Verify receipt success: \(receipt)")
    case .error(let error):
        print("Verify receipt failed: \(error)")
    }
}

Так что я не знаю, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...