跳至主要內容

数据报表API

大约 4 分钟

数据报表API

更新日志

更新日期
更新说明
2024年3月6日文档初建

1.权限认证

API 通过参数签名的方式进行权限控制,签名所需的 accessKey 和 securityKey,请到变现平台-账号管理- 密钥信息中获取,如果为空,请联系对应商务获取

image.png

2.签名生成

使用 accessKey、timeStamp、nonce和securityKey作md5,生成本次请求的sign

2.1 签名代码示例

下面举例说明如何生成签名和调用接口

public static void main(String[] args) {

        String accessKey = "cqAkc7nE1X2etiQR";

        String secureKey = "5361dec44de774d9adaf46a98ce9a910427885bd";


        // 接口url
        String url = "https://lemon.gameley.com/flowapi/adn/mediaDataReport/reportApi";

        String timeStamp = System.currentTimeMillis() + "";

        Integer random = (int)(Math.random()*10);
        // 签名
        TreeMap<String, Object> treeMap = new TreeMap<>();
        treeMap.put("accessKey",accessKey);
        treeMap.put("timeStamp",timeStamp);
        treeMap.put("nonce",random.toString());

        String sign = getSign(treeMap, secureKey);

        System.out.println(sign);

        //请求体参数
        JSONObject data = new JSONObject();
        data.put("strTime","2024-02-26");

        String body = HttpUtil.createPost(url)
                .header("accessKey",accessKey)
                .header("sign",sign)
                .header("timeStamp",timeStamp)
                .header("nonce",random.toString())
                .body(data.toString())
                .execute().body();

        System.out.println(JSON.toJSON(body));

    }

/**
 * 获取密钥
 * @param request 签名的参数 
 * @param secure_key secureKey
 * @return 参数拼接的字符串
 */
public static String getSign(Map<String, Object> request, String secure_key) {

    Set<Map.Entry<String, Object>> entries = request.entrySet();
    String str = "";
    int i = 0;
    for (Map.Entry<String, Object> e : entries) {
        i++;
        str += e.getKey();
        str += "=";
        str += e.getValue().toString();
        if (i != request.size()) {
            str += "&";
        }
    }
    str += secure_key;
    return getMD5Str(str);

}

/**
 * Md5加密
 * @param str 参数拼接的字符串
 * @return sign签名结果
 */
public static String getMD5Str(String str) {
byte[] digest = null;
try {
    MessageDigest md5 = MessageDigest.getInstance("md5");
    digest = md5.digest(str.getBytes("utf-8"));
} catch (Exception e) {
    e.printStackTrace();
}

StringBuilder md5StrBuilder = new StringBuilder();
for (byte tmp : Objects.requireNonNull(digest)) {
    md5StrBuilder.append(String.format("%02x", tmp & 0xff));
}
return md5StrBuilder.toString();
}

3.广告数据报表API接口

请求URL: https://lemon.gameley.com/flowapi/adn/mediaDataReport/reportApiopen in new window

请求方法: POST

Content-Type: application/json

参数名称参数类型是否必填参数描述
strTimestring数据日期,仅支持单天。日期格式为 yyyy-MM-dd

响应参数:

响应字段类型描述
flagboolean返回结果
codeint返回结果状态码
messagestring描述信息
dataresultReports[]数据对象

resultReports[]数据对象字段说明

参数名称类型
dateTimeDate日期
mediaAppIdint应用id
mediaPosIdint代码位id
adTypeint广告类型(1开机 3信息流 4banner 5插屏 6激励视频)
biddingTypeint竞价类型(0 目标价 1实时竞价)
osint系统平台(1 ios,2 Android)
requestNumint广告请求
returnNumint广告填充
fillRatefloat填充率
showNumint展示数
showRatefloat展示率
clickNumint点击数
clickRatefloat点击率
revenuefloat预估收益
ecpmfloateCPM
appNamestring应用名称
mediaPosNamestring代码位名称
accountNostring账号名称

响应示例:

{
  "flag":  true,
  "code":  2000,
  "message":  "请求成功",
  "data":  {
    "resultReports":  [
      {
        "dateTime":  "2024-02-27 00:00:00",
        "accountNo":"账号名称",
        "mediaAppId":  600263,
        "mediaPosId":  130000051,
        "adType":  3,
        "biddingType":  3,
        "os":  2,
        "requestNum":  0,
        "returnNum":  18,
        "fillRate":  "0.0000",
        "showNum":  16,
        "showRate":  "0.8889",
        "clickNum":  2,
        "clickRate":  "0.1250",
        "revenue":  0,
        "ecpm":  0.0,
        "appName":  "kdriver-安卓测式应用",
        "mediaPosName":  "kdriver-代码位名称"
      },
      {
        "dateTime":  "2024-02-27 00:00:00",
        "accountNo":"账号名称",
        "mediaAppId":  600263,
        "mediaPosId":  130000051,
        "adType":  3,
        "biddingType":  3,
        "os":  2,
        "requestNum":  0,
        "returnNum":  18,
        "fillRate":  "0.0000",
        "showNum":  16,
        "showRate":  "0.8889",
        "clickNum":  2,
        "clickRate":  "0.1250",
        "revenue":  0,
        "ecpm":  0.0,
        "appName":  "kdriver-安卓测式应用",
        "mediaPosName":  "kdriver-代码位名称"
      }
    ]
  }
}

4.响应码

状态码名称描述
2000成功当 API 请求被正确处理,且能按设计获取结果时,返回该状态码;
300签名错误签名算法有误,或securityKey失效
301时间戳无效或请求已过期
302accessKey不存在
303必传参数不能为空
上次编辑于: