1、广告配置跳小程序落地页加粉
2、代码上传付费和添加企业微信
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Trace {
private String click_id;
}
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Actions {
private Long action_time;
//标准行为类型,见 枚举值,当值为 'CUSTOM' 时表示自定义行为类型
private String action_type;
private Trace trace;
}
package com.ruoyi.advertise.tencent; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import java.security.SecureRandom; import java.util.*; /** * 腾讯广告 */ public class TencentAdvertising { private static final String access_token=""; private static final int NONCE_LENGTH = 32; // 最大32个字符 /** * 数据上报 * 付费 PURCHASE * 加企业微信客服 SCANCODE */ public static void dataReporting(String actionType,String clickId){ long l = System.currentTimeMillis() / 1000; String nonce = generateNonce(); String BASE_URL = "https://api.e.qq.com/v1.3/user_actions/add"; String url = BASE_URL +"?access_token="+ access_token + "×tamp=" + l+"&nonce"+nonce; Map<String,Object> map= new HashMap<>(); map.put("account_id","");//推广帐号 id或 DataNexus 账号 id map.put("user_action_set_id","");//数据源 id,通过DataNexus创建数据源时分配的唯一 id。请注意,当填写的数据源类型为 {WECHAT, WECHAT_MINI_PROGRAM, WECHAT_MINI_GAME} 时,必填 user_id 字段中的 wechat_openid (或 wechat_unionid) 及 wechat_app_id。 Trace trace = Trace.builder().click_id(clickId).build(); Actions build = Actions.builder().action_time(l).action_type(actionType).trace(trace).build(); List<Actions> actions=new ArrayList<>(); actions.add(build); map.put("actions",actions); String body = HttpRequest.post(url).contentType("application/json").body(JSON.toJSONString(map)).execute().body(); System.out.println(body); } /** * 随机32 * @return */ public static String generateNonce() { // 使用 SecureRandom 生成一个随机字节数组 SecureRandom secureRandom = new SecureRandom(); byte[] randomBytes = new byte[NONCE_LENGTH]; secureRandom.nextBytes(randomBytes); // 使用 Base64 编码将字节数组转换为字符串 String nonce = Base64.getUrlEncoder().withoutPadding().encodeToString(randomBytes); // 如果编码后的字符串长度超过 32 个字符,截取前32个字符 return nonce.substring(0, NONCE_LENGTH); } public static void main(String[] args) { String clickId="B.n1XsH68iJ1EnWSTg3QxDiURhhCxgROk1fibQEqvqSQPpe37JS49viWzF0fp94mzpyoM2Sc3sNnfGLRmiVlgIojjEoiitRXdvKBUsSgAOWMlC"; dataReporting("SCANCODE",clickId); } }