微信公众号自定义分享功能 与 获取点击分享者的openid,通过cookic校验,重新请求获取

微信公众号自定义分享功能 与 获取点击分享者的openid,通过cookic校验,重新请求获取
引用的微信 js:


   
1
2
前端jsp 实现:

 


                              
                             
                             
 

1
2
3
4
5
前端js 实现代码:

 /* 微信获取登录者详情信息  */
$(document).ready(function(){
              //这里的cookic 解决微信分享成功后,获取点击分享者的openid,让其重新请求获取就可以。
               var str=$.cookie('cookic');
               var openid=$("#weixinUsername").val();
               if(str=="" || str==undefined || openid==null || openid==''){
                    //获取网页地址
                    var url=window.location.href;
                   //对网页地址进行处理
                    var repUrl = url.replace("&eId=", "_");
                    var index=url.indexOf("bm");
                    // 发送请求,后台处理,经过微信登录,授权,获取到登录者的详情信息。再重定向到这个页面。
                    var newurl=url.substring(0,index)+"weixin/palogin?redirect_uri="+repUrl+"&company="+'${activity.company}';
                     window.location.href=newurl;
                     //重新赋值,不是undefind就好,不然页面会一直刷新
                     $.cookie('cookic',"aaa")
                }
          =========================================================================      
 /* 微信分享功能  */
             //获取分享的地址,生成参数不能变,不能随便定义分享链接, ( 需要去微信公众号配置 JS安全域名。)
            var strurl=window.location.href.split('#')[0];
            //页面初始化发送请求,根据路径strurl 与根据你所需要的参数,获取wx.config的必要参数。注意请求回来的参数大小写
               $.get("${ctx}/pub/config",{"url":strurl,company:"${activity.company}"},function(data,status){
               if(status == "success"){
               wx.config({
                               debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                               appId: data.appid, // 必填,公众号的唯一标识
                               timestamp: data.timestamp, // 必填,生成签名的时间戳
                               nonceStr: data.noncestr, // 必填,生成签名的随机串
                               signature: data.signature,// 必填,签名
                               jsApiList: [ 
                                           //把需要的接口加入至列表   全部用的旧的接口方法,新的可能不好使。
                                          "onMenuShareTimeline", //分享到朋友圈
                                          "onMenuShareAppMessage", //分享到朋友
                                          "onMenuShareQQ", //分享到QQ
                                       ]  // 必填,需要使用的JS接口列表,所有JS接口列表
                                                        
                           });  
                           wx.ready(function(){
                                 wx.onMenuShareTimeline({
                                             title: "活动报名,分享给朋友圈", // 分享标题
                                             desc: "活动报名", // 分享描述
                                             link: strurl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                                             imgUrl:"", // 分享图标s
                                             type: 'link', // 分享类型,music、video或link,不填默认为link
                                             dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                                             success: function () {
                                                 
                                             },
                                             cancel: function () {
                                                 // 用户取消分享后执行的回调函数
                                                //alert("fail");
                                             },
                                             fail: function () {
                                                     // 用户取消分享后执行的回调函数
                                                  //alert("fail");
                                             },
                                     });
                                    wx.onMenuShareQQ({
                                             title: "活动报名,分享给好友", // 分享标题
                                             desc: "分享描述", // 分享描述
                                             link: strurl, // 分享链接,
                                             imgUrl:"", // 分享图标s
                                             type: 'link', // 分享类型,music、video或link,不填默认为link
                                             dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                                             success: function () {
                                             // 用户确认分享后执行的回调函数
                                                 //alert("OK");
                                             },
                                             cancel: function () {
                                             // 用户取消分享后执行的回调函数
                                                //alert("fail");
                                             } ,
                                             fail: function () {
                                                     // 用户取消分享后执行的回调函数
                                                  // alert("fail");
                                             },
                                     });
                                 wx.onMenuShareAppMessage({
                                             title: "活动报名,分享给朋友哦", // 分享标题
                                             desc: "分享描述", // 分享描述
                                             link: strurl, // 分享链接,
                                             imgUrl:"", // 分享图标s
                                             type: 'link', // 分享类型,music、video或link,不填默认为link
                                             dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                                             success: function () {
                                             // 用户确认分享后执行的回调函数
                                                // alert("OK");
                                             },
                                             cancel: function () {
                                                 // 用户取消分享后执行的回调函数
                                                //alert("fail");
                                             },
                                             fail: function () {
                                                     // 用户取消分享后执行的回调函数
                                                   //alert("fail");
                                             },
                                     });
                           });
                           wx.error(function(res){
                               // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
                               //也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                              // alert("失败!");
                           });
                       }
               },"json");
  })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
引用的jar包:

        
       
            me.chanjar
            weixin-java-mp
            1.3.3
       

       
            me.chanjar
            weixin-java-common
            1.3.3
       

1
2
3
4
5
6
7
8
9
10
11
分享的后端代码:

    /**
     * 
     * 功能:微信分享接口,获取wx.config 所需的必要参数
     * 作者:wj
     * 日期:2019年5月23日上午9:22:13
     */
    @RequestMapping(value = "/config", method = RequestMethod.GET)
    @ResponseBody
    public WxJsapiSignature wxJsSdkConfig(HttpServletRequest request,String url,String company) {
        WxMpService wxMpService = new WxMpServiceImpl();
        WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
        CustomConfig customConfig = SysConfigUtil.getSysConfigBySystem("weChatPaymentPlugin", company);
        //微信公众号的appid
        String AppId = customConfigService.findByKey("wx_app_id_"+company).getParaKeyValue();
        // 微信公众号的app corpSecret
        String Secret = customConfigService.findByKey("wx_app_secrate_"+company).getParaKeyValue()
        wxMpService.setWxMpConfigStorage(config);
        try {  // 直接调用wxMpServer 接口 
            WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url);
            return wxJsapiSignature;
        } catch (WxErrorException e) {
        e.getMessage();
        System.out.println(e.getMessage());
            return null;
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
微信号公共平台:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432
1
成功页面展示;

 ———————————————— 
版权声明:本文为CSDN博主「吉吉_国王」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangji201314/article/details/90669395

你可能感兴趣的:(微信)