SpringCloud : 接入 微信公众号平台(三)、获取JsSDK配置参数

Java:

import com.phpdragon.wechat.proxy.config.WeChatConfig;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxJsapiSignature;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RequestMapping("/system/")
@RestController
public class SystemController {

    @Autowired
    private WeChatConfig weChatConfig;

    /**
     * 获取JsSDK配置参数
     * 参考:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
     *
     * @param appId
     * @param currentUrl
     * @return
     * @throws WxErrorException
     */
    @CrossOrigin
    @PostMapping("/getJsSdkConfig")
    public WxJsapiSignature getJsSdkConfig(@RequestParam("app_id") String appId, @RequestParam("current_url") String currentUrl) throws WxErrorException {
        WxMpService wxMpService = weChatConfig.getWxMpService(appId);
        return wxMpService.createJsapiSignature(currentUrl);
    }
}

JS:

代码参考: Java微信公众平台开发(十一)--微信JSSDK中Config配置

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width" />
<title>JsSDK配置参数获取Demo</title>
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js"></script>
<script>
    //用于JS调试
    var vConsole = new VConsole(); //初始化
</script> -->
<script type="text/javascript">

    function getUrlParameter(name){
        name = name.replace(/[]/,"\[").replace(/[]/,"\[").replace(/[]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec(window.parent.location.href );
        if( results == null ) return ""; else {
            return results[1];
        }
    };

    function jssdk() {
        $.ajax({
            url : "https://www.phpdragon.com/system/getJsSdkConfig",
            type : ‘post‘,
            //contentType: "application/json",
            dataType : ‘json‘,
            data : {
                ‘current_url‘ : location.href.split(‘#‘)[0],
                ‘app_id‘: getUrlParameter("app_id")
            },
            async:true,
            success : function(rsp) {
                wx.config({
                    debug : true,
                    appId : rsp.appId,
                    timestamp : rsp.timestamp,
                    nonceStr : rsp.nonceStr,
                    signature : rsp.signature,
                    jsApiList : [ ‘checkJsApi‘, ‘onMenuShareTimeline‘,
                            ‘onMenuShareAppMessage‘, ‘onMenuShareQQ‘,
                            ‘onMenuShareWeibo‘, ‘hideMenuItems‘,
                            ‘showMenuItems‘, ‘hideAllNonBaseMenuItem‘,
                            ‘showAllNonBaseMenuItem‘, ‘translateVoice‘,
                            ‘startRecord‘, ‘stopRecord‘, ‘onRecordEnd‘,
                            ‘playVoice‘, ‘pauseVoice‘, ‘stopVoice‘,
                            ‘uploadVoice‘, ‘downloadVoice‘, ‘chooseImage‘,
                            ‘previewImage‘, ‘uploadImage‘, ‘downloadImage‘,
                            ‘getNetworkType‘, ‘openLocation‘, ‘getLocation‘,
                            ‘hideOptionMenu‘, ‘showOptionMenu‘, ‘closeWindow‘,
                            ‘scanQRCode‘, ‘chooseWXPay‘,
                            ‘openProductSpecificView‘, ‘addCard‘, ‘chooseCard‘,
                            ‘openCard‘ ]
                });
            },
            error : function(data){
                alert("获取JsSDK参数异常:" + data);
            }
        });
    }

    function isWeiXin5() {
        var ua = window.navigator.userAgent.toLowerCase();
        var reg = /MicroMessenger\/[5-9]/i;
        return reg.test(ua);
    }

    $(function(){
        jssdk();
    });

    function takePicture(){
        wx.chooseImage({
            count: 1, // 默认9
            sizeType: [‘original‘, ‘compressed‘], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: [‘album‘, ‘camera‘], // 可以指定来源是相册还是相机,默认二者都有
            success: function (res) {
                wx.uploadImage({
                    localId: localIds.toString(), // 需要上传的图片的本地ID,由chooseImage接口获得
                    isShowProgressTips: 1, // 默认为1,显示进度提示
                    success: function (res) {
                        var mediaId = res.serverId; // 返回图片的服务器端ID,即mediaId
                        //将获取到的 mediaId 传入后台 方法savePicture
                        $.post("<%=request.getContextPath()%>/savePicture",{mediaId:mediaId},function(res){
                            if(res.t == ‘success‘){

                            }else{
                                alert(res.msg)
                            }
                        })
                    },
                    fail: function (res) {
                        alertModal(‘上传图片失败,请重试‘)
                    }
                });
            },
            fail: function (res) {
                alertModal(‘上传图片失败,请重试2‘)
            },
            error: function (res) {
                alertModal(‘上传图片失败,请重试3‘)
            }
        });
    }

    function checkJsApifunction () {
             wx.checkJsApi({
               jsApiList: [
                 ‘getNetworkType‘,
                 ‘previewImage‘,
                 "chooseImage",
                 "openLocation",
                 "getLocation",
               ],
               success: function (res) {
                 alert(JSON.stringify(res));
               }
             });
   }

</script>
</head>
<body>
    <button onclick="takePicture()">拍照</button>
</body>
</html>

效果:

PS:

微信JSSDK中Config配置

JAVA 微信公众号调用摄像头并上传图片至服务器

微信jssdk实现人脸拍照的代码和出现错误解决

公众号开发文档wiki

Java开发微信公众号之整合weixin-java-tools框架开发微信公众号

从零实现 Spring Boot 2.0 整合 weixin-java-mp(weixin-java-tools) 获取 openId,用于微信授权

Demo 列表

  1. 微信支付 Demo:GitHub码云
  2. 企业号/企业微信 Demo:GitHub码云
  3. 微信小程序 Demo:GitHub码云
  4. 开放平台 Demo:GitHub码云
  5. 公众号 Demo:
    • 使用 Spring MVC 实现的公众号 Demo:GitHub码云
    • 使用 Spring Boot 实现的公众号 Demo(支持多公众号):GitHub码云
    • 含公众号和部分微信支付代码的 Demo:GitHub码云

原文地址:https://www.cnblogs.com/phpdragon/p/12557750.html

时间: 2024-08-09 16:45:44

SpringCloud : 接入 微信公众号平台(三)、获取JsSDK配置参数的相关文章

SpringCloud : 接入 微信公众号平台(四)、获取微信用户信息接口

代码参考: import com.phpdragon.wechat.proxy.config.WeChatConfig; import com.phpdragon.wechat.proxy.dto.mp.user.GetOauthUserInfoDto; import com.phpdragon.wechat.proxy.dto.mp.user.GetOpenidDto; import com.phpdragon.wechat.proxy.dto.mp.user.GetUserInfoDto;

SpringCloud : 接入 微信公众号平台(一)、接入微信请求(支持多公众号)

Maven: Feign 版本10.1.0 Spring 版本 5.1.5.RELEASE SpringBoot 版本 2.1.5.RELEASE SpringCloud 版本 2.1.1.RELEASE Weixin-java 版本 3.7.0,链接 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.6

[转载红鱼儿]delphi 实现微信开发(2)接入微信公众号平台

先要学习一下接入的资料,在这里,因为原理都在,所以一定要认真阅读,然后,利用Delphi实现一个对应函数: function CheckSignature(const signature, timestamp, nonce, token: string): boolean; var strs: TStringList;   tmpStr: string; begin strs := TStringList.Create;   try     strs.Add(token);     strs.A

微信公众号平台接口开发:基础支持,获取access_token

新建Asp.net MVC 4.0项目 WeChatSubscript是项目UI层 WeChatTools是封装操作访问公众号接口的一些方法类库 获取AccssToken 我们要的得到AccessToken,这是所有接口访问的基础,我们看看官方给出的接口调用文档 很简单明了,grant_type=client_credential,这是固定的不会变 appid与secret就是前面一章我叫大家记起来的那个认证口令数据. 下边我们来实现这个功能,新建WeCharBase.cs 1 public c

微信公众号平台接口开发:基础支持,获取微信服务器IP地址

官方说明 目前看不出来这个接口有哪些具体运用,但是既然有这个接口,那我们就试试能不能用 访问接口 修改WeCharBase.cs,新增以下2个方法 1 public static string ServerIPs 2 { 3 get { return GetServerIPs(); } 4 } 5 6 /// <summary>获取所有服务器IP</summary> 7 /// <returns></returns> 8 private static str

[.NET] 简单接入微信公众号开发:实现自动回复

简单接入微信公众号开发:实现自动回复 一.前提 先申请微信公众号的授权,找到或配置几个关键的信息(开发者ID.开发者密码.IP白名单.令牌和消息加解密密钥等). 二.基本配置信息解读 开发者ID:固定的: 开发者密码:自己扫一下就可以看到: IP白名单:设置自己配置服务器的地址: 服务器地址(URL):稍后详解: 令牌:随便写,按规则: 消息加解密密钥:随便写,或者随机生成: 三.配置服务器地址(URL) 服务器地址(URL)应该怎么配置呢?图片上的配置的地址是:http://www.nidie

基于phpcms v9开发的微信公众号平台管理模块

前沿 在公司为一家酒店联盟开发了一个微信公众号平台,期间因为要赶做其它项目,停停顿顿,整整 改改估计用在开发微信模块的时间大概一个多月,前期的开发基本上已经完成,因为这个微信公众号管理平台是在运用phpcms v9开发的,是phpcms v9的一个模块,所以给它取一个名称,就叫phpcmsv9-weinxin吧. 先上图 phpcmsv9-weinxin模块介绍 之所以叫做微信模块,是因为它是基于phpcms v9的一个插件,安装与卸载随性所欲.phpcms v9是中国领先的内容管理系统,将微信

第三方网站不能调用微信公众平台里的图片了 显示&quot;此图片来自微信公众号平台未经允许不可引用&quot;

下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微信团队对有原创保护能力的公众帐号又一举措. 是不是有点似曾相识?没错,第三方网站调用QQ空间里面的图片也是不能完整显示,提示“此图片来自QQ空间,未经允许不可引用”. 其实,腾讯这些措施应该也是无赖之举,微信公众平台已有近800万公众号入驻了,很多公众号的单篇图文消息都超过了10+阅读量,可以想象整个公众平台

微信公众号平台搭建——帮你搭起一片商机

时下网络经济时代的冲击,微信公众平台已经逐渐取代微博成为了互联网的新宠儿,通过公众号我们可以实现粉丝吸引,品牌包装,口碑营销,活动互动,业务办理等一系列线上营销活动.为商家实现时时线上线下互动,产品业务咨询办理等一系列营销活动,激发巨大商机.下面我们来一起见证一下正规的微信公众号平台是如何搭建起来的?我们分两步走:? 第一步:申请微信公众号.这个针对于之前没有公众号及没有搭建过平台的小白们.在此之前,如果纠结于是申请服务号还是订阅号的童鞋们,请往下看:对于服务号和订阅号的需求,官方是这样解释的: