打賞功能
一、獲取頻道打賞配置
從 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 |
支付 QR Code 地址,付費禮物才存在 | 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 類型
