一,准备util类

public class WXUtils {
//获取token信息 
public static String getToken(String tokenUrl,String wxappid,String wxappsecret) throws ClientProtocolException,IOException {
String access_token = null;
String tokenUrlReq = tokenUrl.replaceAll("WXAPPID", wxappid).replaceAll("WXAPPSECRET", wxappsecret);
        HttpGet httpGet = new HttpGet(tokenUrlReq);
        HttpClient httpClient = HttpClients.createDefault();
        HttpResponse res = httpClient.execute(httpGet);
        HttpEntity entity = res.getEntity();
        String result = EntityUtils.toString(entity, "UTF-8");
        JSONObject jsons = JSONObject.fromObject(result);
        String expires_in = jsons.getString("expires_in");
        //缓存
        if(Integer.parseInt(expires_in)==7200){
            //ok
            access_token = jsons.getString("access_token");
        }else{
            System.out.println("出错获取token失败!");
        }
        return access_token;
    }

}

获取access_token :

String access_token = WXUtils.getToken(tokenUrl, wxappid, wxappsecret);

String qrCode = centerCode+'_'+autoGenericCode(i+"",3);(生成的个数可以for循环,主要方法是autoGenericCode()方法,其它为区分标识)

/**

*autoGenericCode

* 不够位数的在前面补0,保留num的长度位数字
     * @param code
     * @return
     */
    private String autoGenericCode(String code, int num) {
        String result = "";
        result = String.format("%0" + num + "d", Integer.parseInt(code) );
        return result;

}

//GetPostUrl

public String GetPostUrl(String access_token,String centerCode,String qrCode) throws Exception {
String url = createcodeUrl+access_token;
         Map<String,Object> param = new HashMap<String, Object>();
         param.put("scene", qrCode);
         param.put("page", qrcodePage);  //qrcodePage为指定的跳转页面
         param.put("width", 430);
         param.put("auto_color", false);
         Map<String,Object> line_color = new HashMap<String, Object>();
         line_color.put("r", 0);
         line_color.put("g", 0);
         line_color.put("b", 0);
         param.put("line_color", line_color);
        
         JSONObject json = JSONObject.fromObject(param);
         String res = httpPostWithJSON(url,json.toString(),centerCode,qrCode);
         return res;

}

//返回图片保存 ,根据 id 
public String httpPostWithJSON(String url, String json,String centerCode,String qrCode) throws Exception {
//生成二维码编号区别
String nowTime = DateUtils.getDateTimeNoFormat();
String fileName = qrCode+"_"+nowTime+".png";
String filePath = imageRootPath+"/"+qrcodePath+"/";
        String result = fileName;
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        httpPost.addHeader("Content-Type", "application/json");
   
        StringEntity se = new StringEntity(json);
        se.setContentType("application/json");
        se.setContentEncoding(new BasicHeader("Content-Type", "UTF-8"));
        httpPost.setEntity(se);
        
        CloseableHttpResponse response = httpClient.execute(httpPost);
        if (response != null) {
        org.apache.http.HttpEntity resEntity = response.getEntity();
            if(resEntity != null) {
            InputStream instreams = resEntity.getContent(); 
                File saveFile = new File(filePath+fileName);
                // 判断这个文件(saveFile)是否存在
                if (!saveFile.getParentFile().exists()) {
                // 如果不存在就创建这个文件夹
                saveFile.getParentFile().mkdirs();
                }
                saveToImgByInputStream(instreams, filePath,fileName);
            }
        }
        httpPost.abort();
        return result;

}

/* @param instreams 二进制流
    * @param imgPath 图片的保存路径
    * @param imgName 图片的名称
    * @return
    *      1:保存正常
    *      0:保存失败
    */
public static int saveToImgByInputStream(InputStream instreams,String imgPath,String imgName){
int stateInt = 1;
ByteArrayOutputStream outStream = null;
FileOutputStream fos = null;
    if(instreams != null){
    try {
    outStream = new ByteArrayOutputStream(); 
    //创建一个Buffer字符串 
            byte[] buffer = new byte[1024]; 
            //每次读取的字符串长度,如果为-1,代表全部读取完毕 
            int len = 0; 
            //使用一个输入流从buffer里把数据读取出来 
            while( (len=instreams.read(buffer)) != -1 ){ 
            //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 
            outStream.write(buffer, 0, len); 
            } 
            //关闭输入流 
            //instreams.close(); 
            //把outStream里的数据写入内存 
            byte[] data = outStream.toByteArray();
            File file = new File(imgPath+imgName);//可以是任何图片格式.jpg,.png等
            fos = new FileOutputStream(file);
            fos.write(data); 
            fos.flush();
    } catch (Exception e) {
    stateInt = 0;
    e.printStackTrace();
        } finally {
        try {
        if(fos!=null){
        fos.close();
        }
        if(outStream!=null){
        outStream.close();
        }
        } catch (IOException e) {
        e.printStackTrace();
        }
       }
    }
    return stateInt;
}

