微信JSSDK开发,调用微信扫一扫 JAVA & jsp前端 & js实现

// 微信JSSDK的AccessToken请求URL地址
 ublic final static String weixin_jssdk_acceToken_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=公众号appid&secret=众号appsecret;
// 微信JSSDK的ticket请求URL地址 
public final static String weixin_jssdk_ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi"; 
/**
     * 获取微信JSSDK的access_token 
     * @author Benson
     */
    public static String getJSSDKAccessToken() {  
        String returnString="";
        String requestUrl = weixin_jssdk_acceToken_url;  
        JSONObject jsonObject = httpRequest(requestUrl, "GET", null);  //Http GET请求
        // 如果请求成功   
        if (null != jsonObject) {  
            try {  
                returnString=jsonObject.getString("access_token");  
            } catch (JSONException e) {  
                returnString = null;  
            }  
        }  
        return returnString;  
    } 
    
    /**
     * 获取微信JSSDK的ticket 
     * @author Benson
     */
    public static String getJSSDKTicket(String access_token) {  
        String returnString="";
        String requestUrl = weixin_jssdk_ticket_url.replace("ACCESS_TOKEN", access_token);  
        JSONObject jsonObject = httpRequest(requestUrl, "GET", null);  
        // 如果请求成功   
                if (null != jsonObject) {  
                    try {  
                        returnString=jsonObject.getString("ticket");  
                    } catch (JSONException e) {  
                        returnString = null;  
                    }  
                }  
        return returnString;  
    } 

//获取微信JSSDK签名,用于调用微信扫一扫,返回对应数据

@Override
    public Map getSignture(HttpServletRequest request,ModelAndView mav) {
        String js_accessToken = WeixinUtil.getJSSDKAccessToken();  //获取微信jssdk---access_token
        String jsapi_ticket = WeixinUtil.getJSSDKTicket(js_accessToken); //获取微信jssdk---ticket
        System.out.println("jsapi_ticket==="+jsapi_ticket);
        
        //获取完整的URL地址
        String fullPath=BasePath.getFullPath(request);
        Map data = WxJSsign.sign(jsapi_ticket, fullPath);
        mav.addObject("timestamp", data.get("timestamp"));
        mav.addObject("nonceStr", data.get("nonceStr"));
        mav.addObject("signature", data.get("signature"));
        return data;
    }

 

//JSP页面 放置3个隐藏的input 获取时间戳,签名等信息

<input type="hidden" id="timestamp" value="${timestamp}"/>
<input type="hidden" id="nonceStr" value="${nonceStr}"/>
<input type="hidden" id="signature" value="${signature}"/>

 

        var timestamp = $("#timestamp").val();//时间戳
        var nonceStr = $("#nonceStr").val();//随机串
        var signature = $("#signature").val();//签名
        wx.config({
              debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
              appId: '公众号ID', // 必填,公众号的唯一标识
              timestamp: timestamp, // 必填,生成签名的时间戳
              nonceStr: nonceStr, // 必填,生成签名的随机串
              signature: signature,// 必填,签名,见附录1
              jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
          });
        //点击扫描按钮,扫描二维码并返回结果
          document.querySelector('#scanQRCode').onclick = function () {
              wx.scanQRCode({
                needResult: 1,
                desc: 'scanQRCode desc',
                success: function (res) {
                      //扫码后获取结果参数:htpp://xxx.com/c/?6123,截取到url中的防伪码后,赋值给Input
                      var url = res.resultStr;
                      var tempArray = url.split('?');
                      var tempNum = tempArray[1];
                      $("#id_securityCode_input").val(tempNum);
                      
                }
              });
          };

 

 

//演示结果“

\             \           \

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值