package com.nova.sankuai.infra.utils.huawei; import cn.hutool.core.map.MapBuilder; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.crypto.digest.MD5; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.nova.sankuai.domain.api.zhongzan.ZhongZanResponse; import com.nova.sankuai.domain.dto.huawei.HuaWeiDTO; import com.nova.sankuai.security.HttpClientUtil; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.DigestUtils; import java.util.Map; /** * 华为业务对接 */ @Component @RequiredArgsConstructor public class HuaWeiUtil { private static final Logger log = LoggerFactory.getLogger("capitalLogger"); @Value("${huawei.basicUrl}") private String basicUrl; @Value("${huawei.appId}") private String appId; @Value("${huawei.deviceIdType}") private String deviceIdType; @Value("${huawei.grantType}") private String grantType; @Value("${huawei.clientId}") private String clientId; @Value("${huawei.clientSecret}") private String clientSecret; public String click(HuaWeiDTO dto) { String logNumber = IdUtil.randomUUID(); String token = getToken(); if (StringUtils.isNotEmpty(token)) { String result = null; JSONObject jsonData = new JSONObject(); jsonData.put("appId", appId); jsonData.put("deviceIdType", deviceIdType); jsonData.put("deviceId", dto.getOaid()); jsonData.put("actionTime", dto.getTime()); jsonData.put("actionType", dto.getActionType()); jsonData.put("callBack", dto.getCallback()); try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "datasource/v1/track/activate", jsonData.toJSONString(), getHeader(token, clientId)); log.info("日志编号:" + logNumber + " 回传用户行为数据接口成功 :{}", result); } catch (Exception ex) { log.error("日志编号:" + logNumber + " 回传用户行为数据接口 ,传参:token: {} ex:{}", token, jsonData , ex); } } return null; } private String getToken(){ String logNumber = IdUtil.randomUUID(); JSONObject jsonData = new JSONObject(); jsonData.put("grant_type", grantType); jsonData.put("client_id", clientId); jsonData.put("client_secret", clientSecret); String result = null; try { result = HttpClientUtil.getInstance().postJsonData(basicUrl + "oauth2/v1/token", jsonData.toJSONString()); } catch (Exception ex) { log.error("日志编号:" + logNumber + " 获取Token, 请求参数:", jsonData, ex, ""); } try { JSONObject res = JSON.parseObject(result); return res.getString("access_token"); } catch (Exception ex) { log.error("日志编号:" + logNumber + " 获取Token,jsonData:{} ex:{}", jsonData , ex, ""); } return null; } /** * 交互请求头 * @param token token * @param clientId 客⼾端id * @return */ public static Map getHeader(String token, String clientId) { return new MapBuilder(MapUtil.newHashMap(16)) .put("client-id", clientId) .put("Authorization", "Bearer "+ token) .put("charset", "utf-8") .build(); } }