java 创建微信卡卷 --------页面领取卡卷 --------  卡卷核销    

本文介绍了如何使用Java进行微信卡卷的创建,包括获取token、上传logo、拼接并创建卡卷参数。接着讲解了用户如何通过前端页面领取卡卷,需要注意时间戳的位数问题。最后,详细阐述了线上核销卡卷的步骤,包括拉取卡卷、解密code、查询状态和完成核销。在实际操作中,本地测试可能出现权限问题,但真机测试正常。
摘要由CSDN通过智能技术生成

1、创建微信卡卷

(1)需要获取token,获取token在之前文章有详细代码,这边就不描述了。

(2)上传卡卷logo图片。

//accessToken  获取的微信token
//fileUrl  图片的路径
public String uploadLogo(String fileUrl,String accessToken){
        try {
           
            File file = new File(fileUrl);
            if (!file.exists() || !file.isFile()) {
                throw new IOException("上传的文件不存在");
            }
            String action = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token="
                    + accessToken + "&type=image";
            URL url = new URL(action);
            String result = null;
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false); // post方式不能使用缓存
            // 设置请求头信息
            con.setRequestProperty("Connection", "Keep-Alive");
            con.setRequestProperty("Charset", "UTF-8");
            // 设置边界
            String BOUNDARY = "----------" + System.currentTimeMillis();
            con.setRequestProperty("Content-Type", "multipart/form-data; boundary="
                    + BOUNDARY);
            // 请求正文信息
            // 第一部分:
            StringBuilder sb = new StringBuilder();
            sb.append("--"); // 必须多两道线
            sb.append(BOUNDARY);
            sb.append("\r\n");
            sb.append("Content-Disposition: form-data;name=\"file\";filename=\""
                    + file.getName() + "\"\r\n");
            sb.append("Content-Type:application/octet-stream\r\n\r\n");
            byte[] head = sb.toString().getBytes("utf-8");
            // 获得输出流
            OutputStream out = new DataOutputStream(con.getOutputStream());
            // 输出表头
            out.write(head);
            // 文件正文部分
            // 把文件已流文件的方式 推入到url中
            DataInputStream in = new DataInputStream(new FileInputStream(file));
            int bytes = 0;
            byte[] bufferOut = new byte[1024];
            while ((bytes = in.read(bufferOut)) != -1) {
                out.write(bufferOut, 0, bytes);
            }
            in.close();
            // 结尾部分
            byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
            out.write(foot);
            out.flush();
            out.close();
            StringBuffer buffer = new StringBuffer();
            BufferedReader reader = null;
            try {
                // 定义BufferedReader输入流来读取URL的响应
                reader = new BufferedReader(new InputStreamReader(con
                        .getInputStream()));
                String line = null;
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }
                if (result == null) {
                    result = buffer.toString();
                }
            } catch (IOException e) {
                System.out.println("发送POST请求出现异常!" + e);
                e.printStackTrace();
                throw new IOException("数据读取异常");
            } finally {
                if (reader != null) {
                    reader.close();
                }
            }
            JSONObject json = JSON.parseObject(result);
            String logo_url = StringEscapeUtils.unescapeJava(json.getString("url"));
            return logo_url;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            return null;
    }

(3)拼接创建卡卷参数  --- 对照微信文档接口   查看参数: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Create_a

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值