diff --git a/Veloria/Base/Networking/API/VPWalletAPI.swift b/Veloria/Base/Networking/API/VPWalletAPI.swift index c94fac4..69a93bc 100644 --- a/Veloria/Base/Networking/API/VPWalletAPI.swift +++ b/Veloria/Base/Networking/API/VPWalletAPI.swift @@ -16,9 +16,22 @@ class VPWalletAPI { ///获取支付模版 static func requestPayTemplate(isLoding: Bool = false, isToast: Bool = true, completer: ((_ model: VPPayTemplateModel?) -> Void)?) { + + if isLoding { + VPHUD.show() + } + + VPIAPManager.manager.requestProductData(isToast: isToast) { model in + if isLoding { + VPHUD.dismiss() + } + completer?(model) + } + } + + static func _requestPayTemplate(isToast: Bool = true, completer: ((_ model: VPPayTemplateModel?) -> Void)?) { var param = VPNetworkParameters(path: "/paySettingsV3") param.method = .get - param.isLoding = isLoding param.isToast = isToast VPNetwork.request(parameters: param) { (response: VPNetworkResponse) in diff --git a/Veloria/Libs/VPIAPManager/VPIAPManager.swift b/Veloria/Libs/VPIAPManager/VPIAPManager.swift index 274cc01..c62f0de 100644 --- a/Veloria/Libs/VPIAPManager/VPIAPManager.swift +++ b/Veloria/Libs/VPIAPManager/VPIAPManager.swift @@ -20,6 +20,12 @@ class VPIAPManager { ///成功回调 private var completionHandler: CompletionHandler? + ///获取支付模版回调 + private var productDataHandler: ((_ model: VPPayTemplateModel?) -> Void)? + + ///原始支付模版数据 + private var oldPayTemplateModel: VPPayTemplateModel? + private lazy var iapManager: JXIAPManager = { let manager = JXIAPManager() manager.delegate = self @@ -37,6 +43,7 @@ class VPIAPManager { ///开始内购 func start(model: VPPayTemplateItem, shortPlayId: String? = nil, videoId: String? = nil, isDiscount: Bool = false, hudShowView: UIView? = nil, handler: CompletionHandler? = nil) { +// self.iapManager.showCodeRedemption() if let _ = self.waitRestoreModel { VPToast.show(text: "veloria_pay_error_1".localized) @@ -132,9 +139,38 @@ class VPIAPManager { completer?(false) } } + + } + + ///获取支付数据 + func requestProductData(isToast: Bool = false, completer: ((_ model: VPPayTemplateModel?) -> Void)?) { + VPWalletAPI._requestPayTemplate(isToast: isToast) { [weak self] model in + guard let self = self else { return } + guard let model = model else { + completer?(nil) + return + } + self.productDataHandler = completer + self.oldPayTemplateModel = model + + var productIdArr: [String] = [] + + model.list_sub_vip?.forEach { item in + productIdArr.append(self.getProductId(templateId: item.ios_template_id) ?? "") + } + model.list_coins?.forEach { item in + productIdArr.append(self.getProductId(templateId: item.ios_template_id) ?? "") + } + self.iapManager.requestProductList(productIdArr: productIdArr) + } } + private func getProductId(templateId: String?) -> String? { + guard let templateId = templateId else { return nil } + return VPIAPManager.IAPPrefix + templateId + } + } //MARK: -------------- JXIAPManagerDelegate -------------- @@ -201,6 +237,44 @@ extension VPIAPManager: JXIAPManagerDelegate { self.completionHandler?(false) } + func jx_iapPayGotProducts(productIds: [SKProduct]) { + guard let payTemplateModel = self.oldPayTemplateModel else { return } + + var newCoinList: [VPPayTemplateItem] = [] + var newVipList: [VPPayTemplateItem] = [] + + payTemplateModel.list_coins?.forEach { item in + let productId = getProductId(templateId: item.ios_template_id) ?? "" + for product in productIds { + if productId == product.productIdentifier { + item.price = product.price.stringValue + item.currency = product.priceLocale.currencySymbol + newCoinList.append(item) + break + } + } + } + payTemplateModel.list_sub_vip?.forEach { item in + let productId = getProductId(templateId: item.ios_template_id) ?? "" + for product in productIds { + if productId == product.productIdentifier { + item.price = product.price.stringValue + item.currency = product.priceLocale.currencySymbol + newVipList.append(item) + break + } + } + } + + payTemplateModel.list_sub_vip = newVipList + payTemplateModel.list_coins = newCoinList + + productDataHandler?(payTemplateModel) + + self.productDataHandler = nil + self.oldPayTemplateModel = nil + } + } extension VPIAPManager { diff --git a/Veloria/Thirdparty/JXIAPManager/JXIAPManager.swift b/Veloria/Thirdparty/JXIAPManager/JXIAPManager.swift index 548ee76..89b3a05 100644 --- a/Veloria/Thirdparty/JXIAPManager/JXIAPManager.swift +++ b/Veloria/Thirdparty/JXIAPManager/JXIAPManager.swift @@ -162,7 +162,9 @@ class JXIAPManager: NSObject { extension JXIAPManager: SKProductsRequestDelegate { func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) { if self.operationType == .request { - self.delegate?.jx_iapPayGotProducts?(productIds: response.products) + DispatchQueue.main.async { + self.delegate?.jx_iapPayGotProducts?(productIds: response.products) + } self.operationType = .idle } else if self.operationType == .buy { diff --git a/资料/app账号信息.txt b/资料/app账号信息.txt index a55adbf..28edc0c 100644 --- a/资料/app账号信息.txt +++ b/资料/app账号信息.txt @@ -16,4 +16,6 @@ D-U-N-S :616751820 veloria@test.com Test@168 veloria1@test.com -Discover2024 \ No newline at end of file +Discover2024 +veloria2@test.com +Test@168 \ No newline at end of file