积分打赏接口开发指引

功能介绍

POLYV支持与用户的积分系统对接,实现积分打赏。参照本文档提供的积分查询接口和积分更新接口,配置在POLYV后台的通用设置,使用系统生成的观看链接,配合外部授权、自定义授权或者白名单观看条件使用(目前在无限制观看条件和只有验证码观看条件时不能使用),观众在看直播时可消耗积分并打赏给主播。

获取观众积分接口

说明

通过传递观众的id 和频道号等参数,对用户的积分查询接口URL 进行请求,获取学员在平台的积分

请求方式

GET

请求参数

参数 类型 说明
channelId int 频道号
viewerId string 观众ID
viewerName string 观众昵称
sessionId string 直播场次ID,在未直播时可能返回为空
ts long 当前13位毫秒级时间戳
appId string 账号在polyv后台的应用ID
sign string 用于校验的sign,生成方法参考文档底部

注意:如果您设置的积分查询接口URL 包含参数,直播系统调用接口时会将这些参数同时带上,并且这些参数会参与sign 的拼接加密生成

接口返回要求

请求成功:
{
    "code":200,
    "status":"success",
    "message":"",
    "data":100.00
}
请求失败:
{
    "code":400,
    "status":"error",
    "message":"相关错误信息",
    "data":null
}
参数说明
参数 类型 说明
code int 接口请求状态码,200表示成功,非200表示失败
status string 接口请求状态,success 表示成功
message string 接口错误提示,注意:请求出错时,页面显示的提示为polyv 积分打赏所设置的提示
data float 请求成功时为观众的积分

观众打赏道具接口(修改观众积分)

说明

观众观看页选择了相应道具进行打赏时,请求积分更新接口URL修改在平台的积分

请求方式

POST

请求参数

参数 参数类型 说明
channelId int 频道号
viewerId string 观众ID
sessionId string 直播场次ID,在未直播时可能返回为空
ts long 当前13位毫秒级时间戳
appId string 账号在polyv后台的应用ID
goodName string 打赏的道具名称
goodPrice float 打赏的道具的所需积分
goodNum int 打赏的道具的数量
count float 此次打赏所需积分总数
sign string 用于校验的sign,生成方法参考文档底部

注意:如果您设置的积分更新接口URL 包含参数,直播系统调用接口时会将这些参数同时带上,并且这些参数会参与sign 的拼接加密生成

接口返回要求

请求成功:
{
    "code":200,
    "status":"success",
    "message":"",
    "data":100.00
}
积分不足:
{
    "code":400,
    "status":"error",
    "message":"相关错误信息",
    "data":null
}
请求失败:
{
    "code":403,
    "status":"error",
    "message":"相关错误信息",
    "data":null
}
参数说明
参数 类型 说明
code int 接口请求状态码,200表示成功,400表示积分不足,其他情况表示请求失败
status string 接口请求状态,success 表示成功
message string 接口错误提示,注意:请求出错时,页面显示的提示为polyv积分打赏所设置的提示
data float 请求成功时为观众的剩余积分

sign的生成方法

为了保证接口的安全性,polyv观看页在请求接口时,会增加一个经过拼接生成的sign值,建议您在相应的接口里面增加对sign的校验,以确保接口的安全、正常使用。

生成步骤

  1. 将要提交的所有非空参数和参数值根据参数名的进行字典序排列;
  2. 然后以 参数名参数值参数名参数值进行拼接,拼接完后首尾带上appSecret
  3. 最后用MD5将字符串进行加密,加密后再大写

例如:
要发送的参数为:

channelId=10000, appId=app_trail, viewerId=viewer_test, ts=1558659759696;

按参数名字典序排序:

appId=app_trail, channelId=10000, ts=1558659759696, viewerId=viewer_test

拼接字符串并且首尾带上appSecret(从polyv后台获取,此处例如 6ef8d34c08f44e91a18428842ff0ba7e):

6ef8d34c08f44e91a18428842ff0ba7eappIdapp_trailchannelId10000ts1558659759696viewerviewer_testId6ef8d34c08f44e91a18428842ff0ba7e

通过MD5加密后再大写 得到最终的sign:

F42D596520782405C37021B853F0F805

校验方法的工具类示例:

   import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;

