赞
踩
从何后台获取到可播放的剧集后,解下来需要解决用户在点击未解锁剧集时,如何解锁剧集的问题!
uniApp前端微短剧项目开源分享
开源地址:git开源下载地址
1.当用户切换到未购买的付费剧集时,会触发 onCheckIsCanPlay(func)注册的func回调函数。开发者需要在此回调函数中判断用户是否有足够的金币来播放该剧集。
2.如果用户有足够的金币,开发者可以进行扣币操作,并调用 PlayletManager 的 isCanPlay({ data, serialNo }) 函数,让播放器继续播放。其中,data 是加密后的数据,和 setCanPlaySerialList 的 data 参数定义一样。
3.如果用户没有足够的金币来播放剧集,则调用 PlayletManager 的 isCanPlay({ data, serialNo }) 函数,将 status 设置为 2(表示无法解锁)。此时,播放器会显示相应的 UI,提示用户需要充值才能继续观看。
onCheckIsCanPlay(param) {
const pm = this.pm
const {
dramaId,
serialNo
} = this.pm.getInfo()
// TODO: 碰到不可以解锁的剧集,会触发此事件,这里可以进行扣币解锁逻辑,如果用户无足够的币,可调用下面的this.isCanPlay设置
// 获取需要解锁的剧集ID
this.getEncryptData({
serialNo: serialNo,
}).then(res => {
// encryptedData是后台加密后的数据,具体实现见下面的加密章节
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
// 从加密的数据中获取可以播放结束剧集ID,在这个基础上加1后就是要解锁的剧集,这样可以实现不管用户点击的是
const seriesSeries = parseInt(res.end_serial_no) + 1;
// 这里做了个判断,如果用户点击了大于需要解锁的剧集则会弹出提示
if (seriesSeries < parseInt(serialNo)) {
uni.showToast({
title: '请先解锁第' + seriesSeries + '集',
icon: 'success',
duration: 2000
});
return
}
if (serialNo >= seriesSeries) {
// 调用购买剧集接口
uni.request({
url: MYurl + '/api/wxApi/buyDramaSeries',
method: 'POST',
header: {
'content-type': 'application/json', // 添加 content-type
"X-Tenant-Id": uni.getStorageSync('tenantId')
},
data: {
memberId: uni.getStorageSync('id'), //用户ID
dramaId: dramaId, //剧集ID
sysOrgCode: uni.getStorageSync('sysOrgCode'), //部门ID
tenantId: uni.getStorageSync('tenantId'), //租户ID
seriesSeries: seriesSeries, //解锁的剧集ID
unlockState: false //剧集是否解锁状态
},
success: (res) => {
// 如果余额充足,则提示购买成功
if (res.data.code !== 600) {
if (res.data.message != '') {
uni.showToast({
title: res.data.message,
icon: 'success',
duration: 1200,
});
}
this.getEncryptData({
serialNo: serialNo,
}).then(res => {
// 购买成功之后重新获取后台加密后的数据
this.pm.isCanPlay({
data: res.encryptedData,
serialNo: serialNo,
})
})
} else {
if (res.data.message != '') {
uni.showToast({
title: res.data.message,
icon: 'success',
duration: 2000,
});
}
// 如果购买失败调用showChargeDialog弹出充值弹窗即可,这里需要先注册下showChargeDialog
pm.showChargeDialog()
}
}
})
}
})
},
1、用户有两个方式会触发这个事件,一是用户在刷视频上划的时候,如果该剧集未解锁,则会触发,二是点击选集在点击未解锁的剧集的时候会触发
2、短剧这一块一向非常严格,所以还是建议用户消费完了之后给出消费金额的提示
3、解锁剧集支付使用的是虚拟支付,前提的是接通了虚拟支付,余额建议走自己的后台系统,会方便得多
体验可查看下方盼盼短剧,如果有不足或疑惑的地方欢迎大家一起讨论!后续将继续更新短剧播放器以及虚拟支付相关问题!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。