/** * 创建临时二维码Ticket * * @param accessToken * @param expireSeconds 有效时间,单位:秒 * @param qrID 二维码标识 * @return * @throws IOException * @throws WechatExceprion */ @Bizlet("createTempQRImage") public static WechatQRCodeModel createTempQRImage( String accessToken, long expireSeconds, int qrID) throws IOException, WechatExceprion { String uri = "https://api.weixin.qq.com/cgi-bin/qrcode/create"; NameValuePair[] queryStr = new NameValuePair[1]; queryStr[0] = new NameValuePair(IWechatConstants.KEY_ACCESS_TOKEN, accessToken); JSONObject jsonObj = new JSONObject(); jsonObj.put("expire_secondes", expireSeconds); jsonObj.put("action_name", WechatQRCodeModel.QR_IMAGE_TEMPORARY); JSONObject obj = new JSONObject(); obj.put("scene_id", qrID); JSONObject obj1 = new JSONObject(); obj1.put("scene", obj); jsonObj.put("action_info", obj1); RequestEntity requestEntity = new StringRequestEntity( jsonObj.toJSONString(), IWechatConstants.CONTENT_TYPE, IWechatConstants.DEFAULT_CHARSET); String result = HttpExecuter.executePostAsString(uri, queryStr, requestEntity); String returnCode = JSONObject.parseObject(result).getString(IWechatConstants.ERROR_CODE); if (returnCode == null || IWechatConstants.RETURN_CODE_SUCCESS.equals(returnCode)) { return JSONObject.parseObject(result, WechatQRCodeModel.class); } else throw new WechatExceprion("[AccountOperations#createTempQRImage]" + result); }
/** * 将长链接转成短链接 * * @param accessToken * @param longUrl 长链接URL * @return short_url * @throws IOException * @throws WechatExceprion */ @Bizlet("connection2Short") public static String connection2Short(String accessToken, String longUrl) throws IOException, WechatExceprion { String uri = "https://api.weixin.qq.com/cgi-bin/shorturl"; NameValuePair[] queryStr = new NameValuePair[1]; queryStr[0] = new NameValuePair(IWechatConstants.KEY_ACCESS_TOKEN, accessToken); JSONObject jsonObj = new JSONObject(); jsonObj.put("long_url", longUrl); RequestEntity requestEntity = new StringRequestEntity( jsonObj.toJSONString(), IWechatConstants.CONTENT_TYPE, IWechatConstants.DEFAULT_CHARSET); String result = HttpExecuter.executePostAsString(uri, queryStr, requestEntity); String returnCode = JSONObject.parseObject(result).getString(IWechatConstants.ERROR_CODE); if (returnCode == null || IWechatConstants.RETURN_CODE_SUCCESS.equals(returnCode)) { return JSONObject.parseObject(result).getString("short_url"); } else throw new WechatExceprion("[AccountOperations#connection2Short]" + result); }
/** * 创建语义 * * @param accessToken * @param queryStr 语义搜索串, 即用户输入的文本串 * @param category 需要使用的服务类型,多个用“,”隔开,不能为空 * @param city 城市名称 * @param region 区域名称 * @param appid 公众号唯一标识i * @param uid 用户唯一id(非开发者id),用户区分公众号下的不同用户(建议填入用户openid), * 如果为空,则无法使用上下文理解功能。appid和uid同时存在的情况下,才可以使用上下文理解功能。 * @return * @throws IOException * @throws WechatExceprion */ @Bizlet("createGrammer") public static WechatGrammer createGrammer( String accessToken, String queryStr, String category, String city, String appid, String uid) throws IOException, WechatExceprion { String uri = "https://api.weixin.qq.com/semantic/semproxy/search"; NameValuePair[] apiQueryStr = new NameValuePair[1]; apiQueryStr[0] = new NameValuePair("access_token", accessToken); JSONObject jsonObj = new JSONObject(); jsonObj.put("query", queryStr); jsonObj.put("category", category); jsonObj.put("city", city); jsonObj.put("appid", appid); jsonObj.put("uid", uid); String postData = jsonObj.toString(); RequestEntity requestEntity = new StringRequestEntity( postData, IWechatConstants.CONTENT_TYPE, IWechatConstants.DEFAULT_CHARSET); String result = HttpExecuter.executePostAsString(uri, apiQueryStr, requestEntity); String returnCode = JSONObject.parseObject(result).getString(IWechatConstants.ERROR_CODE); if (returnCode == null || IWechatConstants.RETURN_CODE_SUCCESS.equals(returnCode)) { return JSONObject.parseObject(result, WechatGrammer.class); } else throw new WechatExceprion("[AdvanceOperations#createGrammer]" + result); }
/** * 通过Ticket换取二维码 * * @param ticket * @return */ @Bizlet("getQRImageByTicket") public static void getQRImageByTicket(String ticket, String savePath) { String uri = "https://mp.weixin.qq.com/cgi-bin/showqrcode"; FileOutputStream out = null; try { // ticket = URLEncoder.encode(ticket, IOperationsConstants.DEFAULT_CHARSET); NameValuePair[] queryStr = new NameValuePair[1]; queryStr[0] = new NameValuePair("ticket", ticket); byte[] datas = HttpExecuter.executeGet(uri, queryStr); File file = new File(savePath); out = new FileOutputStream(file); out.write(datas); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (out != null) out.close(); } catch (Exception e2) { } } }