购买流程优化,购买记录开发
This commit is contained in:
parent
b710eb9ac1
commit
c73ae42733
@ -24,7 +24,7 @@ class SPWalletAPI: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
///创建内购订单
|
///创建内购订单
|
||||||
static func requestCreateOrder(payId: String, shortPlayId: String = "0", videoId: String = "0", completer: ((_ orderModel: SPIAPOrderModel?) -> Void)?) {
|
static func requestCreateOrder(payId: String, shortPlayId: String, videoId: String, completer: ((_ orderModel: SPIAPOrderModel?) -> Void)?) {
|
||||||
var param = SPNetworkParameters(path: "/createOrder")
|
var param = SPNetworkParameters(path: "/createOrder")
|
||||||
param.parameters = [
|
param.parameters = [
|
||||||
"payment_channel" : "apple",
|
"payment_channel" : "apple",
|
||||||
|
@ -78,11 +78,17 @@ class SPPlayerDetailViewController: SPPlayerListViewController {
|
|||||||
|
|
||||||
override func play() {
|
override func play() {
|
||||||
guard let videoInfo = self.viewModel.currentPlayer?.videoInfo else { return }
|
guard let videoInfo = self.viewModel.currentPlayer?.videoInfo else { return }
|
||||||
|
//视频需要付费
|
||||||
if videoInfo.is_lock == true {
|
if videoInfo.is_lock == true {
|
||||||
self.pause()
|
self.pause()
|
||||||
|
//我的金币
|
||||||
|
let myCoin = SPLoginManager.manager.userInfo?.coin_left_total ?? 0
|
||||||
|
//解锁视频需要的金币
|
||||||
|
let videoCoin = videoInfo.coins ?? 0
|
||||||
|
|
||||||
self.onPlayBuy()
|
if myCoin < videoCoin {
|
||||||
|
self.onPlayBuy()
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +155,11 @@ extension SPPlayerDetailViewController {
|
|||||||
|
|
||||||
///打开支付页面
|
///打开支付页面
|
||||||
private func onPlayBuy() {
|
private func onPlayBuy() {
|
||||||
|
guard let videoInfo = self.viewModel.currentPlayer?.videoInfo else { return }
|
||||||
|
|
||||||
let view = SPPlayBuyView()
|
let view = SPPlayBuyView()
|
||||||
|
view.shortPlayId = videoInfo.short_play_id
|
||||||
|
view.videoId = videoInfo.short_play_video_id
|
||||||
view.present(in: nil)
|
view.present(in: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,18 @@ import UIKit
|
|||||||
|
|
||||||
class SPPlayBuyView: HWPanModalContentView {
|
class SPPlayBuyView: HWPanModalContentView {
|
||||||
|
|
||||||
|
var shortPlayId: String? {
|
||||||
|
didSet {
|
||||||
|
rechargeView.shortPlayId = shortPlayId
|
||||||
|
memberView.shortPlayId = shortPlayId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var videoId: String? {
|
||||||
|
didSet {
|
||||||
|
rechargeView.videoId = videoId
|
||||||
|
memberView.videoId = videoId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//MARK: UI属性
|
//MARK: UI属性
|
||||||
private lazy var bgView: UIImageView = {
|
private lazy var bgView: UIImageView = {
|
||||||
@ -54,11 +66,18 @@ class SPPlayBuyView: HWPanModalContentView {
|
|||||||
|
|
||||||
private lazy var rechargeView: SPCoinRechargeView = {
|
private lazy var rechargeView: SPCoinRechargeView = {
|
||||||
let view = SPCoinRechargeView()
|
let view = SPCoinRechargeView()
|
||||||
|
view.userInfo = SPLoginManager.manager.userInfo
|
||||||
|
view.rechargeFinishHandle = { [weak self] in
|
||||||
|
self?.handleBuyFinish()
|
||||||
|
}
|
||||||
return view
|
return view
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private lazy var memberView: SPMemberRechargeView = {
|
private lazy var memberView: SPMemberRechargeView = {
|
||||||
let view = SPMemberRechargeView()
|
let view = SPMemberRechargeView()
|
||||||
|
view.buyFinishHandle = { [weak self] in
|
||||||
|
self?.handleBuyFinish()
|
||||||
|
}
|
||||||
return view
|
return view
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -95,6 +114,17 @@ class SPPlayBuyView: HWPanModalContentView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension SPPlayBuyView {
|
||||||
|
///购买成功
|
||||||
|
private func handleBuyFinish() {
|
||||||
|
SPLoginManager.manager.updateUserInfo { [weak self] in
|
||||||
|
guard let self = self else { return }
|
||||||
|
self.rechargeView.userInfo = SPLoginManager.manager.userInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
extension SPPlayBuyView {
|
extension SPPlayBuyView {
|
||||||
|
|
||||||
private func _setupUI() {
|
private func _setupUI() {
|
||||||
|
@ -10,6 +10,14 @@ import SmartCodable
|
|||||||
|
|
||||||
class SPBuyRecordsModel: SPModel, SmartCodable {
|
class SPBuyRecordsModel: SPModel, SmartCodable {
|
||||||
|
|
||||||
|
var short_play_id: String?
|
||||||
|
var coins: Int?
|
||||||
|
var short_play_video_id: String?
|
||||||
|
var coin_type: Int?
|
||||||
|
var created_at: String?
|
||||||
|
var episode: String?
|
||||||
|
var image_url: String?
|
||||||
|
var name: String?
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,9 @@ class SPCoinRechargeView: UIView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var shortPlayId: String?
|
||||||
|
var videoId: String?
|
||||||
|
|
||||||
//MARK: UI属性
|
//MARK: UI属性
|
||||||
private lazy var coinNameLabel: UILabel = {
|
private lazy var coinNameLabel: UILabel = {
|
||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
@ -136,8 +139,9 @@ extension SPCoinRechargeView: UICollectionViewDelegate, UICollectionViewDataSour
|
|||||||
|
|
||||||
guard let model = self.dataArr?[indexPath.row] else { return }
|
guard let model = self.dataArr?[indexPath.row] else { return }
|
||||||
|
|
||||||
SPIAPManager.manager.startRecharge(model: model) { [weak self] finish in
|
SPIAPManager.manager.startRecharge(model: model, shortPlayId: shortPlayId, videoId: videoId) { [weak self] finish in
|
||||||
if finish {
|
if finish {
|
||||||
|
SPToast.show(text: "success".localized)
|
||||||
self?.rechargeFinishHandle?()
|
self?.rechargeFinishHandle?()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,10 @@ class SPConsumptionRecordsCell: SPTableViewCell {
|
|||||||
|
|
||||||
var model: SPBuyRecordsModel? {
|
var model: SPBuyRecordsModel? {
|
||||||
didSet {
|
didSet {
|
||||||
|
titleLabel.text = "Purchase Single Episode".localized
|
||||||
|
timeLabel.text = model?.created_at
|
||||||
|
desLabel.text = "Ep.\(model?.episode ?? "") \(model?.name ?? "")"
|
||||||
|
coinLabel.text = "-\(model?.coins ?? 0) Coins"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,10 +49,6 @@ class SPConsumptionRecordsCell: SPTableViewCell {
|
|||||||
|
|
||||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
titleLabel.text = "Purchase Single Episode"
|
|
||||||
timeLabel.text = "2024-6-10 23:41:18"
|
|
||||||
desLabel.text = "Ep.8 Romantic Flash Marriage In Progress"
|
|
||||||
coinLabel.text = "-500 Coins"
|
|
||||||
|
|
||||||
_setupUI()
|
_setupUI()
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,9 @@ class SPMemberRechargeView: UIView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var shortPlayId: String?
|
||||||
|
var videoId: String?
|
||||||
|
|
||||||
//MARK: UI属性
|
//MARK: UI属性
|
||||||
private lazy var titleLabel: UILabel = {
|
private lazy var titleLabel: UILabel = {
|
||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
@ -101,8 +104,9 @@ extension SPMemberRechargeView: UICollectionViewDelegate, UICollectionViewDataSo
|
|||||||
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
||||||
guard let model = dataArr?[indexPath.row] else { return }
|
guard let model = dataArr?[indexPath.row] else { return }
|
||||||
|
|
||||||
SPIAPManager.manager.startRecharge(model: model) { [weak self] finish in
|
SPIAPManager.manager.startRecharge(model: model, shortPlayId: shortPlayId, videoId: videoId) { [weak self] finish in
|
||||||
if finish {
|
if finish {
|
||||||
|
SPToast.show(text: "success".localized)
|
||||||
self?.buyFinishHandle?()
|
self?.buyFinishHandle?()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ class SPIAPManager: NSObject {
|
|||||||
private var payId: String?
|
private var payId: String?
|
||||||
|
|
||||||
///开始内购
|
///开始内购
|
||||||
func startRecharge(model: SPPayTemplateItem, handler: CompletionHandler? = nil) {
|
func startRecharge(model: SPPayTemplateItem, shortPlayId: String? = nil, videoId: String? = nil, handler: CompletionHandler? = nil) {
|
||||||
guard let payId = model.id else {
|
guard let payId = model.id else {
|
||||||
handler?(false)
|
handler?(false)
|
||||||
return
|
return
|
||||||
@ -39,7 +39,7 @@ class SPIAPManager: NSObject {
|
|||||||
|
|
||||||
SPHUD.show()
|
SPHUD.show()
|
||||||
|
|
||||||
SPWalletAPI.requestCreateOrder(payId: payId) { orderModel in
|
SPWalletAPI.requestCreateOrder(payId: payId, shortPlayId: shortPlayId ?? "0", videoId: videoId ?? "0") { orderModel in
|
||||||
guard let orderModel = orderModel else {
|
guard let orderModel = orderModel else {
|
||||||
SPHUD.dismiss()
|
SPHUD.dismiss()
|
||||||
self.completionHandler?(false)
|
self.completionHandler?(false)
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
"Home" = "Home";
|
"Home" = "Home";
|
||||||
|
"success" = "success";
|
||||||
"For You" = "For You";
|
"For You" = "For You";
|
||||||
"Error" = "Error";
|
"Error" = "Error";
|
||||||
"Profile" = "Profile";
|
"Profile" = "Profile";
|
||||||
@ -88,6 +89,7 @@
|
|||||||
"This episode is locked" = "This episode is locked";
|
"This episode is locked" = "This episode is locked";
|
||||||
"Unlock now for" = "Unlock now for";
|
"Unlock now for" = "Unlock now for";
|
||||||
"Unlock the previous episode" = "Unlock the previous episode";
|
"Unlock the previous episode" = "Unlock the previous episode";
|
||||||
|
"Purchase Single Episode" = "Purchase Single Episode";
|
||||||
|
|
||||||
///请购买上一集提示
|
///请购买上一集提示
|
||||||
"kAlertMessage_01" = "The previous episode of this series has not been unlocked yet. Please unlock the previous episode first.";
|
"kAlertMessage_01" = "The previous episode of this series has not been unlocked yet. Please unlock the previous episode first.";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user