279 lines
8.5 KiB
JavaScript
279 lines
8.5 KiB
JavaScript
var plugin = requirePlugin("playlet-plugin");
|
||
|
||
import { urlParamsToObject, objectToQueryString } from "./utils";
|
||
|
||
import { newvideoread, addkeep, chasingdramadel } from "@/api/pay";
|
||
// 点击按钮触发此函数跳转到播放器页面
|
||
function navigateToPlayer(obj) {
|
||
// 下面的${dramaId}变量,需要替换成小程序管理后台的媒资管理上传的剧的dramaId
|
||
// 变量${srcAppid}是提审方appid
|
||
// 变量${serialNo}是活动的页面路径
|
||
// 变量${extParam}是分享参数,分享的卡片和二维码会在分享的链接上携带此参数
|
||
const { extParam, dramaId, srcAppid } = obj;
|
||
wx.navigateTo({
|
||
url: `plugin-private://wx94a6522b1d640c3b/pages/playlet/playlet?dramaId=${dramaId}&srcAppid=${srcAppid}&extParam=${
|
||
extParam || ""
|
||
}`,
|
||
});
|
||
}
|
||
|
||
const proto = {
|
||
// data: {
|
||
// // 可通过this.data访问
|
||
// playerId: "",
|
||
// arr: [],
|
||
// b: null,
|
||
// },
|
||
_onPlayerLoad(info) {
|
||
// console.log("onPlayerLoad info", info, "data", this.data);
|
||
// this.data.playerId = info.playerId;
|
||
const pm = plugin.PlayletManager.getPageManager(info.playerId);
|
||
this.pm = pm;
|
||
// encryptedData是经过开发者后台加密后(不要在前端加密)的数据,具体实现见下面的加密章节
|
||
this.getEncryptData({ serialNo: info.serialNo }).then((res) => {
|
||
const startSerialNo = res.videoinfo.start_serial_no;
|
||
const endSerialNo = res.videoinfo.end_serial_no;
|
||
const name = res.videoinfo.skits_library_name;
|
||
const price = res.videoinfo.price;
|
||
const codeOrder = res.videoinfo.codeOrder || 0;
|
||
// encryptedData是后台加密后的数据,具体实现见下面的加密章节
|
||
pm.setCanPlaySerialList({
|
||
data: res.encryptData,
|
||
freeList: [
|
||
{
|
||
start_serial_no: startSerialNo,
|
||
end_serial_no: endSerialNo,
|
||
},
|
||
], // 1~10集是免费剧集
|
||
});
|
||
const objParams = {
|
||
name: name,
|
||
startSerialNo: startSerialNo,
|
||
endSerialNo: endSerialNo,
|
||
price: price,
|
||
// sid: sid,
|
||
weiXinCodeOrder: codeOrder,
|
||
// isad: isad
|
||
};
|
||
const extParams = objectToQueryString(objParams);
|
||
pm.setExtParam(extParams);
|
||
});
|
||
pm.onCustomEvent("paySuccess", this.onCheckIsCanPlay);
|
||
|
||
// 需要解锁的事件
|
||
pm.onCheckIsCanPlay(this.onCheckIsCanPlay);
|
||
pm.onDataReport(this.isOnDataReport);
|
||
|
||
pm.onBack((e) => {
|
||
const pages = getCurrentPages();
|
||
const isBack = pages[pages.length - 2];
|
||
if (!isBack) {
|
||
pm.switchTab({
|
||
url: "/pages/index/index",
|
||
});
|
||
} else {
|
||
pm.navigateBack();
|
||
}
|
||
});
|
||
|
||
pm.setDramaFlag({
|
||
share: true,
|
||
withShareTicket: true,
|
||
});
|
||
|
||
pm.setVisualEffectOnCapture({
|
||
visualEffect: "hidden",
|
||
});
|
||
|
||
plugin
|
||
.getShareParams()
|
||
.then((res) => {
|
||
const extParam = decodeURIComponent(res.extParam);
|
||
const enterOptions = wx.getEnterOptionsSync();
|
||
})
|
||
.catch((err) => {});
|
||
|
||
// this._initShare();
|
||
// 参考文档章节“数据上报”
|
||
// pm.onDataReport((obj) => {
|
||
// if (
|
||
// obj.event === playletPlugin.REPORT_DATA_EVENTS.VIDEO_PLAY ||
|
||
// obj.event === playletPlugin.REPORT_DATA_EVENTS.CHANGE_SERIAL ||
|
||
// obj.event === playletPlugin.REPORT_DATA_EVENTS.VIDEO_PAUSE
|
||
// ) {
|
||
// console.log(">>>>onDataReport obj", obj);
|
||
// }
|
||
// });
|
||
// // 设置右侧固定运营位置跳转路径
|
||
// pm.setActivityInfo({
|
||
// url: "",
|
||
// });
|
||
// // 设置运营区域
|
||
// pm.updateOpenArea({
|
||
// showLeft: false,
|
||
// showRight: false,
|
||
// leftsideAreaList: [
|
||
// {
|
||
// left: 16, // 类似绝对定位的样式
|
||
// top: 20,
|
||
// width: 72,
|
||
// height: 32,
|
||
// },
|
||
// ],
|
||
// ext: "extInfo",
|
||
// });
|
||
},
|
||
// _initShare() {
|
||
// const pm = this.pm;
|
||
// // 关于分享的处理
|
||
// // 开启分享以及withShareTicket
|
||
// pm.setDramaFlag({
|
||
// share: true,
|
||
// withShareTicket: true,
|
||
// });
|
||
// // 获取分享参数,页面栈只有短剧播放器一个页面的时候可获取到此参数
|
||
// // 例如从分享卡片进入、从投流广告直接跳转到播放器页面,从二维码直接进入播放器页面等情况
|
||
// playletPlugin
|
||
// .getShareParams()
|
||
// .then((res) => {
|
||
// console.log("getLaunch options query res", res);
|
||
// // 关于extParam的处理,需要先做decodeURIComponent之后才能得到原值
|
||
// const extParam = decodeURIComponent(res.extParam);
|
||
// console.log("getLaunch options extParam", extParam);
|
||
// // 如果设置了withShareTicket为true,可通过文档的方法获取更多信息
|
||
// // https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html
|
||
// const enterOptions = wx.getEnterOptionsSync();
|
||
// console.log("getLaunch options shareTicket", enterOptions.shareTicket);
|
||
// })
|
||
// .catch((err) => {
|
||
// console.log("getLaunch options query err", err);
|
||
// });
|
||
// // 设置分享参数
|
||
// pm.setExtParam("scene");
|
||
// // 和充值弹窗交互
|
||
// pm.onCustomEvent(
|
||
// "chargeDialog:chargeSuccess",
|
||
// this.onChargeDialogSuccess.bind(this)
|
||
// );
|
||
// },
|
||
onCheckIsCanPlay(param) {
|
||
var serialNo = param.serialNo;
|
||
console.log("===res.videoinfo.chackpay5=====");
|
||
this.getEncryptData(param).then((res) => {
|
||
console.log("===res.videoinfo.chackpay8=====", res);
|
||
|
||
const codeOrder = res.videoinfo.codeOrder || 0;
|
||
if (codeOrder && parseFloat(serialNo) >= parseFloat(codeOrder)) {
|
||
console.log("===res.videoinfo.chackpay9=====", res);
|
||
const weiXinCode = wx.getStorageSync("weiXinCode");
|
||
const option = {
|
||
dramaId: param.dramaId,
|
||
};
|
||
const ext = objectToQueryString(option);
|
||
const isExt = encodeURIComponent(ext);
|
||
if (!weiXinCode[param.dramaId]) {
|
||
this.pm.pause();
|
||
this.pm.updateOpenArea({
|
||
showLeft: true,
|
||
ext: isExt,
|
||
});
|
||
} else if (res.videoinfo.chackpay != 1) {
|
||
console.log("===res.videoinfo.chackpay1=====");
|
||
|
||
this.pm.showChargeDialog();
|
||
}
|
||
} else if (res.videoinfo.chackpay != 1) {
|
||
console.log("===res.videoinfo.chackpay2=====");
|
||
|
||
this.pm.showChargeDialog();
|
||
}
|
||
this.pm.isCanPlay({
|
||
data: res.encryptData,
|
||
serialNo: serialNo,
|
||
});
|
||
});
|
||
},
|
||
getEncryptData(info) {
|
||
wx.showLoading({
|
||
title: "加载中",
|
||
mask: true,
|
||
});
|
||
let param = {};
|
||
const { extParam, ...newInfo } = info;
|
||
if (extParam) {
|
||
let extParam_a = decodeURIComponent(extParam);
|
||
param = urlParamsToObject(extParam_a);
|
||
}
|
||
const { srcAppid, dramaId } = this.pm.getInfo();
|
||
|
||
return new Promise((resolve, reject) => {
|
||
const newConfig = {
|
||
srcAppid,
|
||
dramaId,
|
||
...param,
|
||
...newInfo,
|
||
};
|
||
newvideoread(newConfig)
|
||
.then((res) => {
|
||
wx.hideLoading();
|
||
resolve(res);
|
||
})
|
||
.catch((e) => {
|
||
wx.hideLoading();
|
||
reject(e);
|
||
});
|
||
});
|
||
},
|
||
getKeep(vn) {
|
||
const params = {
|
||
dramaId: vn.dramaId,
|
||
};
|
||
if (vn.event == "FAV") {
|
||
addkeep(params);
|
||
} else if (vn.event == "UNFAV") {
|
||
chasingdramadel(params);
|
||
}
|
||
},
|
||
isOnDataReport(vn) {
|
||
const serialNo = vn.serialNo;
|
||
const extParam = vn.extParam || {};
|
||
const extParam_a = decodeURIComponent(extParam);
|
||
const isExtParam = urlParamsToObject(extParam_a);
|
||
const weiXinCodeOrder = isExtParam.weiXinCodeOrder || 0;
|
||
if (
|
||
weiXinCodeOrder &&
|
||
weiXinCodeOrder !== "0" &&
|
||
parseFloat(serialNo) >= parseFloat(weiXinCodeOrder)
|
||
) {
|
||
const weiXinCode = wx.getStorageSync("weiXinCode");
|
||
const option = {
|
||
dramaId: vn.dramaId,
|
||
};
|
||
const ext = objectToQueryString(option);
|
||
const isExt = encodeURIComponent(ext);
|
||
if (!weiXinCode[vn.dramaId]) {
|
||
this.pm.pause();
|
||
this.pm.updateOpenArea({
|
||
showLeft: true,
|
||
ext: isExt,
|
||
});
|
||
}
|
||
}
|
||
|
||
if (vn.event == "FAV" || vn.event == "UNFAV") {
|
||
this.getKeep(vn);
|
||
}
|
||
},
|
||
};
|
||
function PlayerManager() {
|
||
var newProto = Object.assign({}, proto);
|
||
for (const k in newProto) {
|
||
if (typeof newProto[k] === "function") {
|
||
this[k] = newProto[k].bind(this);
|
||
}
|
||
}
|
||
}
|
||
|
||
PlayerManager.navigateToPlayer = navigateToPlayer;
|
||
export { PlayerManager };
|