paymentQueue всегда идет на опцию .restored - PullRequest
0 голосов
/ 07 августа 2020

Я столкнулся с очень странным поведением, так как код не был изменен. Мне кажется, что это проблема с версией c, так как она возникает из ниоткуда

сценарий: когда я пытаюсь купить продукт, используя

let payment = SKPayment(product: product)
    SKPaymentQueue.default().add(payment)

покупка яблока по умолчанию или любое другое всплывающее окно, не отображаемое

, элемент управления переходит непосредственно в восстановленное transactionState

public func paymentQueue(_: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    DispatchQueue.main.async {
        for transaction in transactions {
            switch transaction.transactionState {
            case .purchased:
                self.complete(transaction: transaction)
                break
            case .failed:
                hideLoader()
                self.fail(transaction: transaction)
                break
            case .restored:
                hideLoader()
                self.restore(transaction: transaction)
                break
            case .deferred:
                hideLoader()
                break
            case .purchasing:
                showLoader()
                break
            @unknown default:
                break
            }
        }
    }
}

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

После этой функции мы проверяем получение и получение возвращает

"pending_renewal_info": [
    {
        "expiration_intent": "1",
        "auto_renew_product_id": "BUNDLE_ID",
        "original_transaction_id": "transaction_id",
        "is_in_billing_retry_period": "0",
        "product_id": "PRODUCT ID",
        "auto_renew_status": "0"
    }
]

Я не уверен, почему expiration_intent в этом случае приходит 1

...