| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- package com.cnd3b.utility.wechatdock;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.cnd3b.common.BaseClass;
- import com.cnd3b.common.data.db.DBConnect;
- import com.cnd3b.utility.WebRequest;
- import p2.pao.PaoRemote;
- import p2.pao.PaoSetRemote;
- import p2.util.P2Exception;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import java.util.ArrayList;
- import java.util.Calendar;
- public class WechatDock_Enterprise extends BaseClass {
- /**
- * 参数连接符
- */
- public static final String QYWX_AND = "&";
- public static final String QYWX_EQUAL = "=";
- public static final String QYWX_QUERY = "?";
- public static final String QYWX_GET_JSAPITICKET_URL_PARAM_TICKET = "jsapi_ticket";
- public static final String QYWX_GET_JSAPITICKET_URL_PARAM_NONCESTR = "noncestr";
- public static final String QYWX_GET_JSAPITICKET_URL_PARAM_TIMESTAMP = "timestamp";
- public static final String QYWX_GET_JSAPITICKET_URL_PARAM_URL = "url";
- public static final String QYWX_GET_JSAPITICKET_RETURN_SIGNATURE = "signature";
- //企业ID
- public static String corpid = "ww6e401e63011f9f59";
- //应用的凭证密钥(通讯录)
- public static String corpsecret = "0UaJC_H6HUp4myFsJTxINeDHRAPj7Z4lYqmDMZFRmT0";
- //应用的凭证密钥(资料中心)
- public static String corpsecret1 = "uf8PZCPRPIB9pSLrgQJuK0z4kifrSIcH_VxqeyjYAt4";
- //应用的凭证密钥(培训学习)
- public static String corpsecret2 = "hBJRVc0VZ5hNk-3ItOrqcWAImWmimhQMZWhtOcX08yI";
- //企业应用agentid
- public static long agentid = 1000003;
- //有效期2小时,需定时刷新,重复获取将导致上次获取的失效
- private static String access_token = "";
- private static long access_token_timelimit = 0L;
- public static String getAccessToken() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- if (access_token_timelimit < nowtime) {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret;
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("access_token")) {
- access_token = resobject.get("access_token").toString();
- access_token_timelimit = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- }
- return access_token;
- }
- /**
- * 重新获取一次token
- *
- * @return
- */
- public static String getAccessToken2() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret;
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("access_token")) {
- access_token = resobject.getString("access_token");
- access_token_timelimit = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- return access_token;
- }
- // /**
- // * 获取小程序token
- // *
- // * @param type
- // * @return
- // */
- // public static String getMiniAppAccessToken(int type) {
- // String corpsecret = "";
- // Object access_token = "";
- // if (type == 1) {
- // corpsecret = corpsecret1;
- // } else {
- // corpsecret = corpsecret2;
- // }
- //
- // String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret;
- // String res = new WebRequest().doGet(url);
- // JSONObject resobject = JSONObject.parseObject(res);
- // System.err.println(resobject);
- // if (resobject.containsKey("access_token")) {
- // access_token = resobject.get("access_token");
- // }
- //
- // return access_token.toString();
- // }
- private static String access_token_zlzx = "";
- private static long access_token_timelimit_zlzx = 0L;
- /**
- * 资料中心token
- *
- * @return
- */
- public static String getAccessToken_zlzx() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- if (access_token_timelimit_zlzx < nowtime) {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret1;
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("access_token")) {
- access_token_zlzx = resobject.get("access_token").toString();
- access_token_timelimit_zlzx = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- }
- return access_token_zlzx;
- }
- private static String access_token_pxxx = "";
- private static long access_token_timelimit_pxxx = 0L;
- /**
- * 培训学习token
- *
- * @return
- */
- public static String getAccessToken_pxxx() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- if (access_token_timelimit_pxxx < nowtime) {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret2;
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("access_token")) {
- access_token_pxxx = resobject.get("access_token").toString();
- access_token_timelimit_pxxx = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- }
- return access_token_pxxx;
- }
- private static String ticket_zlzx = "";
- private static long ticket_timelimit_zlzx = 0L;
- /**
- * 资料中心ticket
- */
- public static String getTicket_zlzx() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- if (ticket_timelimit_zlzx < nowtime) {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + getAccessToken_zlzx() + "&type=agent_config";
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("ticket")) {
- ticket_zlzx = resobject.get("ticket").toString();
- ticket_timelimit_zlzx = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- }
- return ticket_zlzx;
- }
- private static String ticket_pxxx = "";
- private static long ticket_timelimit_pxxx = 0L;
- /**
- * 培训学习ticket
- */
- public static String getTicket_pxxx() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- if (ticket_timelimit_pxxx < nowtime) {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=" + getAccessToken_pxxx() + "&type=agent_config";
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("ticket")) {
- ticket_pxxx = resobject.get("ticket").toString();
- ticket_timelimit_pxxx = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- }
- return ticket_pxxx;
- }
- private static String ticket = "";
- private static long ticket_timelimit = 0L;
- public static String getTicket() {
- long nowtime = Calendar.getInstance().getTimeInMillis();
- if (ticket_timelimit < nowtime) {
- String url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + getAccessToken();
- String res = new WebRequest().doGet(url);
- JSONObject resobject = JSONObject.parseObject(res);
- System.err.println(resobject);
- if (resobject.containsKey("ticket")) {
- ticket = resobject.get("ticket").toString();
- ticket_timelimit = nowtime + 1000 * resobject.getIntValue("expires_in");
- }
- }
- return ticket;
- }
- public static JSONObject getSign(String ticket, String url) {
- String noncestr = getRandomString(16);
- String timestamp = (int) (System.currentTimeMillis() / 1000) + "";
- JSONObject rul = new JSONObject();
- String sign = "";
- sign += QYWX_GET_JSAPITICKET_URL_PARAM_TICKET + QYWX_EQUAL + ticket + QYWX_AND + QYWX_GET_JSAPITICKET_URL_PARAM_NONCESTR + QYWX_EQUAL + noncestr + QYWX_AND + QYWX_GET_JSAPITICKET_URL_PARAM_TIMESTAMP + QYWX_EQUAL + timestamp + QYWX_AND + QYWX_GET_JSAPITICKET_URL_PARAM_URL + QYWX_EQUAL + url;
- String signature = "";
- try {
- // 指定sha1算法
- MessageDigest digest = MessageDigest.getInstance("SHA-1");
- digest.update(sign.getBytes());
- // 获取字节数组
- byte messageDigest[] = digest.digest();
- // Create Hex String
- StringBuffer hexString = new StringBuffer();
- // 字节数组转换为 十六进制 数
- for (int i = 0; i < messageDigest.length; i++) {
- String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
- if (shaHex.length() < 2) {
- hexString.append(0);
- }
- hexString.append(shaHex);
- }
- signature = hexString.toString();
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- }
- rul.put("signature", signature);
- rul.put("noncestr", noncestr);
- rul.put("timestamp", timestamp);
- rul.put("ticket", ticket);
- return rul;
- }
- /**
- * @param
- * @return 对应长度的随机字符串
- * @name 中文名称
- * @description 获取指定位数的随机字符串(包含小写字母 、 大写字母 、 数字, 0 < length)
- * @time 创建时间:2018年7月23日14:17:21
- * @author 朱浩
- * @history 修订历史(历次修订内容、修订人、修订时间等)
- */
- private static String getRandomString(int length) {
- // 随机字符串的随机字符库
- String KeyString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- StringBuffer sb = new StringBuffer();
- int len = KeyString.length();
- for (int i = 0; i < length; i++) {
- sb.append(KeyString.charAt((int) Math.round(Math.random() * (len - 1))));
- }
- return sb.toString();
- }
- }
|