主题
激励视频服务端回调接收
1. 激励视频服务端验证介绍
服务器端验证是对应用内激励视频广告观看行为进行的额外验证,尽可能规避欺骗客户端回调来奖励用户的行为。
您可以使用服务器端验证对每一次激励视频广告观看行为进行验证:每次用户看完激励视频广告之后,平台都会使用您在对接广告时提供的回传网址,对此次观看行为进行信息回传。开发者可参考服务端验证信息,自行判断进行奖励的下发。
2. 服务器端验证使用流程
- 回调 URL: 在用户看完激励广告后,以 GET 方式通知开发者的地址。例如:
http://www.mytest.com/rewardCallback?userId={{USER_ID}}&transId={{TRANS_ID}}&sign={{SIGN}}&extrainfo={{EXTRAINFO}}&placementId={{PLACEMENT_ID}}2.1 服务端验证回传参数说明
服务端验证目前支持以下信息,开发者回调地址中需要包含对应的参数宏。
| 参数宏 | 参数类型 | 说明 |
|---|---|---|
| userId | string | 开发者应用的用户 id,可通过 SDK 激励视频的 userId 字段传入 |
| transId | string | 服务端生成的 transId,具有唯一性,用于标识此次广告观看行为。开发者可通过此 id 对奖励发放行为进行去重校验,避免重复发放奖励 |
| placementId | string | 聚合广告位 id,观看此次激励视频的聚合广告位 id |
| sign | string | 签名校验 |
| extrainfo | string | 通过 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}| 字段定义 | 字段值或释义 | 字段类型 | 备注 |
|---|---|---|---|
| isValid | true/false | BOOL | 开发者服务端收到请求后判断回调结果,返回给服务器的校验结果 |
TIP
如果因为网络原因没有收到回调响应,平台会每隔 200 毫秒重试 3 次。
3. 关于防刷的几点建议
- transId 是唯一的,要做好唯一性校验,防止重复接收。
- 一定要做好签名验证,防止非法调用。
- SDK 奖励回调会带 transId,客户端上传这个单号到业务系统,接收到服务端回调时,校验是否存在客户端上传的记录,存在再给奖励。
- 业务系统做好风控,设置奖励阈值等。