package cc.mrbird.febs.pay.util;
|
|
import cc.mrbird.febs.pay.model.Button;
|
import cc.mrbird.febs.pay.model.CommonButton;
|
import cc.mrbird.febs.pay.model.ComplexButton;
|
import cc.mrbird.febs.pay.model.Menu;
|
import cn.hutool.json.JSONUtil;
|
import lombok.extern.slf4j.Slf4j;
|
import net.sf.json.JSONObject;
|
import org.springframework.http.converter.StringHttpMessageConverter;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.nio.charset.Charset;
|
|
/**
|
* 菜单初始化
|
*/
|
@Slf4j
|
public class WechatMenuUtil {
|
|
public static void main(String[] args) {
|
// 第三方用户唯一凭证
|
String appId = "wx052716b1a388b13c";
|
// 第三方用户唯一凭证密钥
|
String appSecret = "e7cf355e7234f035d8fea6a3a19513b9";
|
String accessToken = "70_VnGMZaIo0pkY7WJOfGVnRlqUGC8UQPu0eN4L8Hc9PearLQgIAtWOC2UCaErhctjI7ORBk_aeBg3QudsLWi5z5_lIPd_zwMCf7E4g8rHkqvArD-N8jyKOKJfzNGsGWJeAFAKAN";
|
|
// 调用接口创建菜单
|
String result = createMenu(getMenu(), accessToken);
|
|
// 判断菜单创建结果
|
if ("0".equals(result))
|
log.info("菜单创建成功!");
|
else
|
log.info("菜单创建失败,错误码:" + result);
|
}
|
|
// 菜单创建(POST) 限100(次/天)
|
public static String menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
|
|
/**
|
* 创建菜单
|
*
|
* @param menu 菜单实例
|
* @param accessToken 有效的access_token
|
* @return 0表示成功,其他值表示失败
|
*/
|
public static String createMenu(Menu menu, String accessToken) {
|
RestTemplate restTemplate = new RestTemplate();
|
restTemplate.getMessageConverters().stream().filter(converter -> converter instanceof StringHttpMessageConverter).forEach(converter -> ((StringHttpMessageConverter) converter).setDefaultCharset(Charset.forName("UTF-8")));
|
String result = "0";
|
// 拼装创建菜单的url
|
String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
|
// 将菜单对象转换成json字符串
|
String jsonMenu = JSONObject.fromObject(menu).toString();
|
|
System.out.println(result);
|
// 调用接口创建菜单
|
try {
|
// 发送post请求,并打印结果,以String类型接收响应结果JSON字符串
|
String jsonObject = restTemplate.postForObject(url, jsonMenu, String.class);
|
if (null != jsonObject) {
|
cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj(jsonObject);
|
if (!"0".equals(parseObj.getStr("errcode"))) {
|
result = parseObj.getStr("errcode");
|
log.error("创建菜单失败 errcode:{} errmsg:{}", result, parseObj.getStr("errmsg"));
|
}
|
}
|
} catch (Exception e) {
|
log.error("创建菜单失败",e);
|
}
|
return result;
|
}
|
|
/**
|
* 组装菜单数据
|
*
|
* @return
|
*/
|
private static Menu getMenu() {
|
CommonButton btn11 = new CommonButton();
|
btn11.setName("商城");
|
btn11.setType("view");
|
btn11.setKey("11");
|
btn11.setUrl("https://www.baidu.com/");
|
|
CommonButton btn24 = new CommonButton();
|
btn24.setName("公司简介");
|
btn24.setType("click");
|
btn24.setKey("24");
|
|
CommonButton btn31 = new CommonButton();
|
btn31.setName("我的分享码");
|
btn31.setType("click");
|
btn31.setKey("31");
|
|
/**
|
* 微信: mainBtn1,mainBtn2,mainBtn3底部的三个一级菜单。
|
*/
|
|
ComplexButton mainBtn1 = new ComplexButton();
|
mainBtn1.setName("药王谷铺子");
|
mainBtn1.setSub_button(new CommonButton[] { btn11});
|
|
ComplexButton mainBtn2 = new ComplexButton();
|
mainBtn2.setName("公司简介");
|
mainBtn2.setSub_button(new CommonButton[] { btn24 });
|
|
ComplexButton mainBtn3 = new ComplexButton();
|
mainBtn3.setName("我的分享码");
|
mainBtn3.setSub_button(new CommonButton[] { btn31 });
|
|
|
/**
|
* 封装整个菜单
|
*/
|
Menu menu = new Menu();
|
menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 });
|
|
return menu;
|
}
|
}
|