|
@@ -534,6 +534,27 @@ extension PurchaseManager: SKPaymentTransactionObserver {
|
|
|
case .failed:
|
|
|
|
|
|
SKPaymentQueue.default().finishTransaction(transaction)
|
|
|
+
|
|
|
+ if let error = transaction.error as NSError? {
|
|
|
+ // 1. 检查内层错误
|
|
|
+ if let underlyingError = error.userInfo[NSUnderlyingErrorKey] as? NSError {
|
|
|
+ if underlyingError.domain == "ASDServerErrorDomain" && underlyingError.code == 3532 {
|
|
|
+ print("用户已订阅,禁止重复购买")
|
|
|
+ restorePremium()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 2. 检查外层 SKError
|
|
|
+ else if error.domain == SKErrorDomain {
|
|
|
+ switch SKError.Code(rawValue: error.code) {
|
|
|
+ case .unknown:
|
|
|
+ print("未知错误,可能是服务器问题")
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// Transaction was cancelled or failed before being added to the server queue.
|
|
|
var message = "Payment Failed"
|
|
|
if let error = transaction.error as? SKError,
|
|
@@ -619,7 +640,7 @@ extension PurchaseManager {
|
|
|
guard let self = self else { return }
|
|
|
if let data = data,
|
|
|
let jsonResponse = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
|
|
|
- debugPrint("PurchaseManager verifyPayResult = \(jsonResponse)")
|
|
|
+// debugPrint("PurchaseManager verifyPayResult = \(jsonResponse)")
|
|
|
let status = jsonResponse["status"]
|
|
|
if let status = status as? String, status == "21007" {
|
|
|
self.verifyPayResult(transaction: transaction, useSandBox: true)
|