<SKPaymentQueue:0x281194d90>:付款已完成,但出现错误:错误域=ASDErrorDomain代码=500“未处理的异常”

9 in-app-purchase ios swift swiftui

我正在尝试在我的应用程序内进行应用程序内购买,但由于某种原因,当我输入我的 Apple ID 和密码时,我在日志上收到错误消息,并且 UI 上没有任何反应。我需要在试飞时上传我的应用程序或类似的东西才能从我的应用程序购买物品?我已添加付款方式和税务信息。

\n

我只是从我的角度调用购买产品方法。

\n

错误:

\n
2021-09-14 19:06:01.857244+0300 iGrow Goals[697:72415] <SKPaymentQueue: 0x2802709f0>: Payment completed with error: Error Domain=ASDErrorDomain Code=500 "Unhandled exception" UserInfo={NSUnderlyingError=0x280ec2610 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed" UserInfo={NSLocalizedFailureReason=The verify credentials call failed., NSLocalizedDescription=Authentication Failed, NSUnderlyingError=0x280ec2700 {Error Domain=AMSServerErrorDomain Code=-5000 "The operation couldn\xe2\x80\x99t be completed. (AMSServerErrorDomain error -5000.)" UserInfo={NSLocalizedDescription=The operation couldn\xe2\x80\x99t be completed. (AMSServerErrorDomain error -5000.)}}}}, NSLocalizedFailureReason=An unknown error occurred, NSLocalizedDescription=Unhandled exception}\n
Run Code Online (Sandbox Code Playgroud)\n

StoreManager.swift:

\n
//\n//  StoreManager.swift\n//  iGrow Goals\n//\n//  Created by George Sepetadelis on 30/8/21.\n//\n\nimport Foundation\nimport StoreKit\n\nclass StoreManager: NSObject, ObservableObject, SKProductsRequestDelegate {\n    \n    @Published var myProducts = [SKProduct]()\n    var request: SKProductsRequest!\n    \n    @Published var transactionState: SKPaymentTransactionState?\n    \n    func enablePremiumPlan() {\n        \n    }\n    \n    func purchaseProduct(product: SKProduct) {\n        if SKPaymentQueue.canMakePayments() {\n            let payment = SKPayment(product: product)\n            SKPaymentQueue.default().add(payment)\n        } else {\n            print("User can't make payment.")\n        }\n    }\n    \n    \n    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {\n        for transaction in transactions {\n            switch transaction.transactionState {\n            case .purchasing:\n                transactionState = .purchasing\n            case .purchased:\n                UserDefaults.standard.setValue(true, forKey: transaction.payment.productIdentifier)\n                queue.finishTransaction(transaction)\n                print("payment success")\n                transactionState = .purchased\n                enablePremiumPlan()\n            case .restored:\n                UserDefaults.standard.setValue(true, forKey: transaction.payment.productIdentifier)\n                queue.finishTransaction(transaction)\n                transactionState = .restored\n                enablePremiumPlan()\n            case .failed, .deferred:\n                queue.finishTransaction(transaction)\n                transactionState = .failed\n                print("payment failed")\n            default:\n                queue.finishTransaction(transaction)\n                print("default")\n                \n            }\n        }\n    }\n    \n    func getProducts(productIDs: [String]) {\n        print("Start requesting products ...")\n        let request = SKProductsRequest(productIdentifiers: Set(productIDs))\n        request.delegate = self\n        request.start()\n    }\n    \n    \n    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {\n        print("Did receive response")\n        \n        if !response.products.isEmpty {\n            for fetchedProduct in response.products {\n                DispatchQueue.main.async {\n                    self.myProducts.append(fetchedProduct)\n                }\n            }\n        }\n        \n        for invalidIdentifier in response.invalidProductIdentifiers {\n            print("Invalid identifiers found: \\(invalidIdentifier)")\n        }\n    }\n    \n    func request(_ request: SKRequest, didFailWithError error: Error) {\n        print("Request did fail: \\(error)")\n    }\n    \n}\n
Run Code Online (Sandbox Code Playgroud)\n

lor*_*sum 2

直接从 Xcode 测试应用内购买时,请尝试使用沙盒帐户。

您的常规帐户将在试飞和 App Store 中运行。

https://developer.apple.com/documentation/storekit/original_api_for_in-app_purchase/testing_in-app_purchases_with_sandbox