import com.live.util.EncryptionUtils;

/**
 * POLYV API签名工具类
 */
public class PolyvApiSignUtils {

    public static boolean checkSign(HttpServletRequest request, String secretKey) {
        Map<String, String> map = new HashMap<>();
        Enumeration<String> names = request.getParameterNames();
        while (names.hasMoreElements()) {
            String name = names.nextElement();
            String value = request.getParameter(name);
            if (null != value) {
                map.put(name, value);
            }
        }

        String sign = request.getParameter("sign");
        if (null == sign || sign.isEmpty()) {
            return false;
        }
        // 除去map中的空值和签名参数
        Map<String, String> params = paraFilter(map);

        // 处理参数,计算MD5哈希值
        String concatedStr = concatParams(params);
        String plain = secretKey + concatedStr + secretKey;
        // 32位大写MD5值
        String encrypted = EncryptionUtils.md5Hex(plain);
        String upperCase = encrypted.toUpperCase();

        // 验证签名是否正确
        boolean isvalid = upperCase.equals(sign);

        if (!isvalid) {
            //TODO 签名错误,返回错误信息
        }

        return isvalid;
    }

    /**
     * 除去map中的空值和签名参数
     * @param sArray 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    private static Map<String, String> paraFilter(Map<String, String> sArray) {
        Map<String, String> result = new HashMap<>();
        if (sArray == null || sArray.size() <= 0) {
            return result;
        }

        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (StringUtils.isBlank(value) || key.equalsIgnoreCase("sign")) {
                continue;
            }
            result.put(key, value);
        }
        return result;
    }

    /**
     * 把数组所有元素排序,并按照“参数参数值”的模式成字符串,用于计算MD5哈希值
     * @param params 需要排序并参与字符拼接的参数组
     * @return 拼接后字符串
     */
    private static String concatParams(Map<String, String> params) {
        List<String> keys = new ArrayList<>(params.keySet());
        Collections.sort(keys);

        StringBuilder sb = new StringBuilder();
        for (String key : keys) {
            String value = params.get(key);
            sb.append(key).append(value);
        }
        return sb.toString();
    }
}
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

直播内容审核回调功能

作用:

账号下频道直播内容异常(涉黄、涉爆、涉政)违规时触发,将违规频道的相关信息回调给用户

详情:

设置接口地址后,如果账号下频道内容违规时,直播系统会将以下参数channelId(频道号)、imageUrl(图片地址)、scene(违规类型:porn 涉黄, terrorism 暴恐涉政)、rate(结果为该类型的概率) 以 GET 方式提交到给用户自定义的回调接口进行通知,如:
http://abc.com/test.do?channelId=123456&imageUrl=http://xxxx/xxx/xxx.jpg&scene=porn&rate=90.0

参数名 类型 说明
channelId int 频道ID
imageUrl string 违规直播的截图,注意:图片为临时地址,请及时进行处理
scene string 违规类型,取值为porn(涉黄)、terrorism(暴恐涉政)
rate float 结果为该类型的概率,取值为[0.00-100.00],值越高表示越有可能属于该类型的概率

如何设置

通过后台设置

在直播后台中,点击【开发设置】,然后点击【回调设置】,在此进行设置
回调注意: 提交的接口地址必须要以http:// 或者https:// 开头

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

直播状态改变回调功能

作用:

账号下频道直播状态改变后,会对所设置的接口地址进行回调通知。

详情:

设置接口地址后,如果账号下频道有进行推流、断流操作导致频道直播状态改变,直播系统会将以下参数channelId(频道号)和status(直播状态:live表示开始直播,end表示直播结束)以GET方式提交到给用户自定义的回调接口进行通知,如:http://abc.com/test.do?channelId=123456&status=live&timestamp=1557976774000&sign=xxdxxxxx&sessionId=xxxxxddd&startTime=1557976777111&endTime=1557976777111

参数名 类型 说明
channelId int 频道ID
status string 直播频道的状态:live正在直播,end直播结束
timestamp long 13位的时间戳
sign String 校验的加密字符串,生成的规则md5(AppSecret+timestamp),AppSecret是直播系统的用密匙
sessionId string 直播的场次ID
startTime long 直播的开始时间,13位的时间戳
endTime long 直播的结束时间(当status=end的时候有值,status=live的时候为null),13位的时间戳

