微信卡卷


import com.jfb.jfbmanager.utils.StringUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @description: 微信临时票据  长期
 * @author: hqh
 * @create: 2020-07-01 10:26
 **/
public class JsApiTicketUtils {

    private static Logger log = LoggerFactory.getLogger(JsApiTicketUtils.class);
    private static Map<String, String> jsApiTicketMap = new HashMap<>();
    private final static String JSAPI_TICKET = "jsapi";//jsapi_ticket
    private final static String WX_CARD_JSAPI_TICKET = "wx_card";//微信卡券jsapi_ticket

    /**
     * 获取jsapi_ticket
     */
    public static Map<String, String> getJsApiTicket() {
        String time = jsApiTicketMap.get("jsapi_ticket_time");
        String jsApiTicket = jsApiTicketMap.get("jsapi_ticket");
        log.info("jsApiTicket:"+jsApiTicket+" time:"+time);
        Long nowDate = new Date().getTime();
        if ( StringUtils.isNotBlank(jsApiTicket)&& StringUtils.isNotEmpty(jsApiTicket) && time != null && nowDate - Long.parseLong(time) < (1.5*60*60*1000)) {
            log.info("jsApiTicket存在,且没有超时,返回jsApiTicketMap");
            return jsApiTicketMap;
        }
        synchronized (JsApiTicketUtils.class) {
            if(StringUtils.isNotBlank(jsApiTicket)&&StringUtils.isNotEmpty(jsApiTicket) && time != null && nowDate - Long.parseLong(time) < (1.5*60*60*1000)) {
                log.info("jsApiTicket存在,且没有超时,返回jsApiTicketMap");
                return jsApiTicketMap;
        }
        log.info("jsApiTicket超时,或者不存在,重新获取");
        try {
                //获取accessToken
                String accessToken=SignUtil.getWxToken();
                //根据accessToken获取jsapiTicket
                String jsapiTicket = SignUtil.getJsApiTicket(accessToken,JSAPI_TICKET);
                log.info("jsapi_ticket_time:"+nowDate);
                log.info("jsapi_ticket:"+jsapiTicket);
                jsApiTicketMap.put("jsapi_ticket_time", nowDate + "");
                jsApiTicketMap.put("jsapi_ticket", jsapiTicket);
                } catch (Exception e) {
                    log.error("微信服务器发生错误",e);
                }
            return jsApiTicketMap;
        }
    }

    /**
     * 获取jsapi_ticket(微信卡券)
     */
    public static Map<String, String> getWxCardJsApiTicket() {
        String time = jsApiTicketMap.get("wx_card_jsapi_ticket_time");
        String jsApiTicket = jsApiTicketMap.get("wx_card_jsapi_ticket");
        Long nowDate = new Date().getTime();
        if (jsApiTicket != null && time != null && nowDate - Long.parseLong(time) < (1.5*60*60*1000)) {
            log.info("jsApiTicket存在,且没有超时,返回jsApiTicketMap");
            return jsApiTicketMap;
        }
        synchronized (JsApiTicketUtils.class) {
            if(jsApiTicket != null && time != null && nowDate - Long.parseLong(time) < (1.5*60*60*1000)) {
                log.info("jsApiTicket存在,且没有超时,返回jsApiTicketMap");
                return jsApiTicketMap;
            }
            log.info("jsApiTicket超时,或者不存在,重新获取");
            try {
                //获取accessToken
            String accessToken=SignUtil.getWxToken();
                //根据accessToken获取jsapiTicket
                String jsapiTicket = SignUtil.getJsApiTicket(accessToken,WX_CARD_JSAPI_TICKET);
                log.info("wx_card_jsapi_ticket_time:"+nowDate);
                log.info("wx_card_jsapi_ticket:"+jsapiTicket);

                jsApiTicketMap.put("wx_card_jsapi_ticket_time", nowDate + "");
                jsApiTicketMap.put("wx_card_jsapi_ticket", jsapiTicket);
            } catch (Exception e) {
                log.error("微信服务器发生错误,时间:"+ StringUtil.getCurrentTime(),e);
            }
            return jsApiTicketMap;
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值