最新排序的微信分享后端界面的一般过程

电脑杂谈  发布时间:2020-05-29 11:13:08  来源:网络整理

微信支付接口调用_微信接口调用次数限制_微信调用支付宝接口

此接口的一般过程是: 用户创建一个时间戳,一个随机字符串,当前需要共享的页面的url,然后使用自己的appid和APPsecret作为请求参数来获取access_token,然后根据access_token获取jsapi_ticket. 对获取的jsapi-ticket进行加密,验证,并对自己创建的三个变量进行签名. 请注意,签名过程按键值ASCII代码的升序排序,并打包为json格式. 数据被发送到前台JS页面. 具体过程如下;

public class WeiXinShareAction extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private Integer main_count = 888;
    private String flag = "1";
    private Log logger = LogFactory.getLog(this.getClass());
    private String filePath = "/B.txt";
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        JsonObject jsonObject = new JsonObject();
        String ticket = null;
        String[] wxInfo = new String[] { "wx007344f87ae48300", "5442edc712b6846bdd1c058b7f2318fe" };
        WeiXinUtil wxu = new WeiXinUtil();
        String ticketResString;
        try {
            ticketResString = wxu.getShareJsapiTicket(wxInfo);
            if (StringUtils.isNotEmpty(ticketResString)) {
                JSONObject ticketJSONObject = JSONObject.fromObject(ticketResString);
                if (ticketJSONObject.getInt("errcode") == 0) {
                    ticket = JSONObject.fromObject(ticketResString).getString("ticket");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (StringUtils.isEmpty(ticket)) {
            jsonObject.addProperty("errcode", 10002);
            jsonObject.addProperty("errmsg", "ticket_error");
            this.responseWrite(jsonObject.toString(), response);
            return;
        }
        String noncestr = this.createNonceStr();
        int timestamp = this.createTimestamp();
        String requestRefererURL = request.getHeader("referer");
        flag = request.getParameter("temp");
        logger.info("flag--------------" + flag);
        //这里是保存点击次数
        //没有的情况下 保证服务重启后点击次数不清零
        //利用线程锁 使用IO流 对点击次数进行修改保存
             Thread_readFile thf4 = new Thread_readFile();
             thf4.start();
        logger.warn("requestRefererURL: " + requestRefererURL);
        String signature = this.createSignature(noncestr, ticket, timestamp, requestRefererURL);
        jsonObject.addProperty("countNum", main_count);//点击次数
        jsonObject.addProperty("errcode", 0);//
        jsonObject.addProperty("errmsg", "");//
        jsonObject.addProperty("wxuser", wxInfo[0]); // appId
        jsonObject.addProperty("timestamp", timestamp);//时间戳
        jsonObject.addProperty("noncestr", noncestr);//随机字符串
        jsonObject.addProperty("signature", signature);//签名
        response.setHeader("Access-Control-Allow-Origin", "*");
        this.responseWrite(jsonObject.toString(), response);
    }
    private void responseWrite(String content, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("utf-8");
            response.getWriter().write(content);
        } catch (Exception e) {
            logger.error("responseWrite error in WeiXinShareAction", e);
        }
    }
}

微信接口调用次数限制_微信支付接口调用_微信调用支付宝接口

获取access_token;在开发过程中,必须注意微信,以减轻访问服务器的压力. 它限制了access_token生成的次数和每天使用的时间长度;

因为限制为7200s微信接口调用次数限制,所以我做出了判断,并在生成令牌后2小时使用了相同的令牌;

微信调用支付宝接口_微信支付接口调用_微信接口调用次数限制

这只是一个小界面微信接口调用次数限制,所以我选择将上一代时间和令牌保存为静态变量,

    /**
     * 微信分享,获取access_token
     */
    private String getWeiXinAccessToken(String[] wxInfo) throws Exception {
         //得到当前时间
        long current_time = System.currentTimeMillis();
        // 每次调用,判断expires_in是否过期,如果token时间超时,重新获取,expires_in有效期为7200
        if ((current_time - last_time) / 1000 >= 7200) {
            logger.info("第一次访问"+current_time);
            logger.info("(current_time - last_time) / 1000===="+(current_time - last_time) / 1000);
            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxInfo[0]
                    + "&secret=" + wxInfo[1];
            String result = this.httpReqExecute(url);
            this.logger.warn("from weixin api accessToken: " + result);
            try {
                last_time = current_time; 
                if (StringUtils.isNotEmpty(result)) {
//                   解析respContent,并获取其中的更新的key,
                    accessToken = JSONObject.fromObject(result).getString("access_token");
//                  保存access_token
                    return accessToken;
                }
            } catch (Exception e) {
                logger.error("getAccessToken error in WeiXinShareAction", e);
            }
        }else{
            logger.info("第二次访问"+last_time);
            logger.info("(current_time - last_time) / 1000===="+(current_time - last_time) / 1000);
            logger.info("from weixin api accessToken:"+accessToken);
            return accessToken;
        }
        return null;
    }


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-226367-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...