132 lines
4.4 KiB
Swift
132 lines
4.4 KiB
Swift
//
|
|
// XSStoreAPI.swift
|
|
// XSeri
|
|
//
|
|
// Created by 长沙鸿瑶 on 2026/3/17.
|
|
//
|
|
|
|
import UIKit
|
|
import SmartCodable
|
|
import JXIAPManager
|
|
|
|
struct XSStoreAPI {
|
|
enum BuyType: String, SmartCaseDefaultable {
|
|
case coins = "coins"
|
|
case subVip = "sub_vip"
|
|
case subCoins = "sub_coins"
|
|
case vip = "vip"
|
|
}
|
|
|
|
///创建内购订单
|
|
static func requestCreateOrder(payId: String, shortPlayId: String, videoId: String, isDiscount: Bool = false, identifierDiscount: String? = nil) async -> XSIapOrderModel? {
|
|
|
|
let parameters: [String : Any] = [
|
|
"payment_channel" : "apple",
|
|
"short_play_id" : shortPlayId,
|
|
"video_id" : videoId,
|
|
"pay_setting_id" : payId,
|
|
"is_discount" : isDiscount ? 1 : 0,
|
|
"product_discount" : identifierDiscount ?? "",
|
|
]
|
|
|
|
var param = XSNetwork.Parameters(path: "/createOrder")
|
|
param.method = .post
|
|
param.isLoding = false
|
|
param.isToast = false
|
|
param.parameters = parameters
|
|
let response: XSNetwork.Response<XSIapOrderModel> = await XSNetwork.request(parameters: param)
|
|
guard let data = response.data else {
|
|
XSToast.show("network_error_2".localized)
|
|
return nil
|
|
}
|
|
if let message = data.message, message.count > 0 {
|
|
if response.data?.code == 30007 {
|
|
XSToast.show("pay_error_1".localized)
|
|
} else {
|
|
XSToast.show(message)
|
|
}
|
|
return nil
|
|
} else {
|
|
return response.data
|
|
}
|
|
|
|
}
|
|
|
|
///校验订单
|
|
static func requestVerifyOrder(_ parameters: [String : Any]) async -> XSNetwork.Response<XSIapVerifyModel> {
|
|
var param = XSNetwork.Parameters(path: "/applePaid")
|
|
param.method = .post
|
|
param.isLoding = false
|
|
param.parameters = parameters
|
|
let response: XSNetwork.Response<XSIapVerifyModel> = await XSNetwork.request(parameters: param)
|
|
|
|
return response
|
|
}
|
|
|
|
///获取支付模版
|
|
static func requestPayTemplate(isLoding: Bool = false, isToast: Bool = true) async -> XSPayDateModel? {
|
|
let parameters = [
|
|
"discount" : "1",
|
|
"purchases_token" : JXIAPManager.manager.getAppStoreReceipt() ?? "",
|
|
]
|
|
|
|
var param = XSNetwork.Parameters(path: "/paySettingsV4")
|
|
param.method = .post
|
|
param.isLoding = isLoding
|
|
param.isToast = isToast
|
|
param.parameters = parameters
|
|
|
|
let response: XSNetwork.Response<XSPayDateModel> = await XSNetwork.request(parameters: param)
|
|
return response.data
|
|
}
|
|
|
|
///挽留支付项
|
|
static func requestPayRetainInfo() async -> XSPayDateModel? {
|
|
let parameters = [
|
|
"purchases_token" : JXIAPManager.manager.getAppStoreReceipt() ?? "",
|
|
"discount" : "1",
|
|
]
|
|
|
|
var param = XSNetwork.Parameters(path: "/payRetrieveSettings")
|
|
param.method = .post
|
|
param.isLoding = false
|
|
param.isToast = false
|
|
param.parameters = parameters
|
|
|
|
let response: XSNetwork.Response<XSPayDateModel> = await XSNetwork.request(parameters: param)
|
|
if (response.data?.list_coins?.count ?? 0) > 0 || (response.data?.list_sub_vip?.count ?? 0) > 0 {
|
|
return response.data
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
static func requestBuyRecords(page: Int) async -> XSNetwork.List<XSBuyRecordsModel>? {
|
|
let parameters = [
|
|
"page_size" : 20,
|
|
"current_page" : page,
|
|
]
|
|
|
|
var param = XSNetwork.Parameters(path: "/getCustomerBuyRecords")
|
|
param.method = .get
|
|
param.parameters = parameters
|
|
|
|
let response: XSNetwork.Response<XSNetwork.List<XSBuyRecordsModel>> = await XSNetwork.request(parameters: param)
|
|
return response.data
|
|
}
|
|
|
|
static func reuqestSendCoinRecord(page: Int) async -> XSNetwork.List<XSSendCoinRecordModel>? {
|
|
let parameters = [
|
|
"page_size" : 20,
|
|
"current_page" : page,
|
|
]
|
|
|
|
var param = XSNetwork.Parameters(path: "/sendCoinList")
|
|
param.method = .post
|
|
param.parameters = parameters
|
|
|
|
let response: XSNetwork.Response<XSNetwork.List<XSSendCoinRecordModel>> = await XSNetwork.request(parameters: param)
|
|
return response.data
|
|
}
|
|
}
|