微信开发--客服接口--主动发消息(发图片例子)

2018-08-08  本文已影响1048人  小小蒜头

本次微信公众号开发之客服消息用的是开发工具weixin-java-tools

1. 导入相关开发工具包

<dependency>
     <groupId>com.github.binarywang</groupId>
     <artifactId>weixin-java-mp</artifactId>
     <version>2.9.6.BETA</version>
</dependency>

2. 发送消息

内容是什么不重要,就是很长的字符串,把字符串内容转成一张图片,选择路径存放

主要就是先将图片上传到微信后台,然后再取出来发送

      SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMdd_HHmmss");
        Orders orders = this.ordersMapper.selectByPrimaryKey(orderId);
        ArrayList<OrderDetails> orderDetails = this.orderDetailMapper.selectByOrderId
                (orders.getOrderId());
        // 生成订单小票
        OrderBillUtils orderBillUtils = new OrderBillUtils(0);
        orders.setGroupName("克拉玛依新华书店");
        orders.setPayDate(new Date());
        String printInfo = orderBillUtils.getOrderBillText1(orders, orderDetails);
        // 根据str,font的样式以及输出文件目录
        Integer width = 400;
        Font font = new Font("宋体",Font.BOLD, 20);
        logger.info(font.toString());
        String[] ss = printInfo.split("/");
        logger.info("小票:" + printInfo);
        logger.info("数组长度" + ss.length);
        Integer height = 35 * ss.length;
        // 创建图片
        BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_BGR);
        Graphics g = image.getGraphics();
        g.setClip(0, 0, width, height);
        g.setColor(Color.white);
        g.fillRect(1, 1, width, height);// 先用黑色填充整张图片,也就是背景
        g.setColor(Color.black);// 在换成黑色
        g.setFont(font);// 设置画笔字体
        for (int j = 0; j < ss.length; j++) {
            g.drawString(ss[j], 20, 30 * (j + 2));// 画出字符串
        }
        g.dispose();
        String path = System.getProperty("web.root") + "orderBills" + File.separator + "electronic_" + df1.format(new Date().getTime()) + ".png";
        File file = new File(path);
        try {
            ImageIO.write(image, "png", file);// 输出png图片
        } catch (IOException e) {
            e.printStackTrace();
        }


        logger.info("电子小票地址:" + path);

3. 发送图片给微信用户

  try {
            /*
             *给支付成功用户发送电子小票二维码
             */
            String openId = (String) session.getAttribute(CURRENT_OPEN_ID);
            logger.info("openId:" + openId);

            //1. 上传图片,返回结果
            WxMediaUploadResult result = wxMpService.getMaterialService().mediaUpload(WxConsts.MediaFileType.IMAGE, file);
            logger.info("上传图片结果:" + request);

            if (result != null) {
                String media_id = result.getMediaId();

                WxMpKefuMessage wxMpKefuMessage = new WxMpKefuMessage();
                wxMpKefuMessage.setToUser(openId);
                wxMpKefuMessage.setMsgType(WxConsts.KefuMsgType.IMAGE);
                wxMpKefuMessage.setMediaId(media_id);
                //  2. 发送图片
                boolean result1 = wxMpService.getKefuService().sendKefuMessage(wxMpKefuMessage);
            }

            orders.setOrderBill(printInfo);
        } catch (WxErrorException e) {
            throw new RuntimeException(e);
        }
上一篇 下一篇

猜你喜欢

热点阅读