如何设置

方法1:通过后台设置

在直播后台中,点击【开发设置】,然后点击【回调设置】,在此进行设置
回调

方法2:通过接口设置

设置直播状态修改回调接口地址

注意: 提交的接口地址必须要以http:// 或者https:// 开头

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

转存成功回调通知功能

作用:

账号下直播暂存文件成功转存至点播后,会对所设置的接口地址进行回调通知。

详情:

设置接口地址后,如果账号有进行暂存视频转存,即将直播生成的录制文件转存到点播中,如果转存视频处理完毕为已完成状态,直播系统会将以下参数channelId(频道号)、vid(转存成功的视频ID)、title(视频标题)、duration(视频时长)和fileSize(视频文件大小)以GET方式提交到给用户自定义的回调接口进行通知,如:http://abc.com/test.do?channelId=123456&vid=e6b23c6f5134943a015bc117e2854eae_e&title=视频标题&duration=01:23:45&fileSize=123400&timestamp=1557976774000&sign=xxxxxxxxxx&fileId=359a81ed8fd8cb83d88ddcd97d9e8a2b&videoId=b1c6f3ad2c&origin=auto&sessionIds=["20190703145126,4,fdqbopvtnv","20190703145126,8,fdqbopvtnv"]

参数名 类型 说明
channelId int 频道号ID
vid string 转存成功的视频ID
title string 视频标题
duration string 视频时长 格式为 hh:mm:ss
fileSize long 视频文件大小,单位为byte
timestamp long 13位的时间戳
sign String 校验的加密字符串,生成的规则md5(AppSecret+timestamp),AppSecret是直播系统的用密匙
sessionIds String 录制的场次和时间对应的数组字符串,格式:["20190703145126,4,fdqbopvtnv","20190703145126,8,fdqbopvtnv"] ,其中:"20190703145126,4,fdqbopvtnv" 第一个字段是开始时间,第二个字段是直播的时长,第三个是对应的sessionId。
fileId string 转存对应的录制文件id
videoId string 转存回放唯一的id
origin string 转存的录制来源。manual-云录制,auto-自动录制,merge-合并,clip-裁剪
sessionId string 回放对应的单个场次id
userId string 用户id
status string 转存成功返回success

如何设置

方法1:通过后台设置

登录账户-点击【开发设置】-点击【回调设置】-找到转存成功回调URL
16

方法2:通过接口设置

设置转存成功回调接口地址

注意: 提交的接口地址必须要以http:// 或者https:// 开头

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

回放生成回调通知接口

作用:

录制视频成功生成后,会对所设置的接口地址进行回调通知。

详情:

设置接口地址后,如果账号有开通录制功能,账号下各频道在推流结束,生成m3u8录制视频后,直播系统会将参数channelId(频道号)和fileUrl(录制文件地址)以GET方式提交到给用户自定义的回调接口进行通知,如:http://abc.com/test.do?channelId=104400&fileUrl=http://rflive.videocc.net/i6ro0hxj0020150529112242035/recordf.i6ro0hxj0020150529112242035_20170120184803.m3u8&origin=auto&fileId=072c36138cfbd3e546cda227dc273951&timestamp=1557976774000&sign=xxxxxxxxxx

参数名 类型 说明
channelId int 频道ID
fileUrl string 录制文件地址
timestamp long 13位的时间戳
sign String 校验的加密字符串,生成的规则md5(AppSecret+timestamp),AppSecret是直播系统的用密匙
fileId String 录制唯一的id
origin String 录制来源。manual-云录制,auto-自动录制,merge-合并,clip-裁剪
hasRtcRecord String (该字段只对开启云录制功能有用),值为 'Y',表示该场直播录制同时存在云录制和自动录制,值为"N",该场直播只有自动录制

如何设置

前提条件:账号已开通录制功能,可在频道详情处查看是否开通,如果未开通回放功能,则【回放回放视频】处显示,未开通录制功能。
14

方法1:通过后台设置

登录账户-点击【开发设置】-点击【回调设置】-找到回放生成回调URL
15

方法2:通过接口设置

录屏回调接口设置

注意: 提交的接口地址必须要以http:// 或者https:// 开头

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...