java对接pangle广告收入API

引流

java接入pangle广告收入API、穿山甲广告接入API、pangle广告收入接入

进入正题

背景:针对在pangle上面投放广告,获取广告收入数据,后续根据收入数据进行分析,整理财务报表等。

接入Pangle广告收入,访问接口地址示例:https://open-api.pangleglobal.com/union_pangle/open/api/rt/income?currency=cny&date=2021-01-12&role_id=459&sign_type=MD5&time_zone=0&user_id=459&version=2.0&timestamp=1615778032&sign=598b733d2eb8d5ef7fb326fc2061dfa1&dimensions=ad_slot_type,region

通过网络请求进行数据拉取。

Request

必传参数:

  1. user_id
  2. role_id
  3. version
  4. date
  5. sign
  6. sign_type

如下图所示:
在这里插入图片描述
其中重要的参数:role_id、user_id 可以进行配置查询
官方地址:https://www.csjplatform.com/
在这里插入图片描述
另外一个重要参数就是根据MD5进行签名校验的sign值。

Response

在这里插入图片描述
pangle会在每天下午的14.00进行数据推送,通过api可以拉取到 T-1 天的数据。

获取sign

public class PangLeUtil {
    // 必传参数
    private static int user_id = 1234567;
    private static int role_id = 1234567;
    private static String version = "2.0";
    // 根据自己的项目来
    private static String secure_key = "*************************=";


    private static String sign_type_md5 = "MD5";
    private static final String KEY_USER_ID = "user_id";
    private static final String KEY_ROLE_ID = "role_id";
    private static final String KEY_VERSION = "version";
    private static final String KEY_SIGN = "sign";
    private static final String KEY_SIGN_TYPE = "sign_type";

    // pull data url
    private static final String PANGLE_HOST = "https://open-api.pangleglobal.com";

    public static Map<String, String> signGen(Map<String, String> params) {
        Map<String, String> result = new HashMap<>();
        try {
            if (params == null || params.isEmpty()) {
                System.out.println("Invalid params: " + params);
                return result;
            }

            if (user_id != 0) {
                params.put(KEY_USER_ID, String.valueOf(user_id));
            }

            if (role_id != 0) {
                params.put(KEY_ROLE_ID, String.valueOf(role_id));
            }

            params.put(KEY_VERSION, version);
            params.put(KEY_SIGN_TYPE, sign_type_md5);

            List<Map.Entry<String, String>> paramOrders = new ArrayList<>(params.entrySet());
            paramOrders.sort(Map.Entry.comparingByKey());

            StringBuilder rawStrBuilder = new StringBuilder();
            for (Map.Entry<String, String> entry : paramOrders) {
                String key = entry.getKey();
                String value = entry.getValue();
                if (value == null || value.isEmpty()) {
                    continue;
                }
                rawStrBuilder.append(key).append("=").append(value).append("&");
            }

            String rawStr = rawStrBuilder.toString();
            if (rawStr.isEmpty()) {
                return result;
            }
            String signStr = rawStr.substring(0, rawStr.length() - 1) + secure_key;

            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(signStr.getBytes());
            byte[] byteData = md.digest();

            StringBuilder signBuilder = new StringBuilder();
            for (byte byteDatum : byteData) {
                signBuilder.append(Integer.toString((byteDatum & 0xff) + 0x100, 16).substring(1));
            }
            String sign = signBuilder.toString();

            result.put(KEY_SIGN, sign);
            result.put("url", rawStr + "sign=" + sign);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return result;
    }

    public static String getSignedUrl(Map<String, String> params) {
        return signGen(params).get("url");
    }

    public static String getMediaRtIncome(Map<String, String> params) {
        String result = getSignedUrl(params);
        if (result == null || result.isEmpty()) {
            return "";
        }
        return PANGLE_HOST + "/union_pangle/open/api/rt/income?" + result;
    }

可以通过我上面的代码获取到sign。

后续就是拿到上面的 url 进行 网络请求,获取返回值,根据自己的业务做后续处理即可。

 public void demo() {
	// http请求
	// ... 业务处理

}
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值