IAP квитанция равна нулю после покупки - PullRequest
0 голосов
/ 11 июля 2019

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

public func fetchReceipt() -> String? {
    if let receiptURL = Bundle.main.appStoreReceiptURL,
        let data = try? Data(contentsOf: receiptURL) {
        let data64 = data.base64EncodedString()
        return data64
    } else {
        return nil
    }
}

private func processTransactions(_ queue: SKPaymentQueue,
                                 updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        switch transaction.transactionState {
        case .purchased:
            complete(transaction: transaction)
        case .failed:
            fail(transaction: transaction)
        case .restored:
            restore(transaction: transaction)
        case .deferred:
            print("IAPHelper: deferred...")
        case .purchasing:
            print("IAPHelper: purchasing...")
        default:
            break
        }
    }
}


private func complete(transaction: SKPaymentTransaction) {        
    SKPaymentQueue.default().finishTransaction(transaction)
    if let receipt = fetchReceipt() {
        deliverPurchaseNotificationFor(identifier: transaction.payment.productIdentifier)
    } else {
        print("receipt is nil")
    }
}
...