生成微信小程序码java实现

 @Override
    public ModelAndView onSubmit(HttpServletRequest req, HttpServletResponse res, WxQrCodeForm cmd, BindException err) throws Exception {
        SimpleResult<Object> result = SimpleResult.create(false);
        Locale locale = new Locale("en", "US");
        ResourceBundle resource = ResourceBundle.getBundle("config/wx-config", locale);   //读取属性文件
        String appId = resource.getString("appId"); //开发者设置中的appId
        String secret = resource.getString("appSecret"); //开发者设置中的appSecret
        AccessToken accessToken = null;
        String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret;
        JSONObject jsonObject = WeixinUtil.httpRequest(requestUrl, "GET", null);
        // 如果请求成功
        if (null != jsonObject) {
            try {
                accessToken = new AccessToken();
                accessToken.setToken(jsonObject.getString("access_token"));
                accessToken.setExpiresIn(jsonObject.getIntValue("expires_in"));
            } catch (JSONException e) {
                accessToken = null;
                // 获取token失败
                logger.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getIntValue("errcode"), jsonObject.getString("errmsg"));
            }
        }
        String token = accessToken.getToken();
        getminiqrQr(token);
        return ModelAndViewUtil.json(result);
    }

    public Map getminiqrQr(String accessToken) {
        RestTemplate rest = new RestTemplate();
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            String url = "https://api.weixin.qq.com/weixin/getwxacode?access_token=" + accessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("path", "pages/search/search"); //跳转到查询物流(自定义)
            param.put("width", 430);
            param.put("auto_color", false);
            Map<String, Object> line_color = new HashMap<>();
            line_color.put("r", 0);
            line_color.put("g", 0);
            line_color.put("b", 0);
            param.put("line_color", line_color);
            logger.info("调用生成微信URL接口传参:" + param);
            MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
            HttpEntity requestEntity = new HttpEntity(JSON.toJSONString(param), headers);
            ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
            logger.info("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody());
            byte[] result = entity.getBody();
            logger.info(Base64.encodeBase64String(result));
            inputStream = new ByteArrayInputStream(result);
            File file = new File("/Users/apple/Desktop/abc.png");
            if (!file.exists()) {
                file.createNewFile();
            }
            outputStream = new FileOutputStream(file);
            int len = 0;
            byte[] buf = new byte[1024];
            while ((len = inputStream.read(buf, 0, 1024)) != -1) {
                outputStream.write(buf, 0, len);
            }
            outputStream.flush();
        } catch (Exception e) {
            logger.error("调用小程序生成微信永久小程序码URL接口异常", e);
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

原文地址:https://www.cnblogs.com/dreammyone/p/10711024.html

时间: 2024-10-07 21:46:36

生成微信小程序码java实现的相关文章

关于.NET HttpClient方式获取微信小程序码(二维码)

随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求——要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档,以及网上的例子,未看到多少有价值的采用C#调用小程序接口生成小程序码的例子,于是拾起多年前的代码,略作分析尝试,在此分享给有需要的人,并以此抛砖引玉. 此文以HttpClient方式示例,当然采用老旧的HttpWebRequest也可以,在此不作分析.生成微信小程序码(二维码)的接口主要有三个: https://develo

「速成应用」一键生成微信小程序平台 可视化制作开发无需代码

经历了频繁的更新迭代,小程序已经构建起了趋于完善的生态,与此同时,以「速成应用」为代表的小程序第三方开发平台也在推动着小程序市场的发展.为了更好地助力企业打造微信内电商生态闭环,实现线上线下引流,「速成应用」于近日进行了全功能的更新,通过对各类功能组件的优化,帮助企业实现商业模式的转型升级与营销突破. 「速成应用」根据商家反馈的问题,重点对小程序模块中的电商.外卖等功能进行优化升级,旨在帮助企业解决门店经营与小程序线上营销两大难题.在这次升级过程中同样也对辅助功能进行了优化.升级完成后,全线功能

小程序-将页面生成一个小程序码分享出去

这个需求我遇到过2次.一次是在识别二维码后跳转到其它页面,另一次是识别二维码后进入到生成小程序码的当前页面. 我有一个梦想,就是成为一名黑客!!!!!! 小程序中js wx.request({        url: '',        method: 'POST',        data: {        ModuleName: "",    //空间名 接口文档里每个接口会有标明 必填        MethodName: "GetQrCode",   

微信小程序:java后台获取openId

一.功能描述 openId是某个微信账户对应某个小程序或者公众号的唯一标识,但openId必须经过后台解密才能获取(之前实现过前台解密,可是由于微信小程序的种种限制,前台解密无法在小程序发布后使用) 二.实现流程 1. 获取微信用户的登录信息: 2. 将encryptedData中的数据作为参数传给java后台 3. java后台进行解密 三.代码实现 1. 后台的解密代码 1 /** 2 * decoding encrypted data to get openid 3 * 4 * @para

微信小程序-整理各种小程序源码和资料免费下载

微信小程序整理下载 [小程序源码]微信小程序-车源宝微信版 [小程序源码]小程序-微赞社区(论坛demo) [小程序源码]微信小程序-收支账单 [小程序工具]微信小程序-日历 [小程序源码]小程序-在线聊天功能 [小程序源码]微信小程序-大好商城(新增功能天气查询和2048游戏) [小程序源码]微信小程序-查询号码归属地 [小程序源码]微信小程序-备忘录2 [小程序源码]微信小程序-QQ音乐 [小程序源码]小程序-货币汇率 [小程序源码]微信小程序-大学图书馆 [小程序源码]小程序-积分商城 [

C# 生成小程序码

1 /// <summary> 2 /// B接口-微信小程序带参数二维码的生成 3 /// </summary> 4 /// <param name="access_token"></param> 5 /// <returns></returns> 6 public static string CreateWxCode(string access_token string roomId) 7 { 8 string

借助云开发10行代码生成小程序码,可以微信扫码快速进入指定小程序页

最近老有同学问我,如何生成小程序二维码,让用户扫码后能快速进入指定页面.经过一番研究,发现用云开发的云调用来实现特别方便,基本上10行代码就可以快速的生成指定页面的二维码.这样我们在做一些线下业务时就能让用户方便快速的进入到指定页面了,比如我们的点餐小程序,我们可以在二维码里绑定桌号,这样用户用微信扫码二维码,就可以快速的进入点餐页面了,并且可以识别到用户当前所在的桌号. 注意事项 我们生成的小程序码指定的页面,必须是你小程序已经发布,如果小程序还没有发布,获取小程序码绑定的页面不存在,扫码后就

微信小程序访问webService(Java)

在前台UI确认后,终于进入到后台服务的搭建及实现中.所及而来的问题就出现了,为了提高后台程序的可用性.设计初期决定,通过搭建java WebService实现.准备工作还是比较充分的,创建WebService框架,实现接口方法.通过建立测试客户端调用java WebService方法.以上内容均已通过,就在最后通过微信小程序wx.request调用WebService接口时,问题出现了.标准的java WebService返回的为xml形式的soap描述文件,并非期待的json对象或json形式

后台生成带参跳到指定页面的小程序码

方法步骤如下: 1. 获取 access_token 详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183 2. 生成小程序码 接口B:适用于需要的码数量极多的业务场景 0)可接受页面参数较短 1)通过该接口生成的小程序码,永久有效 2)数量不做限制(截止今天,官方未对生成数量做限制) 3)用户扫码后,可以在对应页面获取到二维码中scene字段下面的值 4)B接口调用分钟频率受限(目前5000次/分钟,会调整)