1.1.3发包
This commit is contained in:
parent
65d04d0aeb
commit
5bb65dc1f4
@ -264,6 +264,12 @@
|
|||||||
BFF5B2792DF679720044227A /* VPMoreVideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF5B2782DF679720044227A /* VPMoreVideoViewController.swift */; };
|
BFF5B2792DF679720044227A /* VPMoreVideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF5B2782DF679720044227A /* VPMoreVideoViewController.swift */; };
|
||||||
BFF5B4AF2DF6B6630044227A /* VPMutualCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF5B4AE2DF6B6630044227A /* VPMutualCollectionView.swift */; };
|
BFF5B4AF2DF6B6630044227A /* VPMutualCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF5B4AE2DF6B6630044227A /* VPMutualCollectionView.swift */; };
|
||||||
BFF5B6E52DF7C8590044227A /* VPEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF5B6E42DF7C8580044227A /* VPEmptyView.swift */; };
|
BFF5B6E52DF7C8590044227A /* VPEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF5B6E42DF7C8580044227A /* VPEmptyView.swift */; };
|
||||||
|
BFFFE7302E45E7F5001E92D2 /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = BFFFE72F2E45E7F5001E92D2 /* FirebaseAuth */; };
|
||||||
|
BFFFE7322E45E7F5001E92D2 /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = BFFFE7312E45E7F5001E92D2 /* FirebaseCore */; };
|
||||||
|
BFFFE7342E45E7F5001E92D2 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = BFFFE7332E45E7F5001E92D2 /* FirebaseFirestore */; };
|
||||||
|
BFFFE7362E45E7F5001E92D2 /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = BFFFE7352E45E7F5001E92D2 /* FirebaseMessaging */; };
|
||||||
|
BFFFE7382E45ED9D001E92D2 /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = BFFFE7372E45ED9D001E92D2 /* FirebaseMessaging */; };
|
||||||
|
BFFFE73A2E45ED9D001E92D2 /* FirebasePerformance in Frameworks */ = {isa = PBXBuildFile; productRef = BFFFE7392E45ED9D001E92D2 /* FirebasePerformance */; };
|
||||||
F939C04AD4003BA127F15C28 /* Pods_Veloria.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F57E87E765BF8D72A43DCA /* Pods_Veloria.framework */; };
|
F939C04AD4003BA127F15C28 /* Pods_Veloria.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F57E87E765BF8D72A43DCA /* Pods_Veloria.framework */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
@ -562,9 +568,15 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
BFFFE73A2E45ED9D001E92D2 /* FirebasePerformance in Frameworks */,
|
||||||
|
BFFFE7362E45E7F5001E92D2 /* FirebaseMessaging in Frameworks */,
|
||||||
F939C04AD4003BA127F15C28 /* Pods_Veloria.framework in Frameworks */,
|
F939C04AD4003BA127F15C28 /* Pods_Veloria.framework in Frameworks */,
|
||||||
|
BFFFE7382E45ED9D001E92D2 /* FirebaseMessaging in Frameworks */,
|
||||||
|
BFFFE7302E45E7F5001E92D2 /* FirebaseAuth in Frameworks */,
|
||||||
BFF5B2442DF050260044227A /* FacebookCore in Frameworks */,
|
BFF5B2442DF050260044227A /* FacebookCore in Frameworks */,
|
||||||
BFCCE1262DFBF57B00EDE165 /* FirebaseMessaging in Frameworks */,
|
BFCCE1262DFBF57B00EDE165 /* FirebaseMessaging in Frameworks */,
|
||||||
|
BFFFE7322E45E7F5001E92D2 /* FirebaseCore in Frameworks */,
|
||||||
|
BFFFE7342E45E7F5001E92D2 /* FirebaseFirestore in Frameworks */,
|
||||||
BFCCE1242DFBF57B00EDE165 /* FirebaseCore in Frameworks */,
|
BFCCE1242DFBF57B00EDE165 /* FirebaseCore in Frameworks */,
|
||||||
BFF5B2462DF050260044227A /* FacebookLogin in Frameworks */,
|
BFF5B2462DF050260044227A /* FacebookLogin in Frameworks */,
|
||||||
);
|
);
|
||||||
@ -1929,7 +1941,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.1.2;
|
MARKETING_VERSION = 1.1.3;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -1972,7 +1984,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.1.2;
|
MARKETING_VERSION = 1.1.3;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = com.qjwl168.veloria.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -2232,6 +2244,36 @@
|
|||||||
package = BFF5B2422DF050260044227A /* XCRemoteSwiftPackageReference "facebook-ios-sdk" */;
|
package = BFF5B2422DF050260044227A /* XCRemoteSwiftPackageReference "facebook-ios-sdk" */;
|
||||||
productName = FacebookLogin;
|
productName = FacebookLogin;
|
||||||
};
|
};
|
||||||
|
BFFFE72F2E45E7F5001E92D2 /* FirebaseAuth */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = BFCCE1222DFBF57B00EDE165 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
|
productName = FirebaseAuth;
|
||||||
|
};
|
||||||
|
BFFFE7312E45E7F5001E92D2 /* FirebaseCore */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = BFCCE1222DFBF57B00EDE165 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
|
productName = FirebaseCore;
|
||||||
|
};
|
||||||
|
BFFFE7332E45E7F5001E92D2 /* FirebaseFirestore */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = BFCCE1222DFBF57B00EDE165 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
|
productName = FirebaseFirestore;
|
||||||
|
};
|
||||||
|
BFFFE7352E45E7F5001E92D2 /* FirebaseMessaging */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = BFCCE1222DFBF57B00EDE165 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
|
productName = FirebaseMessaging;
|
||||||
|
};
|
||||||
|
BFFFE7372E45ED9D001E92D2 /* FirebaseMessaging */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = BFCCE1222DFBF57B00EDE165 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
|
productName = FirebaseMessaging;
|
||||||
|
};
|
||||||
|
BFFFE7392E45ED9D001E92D2 /* FirebasePerformance */ = {
|
||||||
|
isa = XCSwiftPackageProductDependency;
|
||||||
|
package = BFCCE1222DFBF57B00EDE165 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
|
||||||
|
productName = FirebasePerformance;
|
||||||
|
};
|
||||||
/* End XCSwiftPackageProductDependency section */
|
/* End XCSwiftPackageProductDependency section */
|
||||||
};
|
};
|
||||||
rootObject = 1B056DEC2DDABE2B007EE38D /* Project object */;
|
rootObject = 1B056DEC2DDABE2B007EE38D /* Project object */;
|
||||||
|
@ -8,6 +8,10 @@
|
|||||||
import UIKit
|
import UIKit
|
||||||
import FirebaseMessaging
|
import FirebaseMessaging
|
||||||
import FirebaseCore
|
import FirebaseCore
|
||||||
|
import FirebaseFirestore
|
||||||
|
import FirebaseAuth
|
||||||
|
import FirebasePerformance
|
||||||
|
|
||||||
|
|
||||||
extension AppDelegate {
|
extension AppDelegate {
|
||||||
///是否展示过通知提示
|
///是否展示过通知提示
|
||||||
|
@ -64,6 +64,12 @@ class VPTabBarController: UITabBarController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
VPRewardedAdManager.manager.loadAd()
|
VPRewardedAdManager.manager.loadAd()
|
||||||
|
|
||||||
|
VPIAPManager.manager.restore(isLoding: false) { isFinish in
|
||||||
|
if isFinish {
|
||||||
|
VPLoginManager.manager.updateUserInfo(completer: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,6 +9,13 @@ import UIKit
|
|||||||
|
|
||||||
class VPStatAPI: NSObject {
|
class VPStatAPI: NSObject {
|
||||||
|
|
||||||
|
enum ErrorEventKey: String {
|
||||||
|
case payCallback = "pay_callback" //支付成功,但是后台接口失败
|
||||||
|
case payRestore = "pay_restore" //restore 失败
|
||||||
|
case payCancel = "pay_cancel" //用户取消支付
|
||||||
|
case payError = "pay_error" //支付过程中的其它错误
|
||||||
|
}
|
||||||
|
|
||||||
///进入APP
|
///进入APP
|
||||||
static func requestEnterApp() {
|
static func requestEnterApp() {
|
||||||
|
|
||||||
@ -108,4 +115,51 @@ class VPStatAPI: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static func requestStatError(shortPlayId: String?, videoId: String?, eventKey: ErrorEventKey, errorMsg: String?, otherParamenters: [String : Any]? = nil) {
|
||||||
|
|
||||||
|
var eventName = ""
|
||||||
|
switch eventKey {
|
||||||
|
case .payCallback:
|
||||||
|
eventName = "pay callback failed"
|
||||||
|
|
||||||
|
case .payRestore:
|
||||||
|
eventName = "pay restore"
|
||||||
|
|
||||||
|
case .payCancel:
|
||||||
|
eventName = "user pay canceled"
|
||||||
|
|
||||||
|
default:
|
||||||
|
eventName = "platform pay failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
var parameters: [String : Any] = [
|
||||||
|
"userId" : VPLoginManager.manager.userInfo?.customer_id ?? "",
|
||||||
|
"event_name" : eventName,
|
||||||
|
"event_key" : eventKey.rawValue,
|
||||||
|
"short_play_id" : shortPlayId ?? "0",
|
||||||
|
"short_play_video_id" : videoId ?? "0"
|
||||||
|
]
|
||||||
|
|
||||||
|
if let errorMsg = errorMsg {
|
||||||
|
parameters["error_msg"] = errorMsg
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if let otherParamenters = otherParamenters {
|
||||||
|
otherParamenters.forEach {
|
||||||
|
parameters[$0] = $1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var param = VPNetworkParameters(path: "/event/add")
|
||||||
|
param.isLoding = false
|
||||||
|
param.isToast = false
|
||||||
|
param.parameters = parameters
|
||||||
|
|
||||||
|
VPNetwork.request(parameters: param) { (response: VPNetworkResponse<String>) in
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ class VPWalletAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
///校验内购
|
///校验内购
|
||||||
static func requestVerifyOrder(orderCode: String, payId: String, productId: String, transactionId: String, purchaseToken: String, completer: ((_ model: VPIAPVerifyModel?) -> Void)?) {
|
static func requestVerifyOrder(orderCode: String, payId: String, productId: String, transactionId: String, purchaseToken: String, completer: ((_ response: VPNetworkResponse<VPIAPVerifyModel>?) -> Void)?) {
|
||||||
var param = VPNetworkParameters(path: "/applePaid")
|
var param = VPNetworkParameters(path: "/applePaid")
|
||||||
param.parameters = [
|
param.parameters = [
|
||||||
"order_code" : orderCode,
|
"order_code" : orderCode,
|
||||||
@ -146,7 +146,7 @@ class VPWalletAPI {
|
|||||||
]
|
]
|
||||||
|
|
||||||
VPNetwork.request(parameters: param) { (response: VPNetworkResponse<VPIAPVerifyModel>) in
|
VPNetwork.request(parameters: param) { (response: VPNetworkResponse<VPIAPVerifyModel>) in
|
||||||
completer?(response.data)
|
completer?(response)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,12 @@ class VPStoreViewController: VPViewController {
|
|||||||
requestData()
|
requestData()
|
||||||
|
|
||||||
self.stackView.addArrangedSubview(self.tipView)
|
self.stackView.addArrangedSubview(self.tipView)
|
||||||
|
|
||||||
|
VPIAPManager.manager.restore(isLoding: false) { isFinish in
|
||||||
|
if isFinish {
|
||||||
|
VPLoginManager.manager.updateUserInfo(completer: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewWillAppear(_ animated: Bool) {
|
override func viewWillAppear(_ animated: Bool) {
|
||||||
|
@ -17,6 +17,9 @@ class VPIAPManager {
|
|||||||
|
|
||||||
static let manager = VPIAPManager()
|
static let manager = VPIAPManager()
|
||||||
|
|
||||||
|
private var shortPlayId: String?
|
||||||
|
private var videoId: String?
|
||||||
|
|
||||||
///成功回调
|
///成功回调
|
||||||
private var completionHandler: CompletionHandler?
|
private var completionHandler: CompletionHandler?
|
||||||
|
|
||||||
@ -39,7 +42,6 @@ class VPIAPManager {
|
|||||||
|
|
||||||
///开始内购
|
///开始内购
|
||||||
func start(model: VPPayTemplateItem, shortPlayId: String? = nil, videoId: String? = nil, isDiscount: Bool = false, hudShowView: UIView? = nil, handler: CompletionHandler? = nil) {
|
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 {
|
if let _ = self.waitRestoreModel {
|
||||||
VPToast.show(text: "veloria_pay_error_1".localized)
|
VPToast.show(text: "veloria_pay_error_1".localized)
|
||||||
@ -51,6 +53,8 @@ class VPIAPManager {
|
|||||||
handler?(false)
|
handler?(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
self.shortPlayId = shortPlayId
|
||||||
|
self.videoId = videoId
|
||||||
self.completionHandler = handler
|
self.completionHandler = handler
|
||||||
self.waitRestoreModel = VPWaitRestoreModel()
|
self.waitRestoreModel = VPWaitRestoreModel()
|
||||||
self.waitRestoreModel?.buyType = model.buy_type
|
self.waitRestoreModel?.buyType = model.buy_type
|
||||||
@ -98,6 +102,8 @@ class VPIAPManager {
|
|||||||
let receipt = waitRestoreModel.receipt,
|
let receipt = waitRestoreModel.receipt,
|
||||||
let transactionId = waitRestoreModel.transactionId
|
let transactionId = waitRestoreModel.transactionId
|
||||||
else {
|
else {
|
||||||
|
self.waitRestoreModel = nil
|
||||||
|
UserDefaults.vp_setObject(nil, forKey: kVPWaitRestoreIAPDefaultsKey)
|
||||||
if isLoding {
|
if isLoding {
|
||||||
VPToast.show(text: "veloria_pay_error_3".localized)
|
VPToast.show(text: "veloria_pay_error_3".localized)
|
||||||
}
|
}
|
||||||
@ -107,18 +113,33 @@ class VPIAPManager {
|
|||||||
if isLoding {
|
if isLoding {
|
||||||
VPHUD.show()
|
VPHUD.show()
|
||||||
}
|
}
|
||||||
VPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionId, purchaseToken: receipt) { model in
|
|
||||||
|
let verifyData = [
|
||||||
|
"order_code" : orderCode,
|
||||||
|
"pay_setting_id" : payId,
|
||||||
|
"pkg_name" : kVPAPPBundleIdentifier,
|
||||||
|
"transaction_id": transactionId,
|
||||||
|
"purchases_token" : receipt
|
||||||
|
]
|
||||||
|
|
||||||
|
let statParamenters: [String : Any] = [
|
||||||
|
"type" : isLoding ? "manual" : "auto",
|
||||||
|
"pay_data" : verifyData.toJsonString() ?? ""
|
||||||
|
]
|
||||||
|
VPStatAPI.requestStatError(shortPlayId: nil, videoId: nil, eventKey: .payRestore, errorMsg: "restore", otherParamenters: statParamenters)
|
||||||
|
|
||||||
|
VPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionId, purchaseToken: receipt) { response in
|
||||||
if isLoding {
|
if isLoding {
|
||||||
VPHUD.dismiss()
|
VPHUD.dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let model = model else {
|
guard let model = response?.data else {
|
||||||
completer?(false)
|
completer?(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let buyType = self.waitRestoreModel?.buyType
|
let buyType = self.waitRestoreModel?.buyType
|
||||||
self.waitRestoreModel = nil
|
self.waitRestoreModel = nil
|
||||||
UserDefaults.vp_setObject(self.waitRestoreModel, forKey: kVPWaitRestoreIAPDefaultsKey)
|
UserDefaults.vp_setObject(nil, forKey: kVPWaitRestoreIAPDefaultsKey)
|
||||||
|
|
||||||
if model.status == "success" {
|
if model.status == "success" {
|
||||||
if buyType == .subVip {
|
if buyType == .subVip {
|
||||||
@ -155,7 +176,7 @@ class VPIAPManager {
|
|||||||
//MARK: -------------- JXIAPManagerDelegate --------------
|
//MARK: -------------- JXIAPManagerDelegate --------------
|
||||||
extension VPIAPManager: JXIAPManagerDelegate {
|
extension VPIAPManager: JXIAPManagerDelegate {
|
||||||
|
|
||||||
func jx_iapPaySuccess(productId: String, receipt: String, transactionIdentifier: String?) {
|
func jx_iapPaySuccess(productId: String, receipt: String, transactionIdentifier: String) {
|
||||||
guard let orderCode = self.orderCode, let payId = self.payId else {
|
guard let orderCode = self.orderCode, let payId = self.payId else {
|
||||||
self.orderCode = nil
|
self.orderCode = nil
|
||||||
self.payId = nil
|
self.payId = nil
|
||||||
@ -170,20 +191,21 @@ extension VPIAPManager: JXIAPManagerDelegate {
|
|||||||
|
|
||||||
UserDefaults.vp_setObject(self.waitRestoreModel, forKey: kVPWaitRestoreIAPDefaultsKey)
|
UserDefaults.vp_setObject(self.waitRestoreModel, forKey: kVPWaitRestoreIAPDefaultsKey)
|
||||||
|
|
||||||
VPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionIdentifier ?? "", purchaseToken: receipt) { model in
|
VPWalletAPI.requestVerifyOrder(orderCode: orderCode, payId: payId, productId: productId, transactionId: transactionIdentifier, purchaseToken: receipt) { response in
|
||||||
VPHUD.dismiss()
|
VPHUD.dismiss()
|
||||||
|
|
||||||
self.orderCode = nil
|
self.orderCode = nil
|
||||||
self.payId = nil
|
self.payId = nil
|
||||||
|
|
||||||
guard let model = model else {
|
guard let model = response?.data else {
|
||||||
|
VPStatAPI.requestStatError(shortPlayId: self.shortPlayId, videoId: self.videoId, eventKey: .payCallback, errorMsg: response?.msg)
|
||||||
self.completionHandler?(false)
|
self.completionHandler?(false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let buyType = self.waitRestoreModel?.buyType
|
let buyType = self.waitRestoreModel?.buyType
|
||||||
self.waitRestoreModel = nil
|
self.waitRestoreModel = nil
|
||||||
UserDefaults.vp_setObject(self.waitRestoreModel, forKey: kVPWaitRestoreIAPDefaultsKey)
|
UserDefaults.vp_setObject(nil, forKey: kVPWaitRestoreIAPDefaultsKey)
|
||||||
|
|
||||||
if model.status == "success" {
|
if model.status == "success" {
|
||||||
if buyType == .subVip {
|
if buyType == .subVip {
|
||||||
@ -196,13 +218,14 @@ extension VPIAPManager: JXIAPManagerDelegate {
|
|||||||
NotificationCenter.default.post(name: VPIAPManager.buyVipFinishNotification, object: nil)
|
NotificationCenter.default.post(name: VPIAPManager.buyVipFinishNotification, object: nil)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
VPStatAPI.requestStatError(shortPlayId: self.shortPlayId, videoId: self.videoId, eventKey: .payCallback, errorMsg: model.status)
|
||||||
self.completionHandler?(false)
|
self.completionHandler?(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func jx_iapPayFailed(productId: String, code: JXIAPManagerCode) {
|
func jx_iapPayFailed(productId: String, code: JXIAPManagerCode, msg: String?) {
|
||||||
self.orderCode = nil
|
self.orderCode = nil
|
||||||
self.payId = nil
|
self.payId = nil
|
||||||
self.waitRestoreModel = nil
|
self.waitRestoreModel = nil
|
||||||
@ -214,6 +237,13 @@ extension VPIAPManager: JXIAPManagerDelegate {
|
|||||||
} else if code == .cancelled {
|
} else if code == .cancelled {
|
||||||
VPToast.show(text: "veloria_pay_error_4".localized)
|
VPToast.show(text: "veloria_pay_error_4".localized)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if code == .cancelled {
|
||||||
|
VPStatAPI.requestStatError(shortPlayId: self.shortPlayId, videoId: self.videoId, eventKey: .payCancel, errorMsg: "user cancel")
|
||||||
|
} else {
|
||||||
|
VPStatAPI.requestStatError(shortPlayId: self.shortPlayId, videoId: self.videoId, eventKey: .payError, errorMsg: msg)
|
||||||
|
}
|
||||||
|
|
||||||
self.completionHandler?(false)
|
self.completionHandler?(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ class VPWaitRestoreModel: VPModel, NSSecureCoding {
|
|||||||
coder.encode(productId, forKey: "productId")
|
coder.encode(productId, forKey: "productId")
|
||||||
coder.encode(receipt, forKey: "receipt")
|
coder.encode(receipt, forKey: "receipt")
|
||||||
coder.encode(buyType?.rawValue, forKey: "buyType")
|
coder.encode(buyType?.rawValue, forKey: "buyType")
|
||||||
|
coder.encode(transactionId, forKey: "transactionId")
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
@ -39,6 +40,7 @@ class VPWaitRestoreModel: VPModel, NSSecureCoding {
|
|||||||
payId = coder.decodeObject(of: NSString.self, forKey: "payId") as? String
|
payId = coder.decodeObject(of: NSString.self, forKey: "payId") as? String
|
||||||
productId = coder.decodeObject(of: NSString.self, forKey: "productId") as? String
|
productId = coder.decodeObject(of: NSString.self, forKey: "productId") as? String
|
||||||
receipt = coder.decodeObject(of: NSString.self, forKey: "receipt") as? String
|
receipt = coder.decodeObject(of: NSString.self, forKey: "receipt") as? String
|
||||||
|
transactionId = coder.decodeObject(of: NSString.self, forKey: "transactionId") as? String
|
||||||
if let type = coder.decodeObject(of: NSString.self, forKey: "buyType") as? String {
|
if let type = coder.decodeObject(of: NSString.self, forKey: "buyType") as? String {
|
||||||
buyType = VPWalletAPI.BuyType(rawValue: type)
|
buyType = VPWalletAPI.BuyType(rawValue: type)
|
||||||
}
|
}
|
||||||
|
@ -12,9 +12,9 @@ import StoreKit
|
|||||||
/// 获取到可购买商品列表
|
/// 获取到可购买商品列表
|
||||||
@objc optional func jx_iapPayGotProducts(products: [SKProduct])
|
@objc optional func jx_iapPayGotProducts(products: [SKProduct])
|
||||||
/// 购买成功
|
/// 购买成功
|
||||||
@objc optional func jx_iapPaySuccess(productId: String, receipt: String, transactionIdentifier: String?)
|
@objc optional func jx_iapPaySuccess(productId: String, receipt: String, transactionIdentifier: String)
|
||||||
/// 购买失败
|
/// 购买失败
|
||||||
@objc optional func jx_iapPayFailed(productId: String, code: JXIAPManagerCode)
|
@objc optional func jx_iapPayFailed(productId: String, code: JXIAPManagerCode, msg: String?)
|
||||||
/// 恢复商品(仅限永久有效商品)
|
/// 恢复商品(仅限永久有效商品)
|
||||||
@objc optional func iapPayRestore(productIds: [String], transactionIds: [String])
|
@objc optional func iapPayRestore(productIds: [String], transactionIds: [String])
|
||||||
// /// 加载
|
// /// 加载
|
||||||
@ -172,7 +172,7 @@ extension JXIAPManager: SKProductsRequestDelegate {
|
|||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
if let productId = self.productId {
|
if let productId = self.productId {
|
||||||
self.productId = nil
|
self.productId = nil
|
||||||
self.delegate?.jx_iapPayFailed?(productId: productId, code: .noProduct)
|
self.delegate?.jx_iapPayFailed?(productId: productId, code: .noProduct, msg: nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -251,9 +251,9 @@ extension JXIAPManager {
|
|||||||
|
|
||||||
switch error?.code {
|
switch error?.code {
|
||||||
case SKError.paymentCancelled:
|
case SKError.paymentCancelled:
|
||||||
self.delegate?.jx_iapPayFailed?(productId: productId, code: .cancelled)
|
self.delegate?.jx_iapPayFailed?(productId: productId, code: .cancelled, msg: error?.localizedDescription)
|
||||||
default:
|
default:
|
||||||
self.delegate?.jx_iapPayFailed?(productId: productId, code: .unknown)
|
self.delegate?.jx_iapPayFailed?(productId: productId, code: .unknown, msg: error?.localizedDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user