微信小程序> 微信小程序生成携带参数的小程序码

微信小程序生成携带参数的小程序码

浏览量:541 时间: 来源:大白能

具体文档可以看这里:获取携带参数的小程序码

第一步:获取ACCESS_TOKEN

    //获取token的接口地址    public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?" + "grant_type=client_credential&appid=APPID&secret=APPSECRET";    /**     * 获取access_token     *      * @param appid     * @param appsecret     * @return     */    public String getAccess_token(String appid, String appsecret) {        try {            String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);            JSONObject jsonObject = httpRequst(requestUrl, "GET", null);            return jsonObject.getString("access_token");        } catch (Exception e) {            return "errer";        }    }/**     *      * @Title: httpsRequest     * @Description: 发送请求,返回JSONObject对象     * @param requestUrl     * @param requestMethod     * @param outputStr     * @return     * @throws Exception     */    public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) throws Exception {        JSONObject jsonObject = null;        try {            // 使用自定义的信任管理器            TrustManager[] tm = { new X509TrustManager() {                /**                 * 检查客户端证书                 */                @Override                public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {                }                /**                 * 检查服务器端证书                 */                @Override                public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {                }                /**                 * 返回受信任的X509证书数组                 */                @Override                public X509Certificate[] getAcceptedIssuers() {                    return null;                }            } };            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");            sslContext.init(null, tm, new java.security.SecureRandom());            SSLSocketFactory ssf = sslContext.getSocketFactory();            // 建立连接            URL url = new URL(requestUrl);            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();            conn.setSSLSocketFactory(ssf);            conn.setDoOutput(true);            conn.setDoInput(true);            // 设置请求方式            conn.setRequestMethod(requestMethod);            // 当outputStr不为null时,向输出流写数据            if (null != outputStr) {                OutputStream outputStream = conn.getOutputStream();                outputStream.write(outputStr.getBytes("UTF-8"));                outputStream.close();            }            // 获取输入流            InputStream inputStream = conn.getInputStream();            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);            // 读取响应内容            StringBuffer buffer = new StringBuffer();            String str = null;            while ((str = bufferedReader.readLine()) != null) {                buffer.append(str);            }            // 关闭资源            bufferedReader.close();            inputStreamReader.close();            inputStream.close();            conn.disconnect();            jsonObject = JSONObject.fromObject(buffer.toString());        } catch (Exception e) {            throw new Exception("请求/解析失败");        }        return jsonObject;    }

第二步:生成小程序二维码工具类

import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicHeader;import org.apache.http.protocol.HTTP;/** *  * @ClassName: CreateImgUtil * @Description: 生成小程序二维码工具类 * @author cheng * @date 2017年9月13日 上午10:34:59 */@SuppressWarnings("deprecation")public class CreateImgUtil {    /**     * 私有化构造函数,防止创建本工具类的实例     */    private CreateImgUtil() {    }    @SuppressWarnings({ "resource" })    public static String httpPostWithJSON(String url, String json, String id,String dir) throws Exception {        String result = null;        DefaultHttpClient httpClient = new DefaultHttpClient();        HttpPost httpPost = new HttpPost(url);        httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");        StringEntity se = new StringEntity(json);        se.setContentType("application/json");        se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "UTF-8"));        httpPost.setEntity(se);        HttpResponse response = httpClient.execute(httpPost);        if (response != null) {            HttpEntity resEntity = response.getEntity();            if (resEntity != null) {                InputStream instreams = resEntity.getContent();                File saveFile = new File(dir + id + ".png");                // 判断这个文件(saveFile)是否存在                if (!saveFile.getParentFile().exists()) {                    // 如果不存在就创建这个文件夹                    saveFile.getParentFile().mkdirs();                }                saveToImgByInputStream(instreams, dir, id + ".png");            }        }        httpPost.abort();        return result;    }    /*     * @param instreams 二进制流     *      * @param imgPath 图片的保存路径     *      * @param imgName 图片的名称     *      * @return 1:保存正常 0:保存失败     */    private static int saveToImgByInputStream(InputStream instreams, String imgPath, String imgName) {        int stateInt = 1;        if (instreams != null) {            try {                File file = new File(imgPath + imgName);// 可以是任何图片格式.jpg,.png等                FileOutputStream fos = new FileOutputStream(file);                byte[] b = new byte[1024];                int nRead = 0;                while ((nRead = instreams.read(b)) != -1) {                    fos.write(b, 0, nRead);                }                fos.flush();                fos.close();            } catch (Exception e) {                stateInt = 0;                e.printStackTrace();            } finally {                try {                    instreams.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }        return stateInt;    }}

第三步:生成携带参数的小程序码

// 依据公司信息生成个性化小程序码,返回小程序码名称    private String createImgByCompanyId(String companyId,String dir) {        // 获取token        String appid = "wx8b3f3454sdfsdfsdgdfgdf4tr3402c2d7728";        String appsecret = "c35b5a0b94ea1ece9c0rwerwerwer34wetwetre390468b3efed7";        String token = getAccess_token(appid, appsecret);        // 生成小程序码接口url        String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN",                token);        // 二维码中信息        MapString, Object map = new HashMapString, Object();        map.put("path", "pages/index/index");// 你二维码中跳向的页面        map.put("scene", companyId);// 携带参数        String json = JSONUtils.toJSONString(map);        // 生成二维码        try {            CreateImgUtil.httpPostWithJSON(url, json, companyId,dir);            return companyId;        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