微信分享后台接口简单实现此接口大致的流程是:用户创建时间戳,随机字符串,当前需要分享的页面的url三个变量,接着将自己的appid和APPsecret作为请求参数获取access_token,再根据access_token获取jsapi_ticket,并将获取的jsapi-ticket进行加密、校验以及自己创建的三个变量进行签名,注意签名过程案按照key值ASCII码升序排序封装成json格式的数据传送到前台JS页面,具体程序如下;
publicclassWeiXinShareActionextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;privateIntegermain_count=888;privateStringflag="1";privateLoglogger=LogFactory.getLog(this.getClass());privateStringfilePath="/B.txt";protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{JsonObjectjsonObject=newJsonObject();Stringticket=null;String[]wxInfo=newString[]{"wx007344f87ae48300","5442edc712b6846bdd1c058b7f2318fe"};WeiXinUtilwxu=newWeiXinUtil();StringticketResString;try{ticketResString=wxu.getShareJsapiTicket(wxInfo);if(StringUtils.isNotEmpty(ticketResString)){JSONObjectticketJSONObject=JSONObject.fromObject(ticketResString);if(ticketJSONObject.getInt("errcode")==0){ticket=JSONObject.fromObject(ticketResString).getString("ticket");}}}catch(Exceptione){e.printStackTrace();}if(StringUtils.isEmpty(ticket)){jsonObject.addProperty("errcode",10002);jsonObject.addProperty("errmsg","ticket_error");this.responseWrite(jsonObject.toString(),response);return;}Stringnoncestr=this.createNonceStr();inttimestamp=this.createTimestamp();StringrequestRefererURL=request.getHeader("referer");flag=request.getParameter("temp");logger.info("flag--------------"+flag);//这里是保存点击次数//没有数据库的情况下保证服务重启后点击次数不清零//利用线程锁使用IO流对点击次数进行修改保存Thread_readFilethf4=newThread_readFile();thf4.start();logger.warn("requestRefererURL:"+requestRefererURL);Stringsignature=this.createSignature(noncestr,ticket,timestamp,requestRefererURL);jsonObject.addProperty("countNum",main_count);//点击次数jsonObject.addProperty("errcode",0);//jsonObject.addProperty("errmsg","");//jsonObject.addProperty("wxuser",wxInfo[0]);//appIdjsonObject.addProperty("timestamp",timestamp);//时间戳jsonObject.addProperty("noncestr",noncestr);//随机字符串jsonObject.addProperty("signature",signature);//签名response.setHeader("Access-Control-Allow-Origin","");this.responseWrite(jsonObject.toString(),response);}privatevoidresponseWrite(Stringcontent,HttpServletResponseresponse){try{response.setCharacterEncoding("utf-8");response.getWriter().write(content);}catch(Exceptione){logger.error("responseWriteerrorinWeiXinShareAction",e);}}}获取access_token;这里开发过程中要注意微信为了减轻对服务器的访问压力限制了access_token每天的生成次数以及使用时长;由于限制时长为7200s于是做了一个判断再生成一个token后的2小时用同一个token;这里仅仅只是一个小接口于是选择将最近一次的生成时间以及token存为静态变量,
/微信分享,获取access_token/privateStringgetWeiXinAccessToken(String[]wxInfo)throwsException{//得到当前时间longcurrent_time=System.currentTimeMillis();//每次调用,判断expires_in是否过期,如果token时间超时,重新获取,expires_in有效期为7200if((current_time-last_time)/1000=7200){logger.info("第一次访问"+current_time);logger.info("(current_time-last_time)/1000===="+(current_time-last_time)/1000);Stringurl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+wxInfo[0]+"&secret="+wxInfo[1];Stringresult=this.httpReqExecute(url);this.logger.warn("fromweixinapiaccessToken:"+result);try{last_time=current_time;if(StringUtils.isNotEmpty(result)){//解析respContent,并获取其中的更新的key,accessToken=JSONObject.fromObject(result).getString("access_token");//保存access_tokenreturnaccessToken;}}catch(Exceptione){logger.error("getAccessTokenerrorinWeiXinShareAction",e);}}else{logger.info("第二次访问"+last_time);logger.info("(current_time-last_time)/1000===="+(current_time-last_time)/1000);logger.info("fromweixinapiaccessToken:"+accessToken);returnaccessToken;}returnnull;}根据access_token获取jsapiTicket
/微信分享,获取jsapiTicket/publicStringgetShareJsapiTicket(String[]wxInfo)throwsException{Stringaccess_Token=this.getWeiXinAccessToken(wxInfo);if(StringUtils.isEmpty(access_Token)){//获取accessToken失败//this.logger.warn(siteId+"accessTokenisempty.");JsonObjectjsonObject=newJsonObject();jsonObject.addProperty("errcode","10000");jsonObject.addProperty("errmsg","access_error");returnjsonObject.toString();}Stringurl="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_Token+"&type=jsapi";StringjsapiTicket=this.httpReqExecute(url);this.logger.warn("fromweixinapijsapiTicketis:"+jsapiTicket);if(StringUtils.isNotEmpty(jsapiTicket)){returnjsapiTicket;}returnnull;}Http远程调用
privateStringhttpReqExecute(Stringurl){Stringresult="";DefaultHttpClienthttpclient=null;try{httpclient=newDefaultHttpClient();HttpPosthttppost=newHttpPost(url);//执行HttpResponseresponse=httpclient.execute(httppost);HttpEntityentity=response.getEntity();if(entity!=null&&response.getStatusLine().getStatusCode()==200){result=EntityUtils.toString(entity,"UTF-8");}}catch(Exceptione){logger.error("WeiXinShareAction调用微信API失败!",e);}finally{//关闭连接,释放资源httpclient.getConnectionManager().shutdown();}returnresult;}返回成功
fromweixinapiaccessToken:{"access_token":"12_9UgVn7tFVtvf_7r4Lq4V9W9-pQdZpqWxVjFsPoF3hv3J5_XfwQWqauj4n9-ZMikC1_oCp0IpBxjpZr-Ty8XzG8QMeV2QVukFz5_NP7kjAB05MX9msxRg0FlpAAMjonrrh5wxSEFfKHEc0_BDHFKjAFAXVA","expires_in":7200}fromweixinapijsapiTicketis:{"errcode":0,"errmsg":"ok","ticket":"HoagFKDcsGMVCIY2vOjf9j_Us44Qhuo4KdgH5u8ewMjOCTUO44m1hKqgEsJYIyFR9HWrmmz-wrsb9KLdmpATRw","expires_in":7200}
借鉴
最新资讯
-

小程序制作平台选型踩坑记录:2026年五大主流方案横向对比
2026 年微信小程序月活达 10.7 亿、覆盖 108 个行业,本次横向对比即速应用、乔拓云、凡科、有赞、微盟五大主流平台,分三阶段给出选型结论,核心聚焦成本、扩展性、运营能力三大维度。 -

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。










