打赏功能
一、获取频道打赏配置
从 v1.2.0 开始可以通过 PlvDonateModule.generateDefaultDonateConfig() 来获取默认配置
Api 方法: getDonateConfig(): DonateConfig
返回值说明: 频道打赏配置,DonateConfig 类型,详细类型说明如下
| 属性名 | 说明 | 类型 |
|---|---|---|
donateCashMin |
现金打赏最低限制 | number |
donateCashQuickOptions |
现金打赏金额列表 | number[] |
donateCashEnabled |
现金打赏开关 | boolean |
donateGoodEnabled |
道具(现金)打赏开关 | boolean |
donatePointEnabled |
道具(积分)打赏开关 | boolean |
donatePointUnit |
积分礼物单位 | string |
donateScoreUnit |
积分单位 | string |
示例:
const donateConfig = watchCore.donate.getDonateConfig();
console.log('现金打赏开关', donateConfig.donateCashEnabled);
console.log('现金礼物打赏开关', donateConfig.donateGoodEnabled);
console.log('积分礼物打赏开关', donateConfig.donatePointEnabled);
二、判断是否显示现金打赏
Api 方法: isShowDonateCash(): boolean
返回值说明: 是否显示现金打赏
示例:
const check = watchCore.donate.isShowDonateCash();
if (check) {
// TODO:显示现金打赏
} else {
// TODO:隐藏现金打赏
}
三、判断是否显示现金道具打赏
Api 方法: isShowDonateCashGood(): boolean
返回值说明: 是否显示现金道具打赏
示例:
const check = watchCore.donate.isShowDonateCashGood();
if (check) {
// TODO:显示现金道具打赏
} else {
// TODO:隐藏现金道具打赏
}
四、是否显示积分道具打赏
Api 方法: isShowDonatePointGood(): boolean
返回值说明: 是否显示积分道具打赏
示例:
const check = watchCore.donate.isShowDonatePointGood();
if (check) {
// TODO:显示积分道具打赏
} else {
// TODO:隐藏积分道具打赏
}
五、判断是否为免费礼物
通过打赏道具名称以及管理后台配置的打赏设置判断礼物是否免费,如果不在配置中的礼物将返回 false。
Api 方法: isFreeReward(rewardContent: string): boolean
参数说明:
- rewardContent:打赏内容(道具名称),
string类型,必传
示例:
const check = watchCore.donate.isFreeReward('鲜花');
if (check) {
console.log('礼物是免费的');
} else {
console.log('礼物是收费的');
}
六、获取打赏道具信息
获取管理后台中设置的打赏道具信息,如积分打赏道具、现金打赏道具
Api 方法: getDonateGoods(): Object
返回值说明: Object 类型,详细类型说明如下
| 属性名 | 说明 | 类型 |
|---|---|---|
goods |
当前支持打赏的道具 | DonateGoodData[] |
cashGoods |
现金道具 | DonateGoodData[] |
pointGoods |
积分道具 | DonateGoodData[] |
示例:
const info = watchCore.donate.getDonateGoods();
console.log('当前支持显示的打赏道具', info.goods);
console.log('后台设置的现金道具', info.cashGoods);
console.log('后台设置的积分道具', info.pointGoods);
七、支付打赏
当观众进行打赏时,可调用 payDonate 进行打赏,调用后可通过支付记录 id logId 查询支付状态。
Api 方法: payDonate(params: PayDonateParams): Promise<PayDonateData>
参数说明:
- params:打赏内容,
PayDonateParams类型,必传,详细类型说明如下
| 参数名 | 说明 | 类型 | 必须 | 默认值 |
|---|---|---|---|---|
donateType |
打赏类型 | DonateType |
是 | - |
goodId |
道具打赏道具 id | string |
否 | - |
goodCount |
打赏数量 | number |
否 | - |
amount |
现金打赏时的打赏金额,单位:元 | string | number |
否 | - |
返回值说明: 打赏支付数据,Promise<PayDonateData> 类型,详细类型说明如下
| 属性名 | 说明 | 类型 |
|---|---|---|
donateType |
打赏类型 | DonateType |
isFree |
是否为免费礼物 | boolean |
logId |
支付记录 id | string |
goodId |
打赏道具 id | string |
goodCount |
打赏数量 | number |
amount |
现金打赏时的打赏金额 | string | number |
codeUrl |
支付地址 | string |
qrCodeUrl |
支付二维码地址,付费礼物才存在 | string |
wxPaySignData |
微信支付签名数据 | WxPaySignData |
示例:
import { DonateType } from '@polyv/live-watch-sdk';
// 现金打赏
const payData = await watchCore.donate.payDonate({
donateType: DonateType.Cash,
amount: '1.2', // 1.2 元
});
// 道具打赏
const payData = await watchCore.donate.payDonate({
donateType: DonateType.Good,
goodId: 'xxx',
goodCount: 2,
});
// 调用后的处理
if (payData.isFree) {
// 免费道具,无需支付
return;
}
if (isPC) {
// PC 端使用扫码支付
toast.success('显示支付二维码', payData.qrCodeUrl);
return;
}
if (isMobile && isWeixin) {
// 移动端微信环境下调用微信 JSSDK 支付接口
const wxPaySignData = payData.wxPaySignData;
wx.chooseWXPay({
timestamp: wxPaySignData.timestamp,
nonceStr: wxPaySignData.nonceStr,
package: wxPaySignData.package,
signType: wxPaySignData.signType,
paySign: wxPaySignData.paySign,
success: () => {
toast.success('支付成功');
},
fail: () => {
toast.success('支付失败');
},
});
return;
}
toast.error('请使用微信客户端打开');
八、检查打赏支付状态
Api 方法: checkDonatePayStatus(params: CheckDonatePayStatusParams): Promise<DonatePayStatusData>
参数说明:
- params:
CheckDonatePayStatusParams类型,必传,详细类型说明如下
| 参数名 | 说明 | 类型 | 必须 | 默认值 |
|---|---|---|---|---|
logId |
记录id | string |
是 | - |
donateType |
打赏类型 | DonateType |
是 | - |
返回值说明: 打赏支付状态数据,Promise<DonatePayStatusData> 类型,详细类型说明如下
| 属性名 | 说明 | 类型 |
|---|---|---|
paySuccess |
是否支付成功 | boolean |
九、获取当前用户打赏的剩余积分
Api 方法: getDonateSurplusPoint(): Promise<number>
返回值说明: Promise<number> 类型
十、支付积分打赏
Api 方法: payDonatePoint(params: PayDonatePointParams): Promise<number>
参数说明:
- params:
PayDonatePointParams类型,必传,详细类型说明如下
| 参数名 | 说明 | 类型 | 必须 | 默认值 |
|---|---|---|---|---|
goodId |
道具打赏道具 id | string |
是 | - |
goodCount |
打赏数量 | number |
是 | - |
返回值说明: 返回剩余积分,Promise<number> 类型
十一、获取打赏 svga 链接
Api 方法: getDonateSvgaUrl(gimg: string): undefined | string
从 v1.0.0 版本开始支持
参数说明:
- gimg:打赏图片地址,
string类型,必传
返回值说明: undefined | string 类型
