Skip to content

激励视频服务端回调接收 ​

1. 激励视频服务端验证介绍 ​

服务器端验证是对应用内激励视频广告观看行为进行的额外验证,尽可能规避欺骗客户端回调来奖励用户的行为。

您可以使用服务器端验证对每一次激励视频广告观看行为进行验证:每次用户看完激励视频广告之后,平台都会使用您在对接广告时提供的回传网址,对此次观看行为进行信息回传。开发者可参考服务端验证信息,自行判断进行奖励的下发。

2. 服务器端验证使用流程 ​

  • 回调 URL: 在用户看完激励广告后,以 GET 方式通知开发者的地址。例如:
http://www.mytest.com/rewardCallback?userId={{USER_ID}}&transId={{TRANS_ID}}&sign={{SIGN}}&extrainfo={{EXTRAINFO}}&placementId={{PLACEMENT_ID}}

2.1 服务端验证回传参数说明 ​

服务端验证目前支持以下信息,开发者回调地址中需要包含对应的参数宏。

参数宏参数类型说明
userIdstring开发者应用的用户 id,可通过 SDK 激励视频的 userId 字段传入
transIdstring服务端生成的 transId,具有唯一性,用于标识此次广告观看行为。开发者可通过此 id 对奖励发放行为进行去重校验,避免重复发放奖励
placementIdstring聚合广告位 id,观看此次激励视频的聚合广告位 id
signstring签名校验
extrainfostring通过 SDK 激励视频 Request 对象的 options 属性传入,options 是个字典,key 和 value 都可以自定义

TIP

关于回调中包含价格字段(ecpm)的解密方式,属于对接后由商务单独提供的内部资料,不在本文档公开范围内。如有需要请联系对接人员获取完整版本。

2.2 签名校验生成示例 ​

签名算法:sha256(SecurityKey + ":" + transId)

Java 版本

引入 maven 依赖:

xml
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>
java
import org.apache.commons.codec.binary.Hex;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;

public class Sha256Util {
    /**
     * 利用 Apache 的工具类实现 SHA-256 加密
     *
     * @param str 加密的报文
     * @return String
     */
    public static String getSHA256Str(String str) {
        MessageDigest messageDigest;
        String encodeStr = "";
        try {
            messageDigest = MessageDigest.getInstance("SHA-256");
            byte[] hash = messageDigest.digest(str.getBytes(StandardCharsets.UTF_8));
            encodeStr = Hex.encodeHexString(hash);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return encodeStr;
    }
}

使用:

java
Sha256Util.getSHA256Str(appSecurityKey() + ":" + trans_id);

PHP 版本

php
$signature = hash('sha256', '密钥' . ':' . $trans_id);
echo $signature;

2.3 回调响应 ​

如果回调通过了开发者的全部验证,开发者需要返回以下 JSON 数据:

json
{"isValid": true}
字段定义字段值或释义字段类型备注
isValidtrue/falseBOOL开发者服务端收到请求后判断回调结果,返回给服务器的校验结果

TIP

如果因为网络原因没有收到回调响应,平台会每隔 200 毫秒重试 3 次。

3. 关于防刷的几点建议 ​

  • transId 是唯一的,要做好唯一性校验,防止重复接收。
  • 一定要做好签名验证,防止非法调用。
  • SDK 奖励回调会带 transId,客户端上传这个单号到业务系统,接收到服务端回调时,校验是否存在客户端上传的记录,存在再给奖励。
  • 业务系统做好风控,设置奖励阈值等。

ApexAdx SDK Documentation