微信小程序码的生成(java)相关推荐

  1. 微信小程序码的生成(JAVA完整版) 亲测可用

    JAVA生成小程序码(太阳码) 首先准备工具类,这里我使用的是QrUtil;废话不多说,上工具类; 工具类是获取token使用; appid = 小程序appID secret = 小程序秘钥 /** ...

  2. 微信小程序业务-字符串生成二维码(weapp-qrcode)

    微信小程序业务-字符串生成二维码(weapp-qrcode) 前言 邂逅weapp-qrcode 基本使用 详细参数 小程序组件中使用 image属性详解 想使用网络图片? 参考地址 前言 在小程序项 ...

  3. 微信小程序使用weapp-qrcode生成二维码

    <canvas style="width:108rpx;height:108rpx; canvas-id='qrcode'></canvas> // weapp-qr ...

  4. 微信小程序:检讨书生成微信小程序源码

    对于经常写检讨的小伙伴来说,福音来了 因为这是一款检讨书生成小程序 所以再也不用为了写检讨而烦恼了哦 支持自定义字数下线,主题自定义 支持多种类型检讨比如:学生党的,男朋友,领导演讲稿,共青团申请书等 ...

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

    随着微信小程序的火热应用,市面上有关小程序开发的需求也多了起来.近来分析了一项生成有关生成微信小程序码的需求--要求扫码跳转到小程序指定页面(带参数):看了下小程序官方文档,以及网上的例子,未看到多少 ...

  6. php实现自定义中间logo的微信小程序码

    php实现自定义中间logo的微信小程序码这里写自定义目录标题 小程序码生成的时候是默认使用小程序后台设置的小程序icon图片的,但是在有些场景我们可能要替换成我们自己想要的icon. 下面先放代码: ...

  7. 【程序源代码】微信小程序商城管理系统(Java后台+微信小程序)最新版

    关键字:微信小程序 商城系统 02 - [技术框架] 微信小程序商城管理系统(Java后台+微信小程序) 基于Spring+Vue+Mysql+Redis主流技术开发框架集成开发的微信商场管理系统:其 ...

  8. 关于获取微信小程序码的“47001”错误码的坑

    最近在项目组用Java写了一条获取微信小程序码的api,根据微信的接口文档进行一步一步的操作,可就是按照微信的接口文档一步一步来,微信给我返回的结果一直都是47001. {"errcode& ...

  9. 获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

    本文主要介绍如何在微信开发者工具中,模拟微信扫描小程序码打开小程序的场景,进行调试. 二维码调试可以看这篇文章:微信开发者工具模拟扫描二维码调试 添加编译模式 添加一个咱们自定义的编译模式 输入模式名 ...

  10. 微信小程序支付-付款(Java后台)

    微信小程序支付-付款(Java后台) 一.概述 接触微信小程序支付有一段时间,趁着项目上线空闲期,来总结一下付款.退款.提现到银行卡.查询流水等步骤过程,涉及到的知识,以及编程过程中需要注意的问题. ...

最新文章

  1. 结构化综合布线系统中的干线子系统是指(33)。【答案】D
  2. 微软推出新逆天开源语言Bosque,告别 for 循环,提高开发效率!
  3. .net mvc 报表_FastReport.Net已实现对.Net 5.0的支持
  4. 唱歌如何保持高位置_如何理解歌唱发声的高位置?如何保持高位置歌唱状态?【男高音】...
  5. QT的QOpenGLDebugLogger类的使用
  6. springboot扫描组件_springboot多模块包扫描问题的解决方法
  7. 使用pm2启动Node和Vue项目教程
  8. 如何不用 List.clear() 方法 就清空 list 中的 所有元素(中兴面试)
  9. nodejs常用组件
  10. python有什么游戏可以开发智力_用Python解“智力游戏”,你智商够吗?
  11. Vue3.0中文地址文档
  12. 加解密篇 - 非对称加密算法 (RSA、DSA、ECC、DH)
  13. matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
  14. 机器人控制器编程实践指导书旧版-实践一 LED灯(数字量)
  15. mysql最左前缀原则学习笔记,in也可以走索引
  16. RV1109人脸识别门禁闸机主板方案
  17. HDU-2182 Forg 动态规划DP 题解
  18. php替换掉,php替换
  19. 解决strongOD与olly advanced插件冲突问题
  20. 【精】Verilog语言缩写规范

热门文章

  1. 惠新宸:我也曾经是“不适合”编程的人(图灵访谈)
  2. oracle重置口令是什么意思,Oracle重置数据库命令
  3. PHP修改防火墙ip,利用防火墙进行同网段下的ip地址欺骗
  4. 蓝桥杯安慰奶牛java_最小生成树——安慰奶牛(蓝桥杯试题集)
  5. fastjson 添加key value_采坑系列—fastjson
  6. Linux静态库运行找不到lc,创建和使用静态库(问题:undefined reference)
  7. 浅析单调递增子序列问题(LIS)
  8. 关于中职计算机专业,关于中职学校计算机专业改革探讨
  9. android 自定义相机,Android应用开发之android 7自定义相机预览及拍照功能
  10. 查看linux的机器内存大小,linux 查看机器内存方法 (free命令)