• 南海职工家拓展交友报名系统用到的接口


    在这个小系统里,主要用到了上传图片和分享两个接口。 

    以下是js代码: 

     $(function(){

        $.ajax({  
               url: "/entrysystem/getwxsign",  
               data: {"path":location.href.split('#')[0]},  
               type: "post",  
               dataType: "json",  
               success: function (data) {
                   //通过config接口注入权限验证配置
                getJSSDK(data);
               }       
           }); 
       });

    function getJSSDK(data) {

    // var appId=data.appId;
    // var timestamp=data.timestamp;
    // var nonceStr=data.nonceStr;
    // var signature=data.signature;
    wx.config({
    debug : false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId : data.appId, // 必填,公众号的唯一标识
    timestamp : data.timestamp, // 必填,生成签名的时间戳
    nonceStr : data.nonceStr, // 必填,生成签名的随机串
    signature : data.signature,// 必填,签名,见附录1
    jsApiList : [ 'chooseImage', 'uploadImage', 'downloadImage',
    'previewImage', 'onMenuShareTimeline', 'onMenuShareAppMessage',
    'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone' ]
    });
    }
    wx.ready(function() {
    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
    // config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口
    // 放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    var shareData = {
    title : $('title').text(),// 分享标题
    desc : '青年男女职工报名即可参加,南海职工家为您组织的游戏、徒步、划船、骑单车等活动,我们约吧',// 分享描述 ,这里请特别注意是要去除html
    link : 'http://test.ep7.net/entrysystem/servlet/oauth',// 分享链接
    imgUrl : 'http://test.ep7.net/entrysystem/images/labourunion.jpg',// 分享图标
    dataUrl : '' // 如果type是music或video,则要提供数据链接,默认为空
    };
    wx.onMenuShareTimeline(shareData);
    wx.onMenuShareAppMessage(shareData);
    wx.onMenuShareQQ(shareData);
    wx.onMenuShareWeibo(shareData);
    wx.onMenuShareQZone(shareData);
    });
    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
    // 也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    wx.error(function(res) {
    alert("error" + res.errMsg);
    });

     后台java代码:

    /**
     * 获取微信签名
     * GetSigualueServlet
     * 创建人:xbj
     * 时间:2017年5月22日-下午2:05:53 
     * @version 1.0.0
     *
     */
    public class GetWXSignatureServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    //发送获取微信信息请求的页面路径
    String path = request.getParameter("path");
    //获取微信相关信息
    String info = getWXInfo(path);
    PrintWriter out = response.getWriter();
    out.print(info);
    out.flush();
    out.close();
    }
    /**
    * 获取微信信息 
    * 方法名:getWXInfo
    * 创建人:xbj
    * 时间:2017年5月15日-下午2:23:16 
    * @param path
    * @return JSONObject
    * @exception 
    * @since  1.0.0
    */
    private String getWXInfo(String path){
    JSONObject json = new JSONObject();
            String appId = ConfigurationUtil.appID;
       //时间戳
      String timestamp = String.valueOf(new Date().getTime()/1000);
      //随机数
      String nonceStr = RandomStringUtils.randomAlphanumeric(20);
      //微信加密签名
      String signature = getSignaTure(nonceStr, timestamp, path);
      json.put("appId", appId);
      json.put("timestamp",timestamp);
      json.put("nonceStr",nonceStr);
        json.put("signature", signature);
      return json.toString();
    }
    /**
    * 获取签名
    * (这里用一句话描述这个方法的作用)
    * 方法名:getSignaTure
    * 创建人:xbj
    * 时间:2017年5月15日-下午2:21:07 
    * @param nonceStr
    * @param timestamp
    * @param path
    * @return String
    * @exception 
    * @since  1.0.0
    */
    private String getSignaTure(String nonceStr, String timestamp, String path){
    AT at = ATUtil.freshAccessToken();
    if(at != null){
    String aceessToken = at.getAccess_token();
    String ticket = ATUtil.getTicket(aceessToken);
    String str = "jsapi_ticket="+ticket+"&noncestr="+nonceStr+"&timestamp="+timestamp+"&url="+path;
    return JStrUtil.sha1Encode(str).toLowerCase();
    }
    return null;
    }
    }
    public class ATUtil {
    /**
    * 获取access-token
    * (这里用一句话描述这个方法的作用)
    * 方法名:freshAccessToken
    * 创建人:xbj
    * 时间:2017年5月9日-上午10:07:41 
    * @return AT
    * @exception 
    * @since  1.0.0
    */
    public static AT freshAccessToken(){
    AT at = null;
    String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
                +ConfigurationUtil.appID+"&secret="+ConfigurationUtil.appsecret;
    String result = HttpUtil.requestHTTP(url, "get", "");
    if (result.contains("access_token")) {
    JSONObject jsonObject = JSONObject.fromObject(result);
    at = new AT(jsonObject.getString("access_token"), jsonObject.getLong("expires_in"));
    }
    return at;
    }
    /**
    * 获取ticket
    * (这里用一句话描述这个方法的作用)
    * 方法名:getTicket
    * 创建人:xbj
    * 时间:2017年5月9日-上午10:44:47 
    * @param at
    * @return String
    * @exception 
    * @since  1.0.0
    */
    public static String getTicket(String at){
    String url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+at+"&type=jsapi";
    String ticket = "";
    String result = HttpUtil.requestHTTP(url, "get", "");
    if(result != null && !"".equals(result)){
    JSONObject json = JSONObject.fromObject(result);
    ticket = json.getString("ticket");
    }
    return ticket;
    }
    }
    public class AT {
    private final String access_token;
    private final long expire_in;
    public AT(String at, long ei) {
    this.access_token = at;
    this.expire_in = ei;
    }
    public AT(String at) {
    this.access_token = at;
    this.expire_in = 0;
    }
    public String getAccess_token() {
    return access_token;
    }
    public long getExpire_in() {
    return expire_in;
    }
    }
  • 相关阅读:
    android watchdog 学习
    apt-get 使用详解
    study java uiautomator 0731
    关于测试人员的职业发展(转)
    双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法
    step of install xiaocong/uiautomator
    双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法
    关于Wubi安装增加容量以及移至真实分区的解决方法!使用LVPM软件
    android uiautomator + shell 网址
    Ubuntu中 JDK的安装和卸载
  • 原文地址:https://www.cnblogs.com/xbj-2016/p/6991697.html
Copyright © 2020-2023  润新知