1.目前小程序推出了自己的识别码,小程序码,圆形的码看起来比二维码好看。
2.本文总结微信小程序的获取小程序二维码的接口开发。官方地址
3.主要内容摘抄自微信小程序的API文档,java接口开发是自己总结开发。
一、简介4.通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面。目前微信支持两种二维码,小程序码(左),小程序二维码(右),如下所示:
微信小程序获取二维码的三种方式小程序码两种小程序二维码一种5.1.官方文档有介绍获取二维码的,这里主要介绍JAVA怎么获取。2.微信小程序二维码API文档官方地址3.小程序获取的图片样式其实是有差异的;一种是我们熟悉的二维码,一种就是小程序码了;具体可根据需求选择。
获取小程序码小程序二维码的前提是必须获取小程序的TOKEN6.获取access_token详见文档
/***获取token*@paramurl*@paramgrantType*@paramappid*@paramsecret*@return*/publicstaticStringgetAccessToken(Stringurl,StringgrantType,Stringappid,Stringsecret){Stringaccess_token="";StringtokenUrl=url+"?grant_type="+grantType+"&appid="+appid+"&secret="+secret;Objectresult=HttpUtils.doGet(tokenUrl);JSONObjectjsons=JSONObject.parseObject(result.toString());Stringexpires_in=jsons.getString("expires_in");if(BL3Utils.isNotEmpty(expires_in)&&Integer.parseInt(expires_in)==7200){//okaccess_token=jsons.getString("access_token");}else{System.out.println("出错获取token失败!");}returnaccess_token;}7.参数介绍:
8.1.url:https://api.weixin.qq.com/cgi-bin/token2.grantType:client_credential3.appid:小程序appid,微信公众平台注册小程序时自动生成的。4.secret:小程序secret,微信公众平台注册小程序时自动生成的。5.url和grantType参数官网其实有介绍的。
获取小程序码的两种方式9.目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口
第一种适用于需要的码数量较少的业务场景是呢不带参数有限个小程序码接口总共生成的码数量限制为100,000,请谨慎调用。10.接口地址:
11.https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
12.(1)POST参数说明
参数类型默认值说明pathString不能为空,最大长度128字节widthInt430二维码的宽度auto_colorBoolfalse自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调line_colorObject{“r”:”0”,”g”:”0”,”b”:”0”}auth_color为false时生效,使用rgb设置颜色例如{“r”:”xxx”,”g”:”xxx”,”b”:”xxx”}13.注意:通过该接口生成的小程序码,永久有效,但数量有效,请谨慎使用。用户扫描该码进入小程序后,将直接进入path对应的页面。
(2)请求接口测试14.使用http请求插件postman或者RESTClient请求测试。
15.
16.请求测试结果返回一个小程序码图片,与微信公众平台生成二维码不同,小程序码直接返回文件流,不是微信公众平台的url和ticket。
(3)java接口开发/**1.带参数有限个数小程序码接口2.@paramurl3.@paramaccess_token4.@parampath5.@paramwidth6.@return*/publicstaticInputStreamgetwxacode(Stringurl,Stringaccess_token,Stringpath,Stringwidth){url=url+"?access_token="+access_token;JSONObjectjsonParam=newJSONObject();jsonParam.put("path",path);jsonParam.put("width",Integer.parseInt(width));jsonParam.put("auto_color",false);MapString,Objectline_color=newHashMap();line_color.put("r",0);line_color.put("g",0);line_color.put("b",0);jsonParam.put("line_color",line_color);InputStreaminstreams=HttpUtils.doWXPost(url,jsonParam);if(BL3Utils.isEmpty(instreams)){System.out.println("出错获取二维码失败!");}returninstreams;}17.参数说明
18.1.url:https://api.weixin.qq.com/wxa/getwxacode
19.2.access_token:上面有介绍(getAccessToken这个方法)
20.3.path:用户扫描该码进入小程序后,将直接进入path对应的页面;一般是首页地址:”pages/index/index”也可以带上参数:”pages/index/index?query=1”。
21.4.width:二维码的宽度int类型默认430
第二种适用于需要的码数量极多的业务场景没有数量限制呢带参数22.接口地址:
23.https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
(1)POST参数说明参数类型默认值说明sceneString最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&’()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用urlencode处理,请使用其他编码方式)pageString必须是已经发布的小程序页面,例如“pages/index/index”,如果不填写这个字段,默认跳主页面widthInt430二维码的宽度auto_colorBoolfalse自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调line_colorObject{“r”:”0”,”g”:”0”,”b”:”0”}auto_color为false时生效,使用rgb设置颜色例如{“r”:”xxx”,”g”:”xxx”,”b”:”xxx”}24.注意:通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中scene字段的值,再做处理逻辑。使用如下代码可以获取到二维码中的scene字段的值。调试阶段可以使用开发工具的条件编译自定义参数scene=xxxx进行模拟,开发工具模拟时的scene的参数值需要进行urlencode。同时需要注意,此接口的page参数中不能带任何参数,参数都在scene参数中处理,切记!!!
25.//这是首页的jsPage({onLoad:function(options){//options中的scene需要使用decodeURIComponent才能获取到生成二维码时传入的scenevarscene=decodeURIComponent(options.scene)}})
(2)请求接口测试26.
27.(3)java接口开发
/***带参数无限个数小程序码接口*@paramurl*@paramaccess_token*@parampath*@paramwidth*@return*/publicstaticInputStreamgetwxacodeunlimit(Stringurl,Stringaccess_token,Stringpath,Stringwidth){String[]str=path.split("[?]");path=str[0];Stringscene=str[1];url=url+"?access_token="+access_token;//接收参数json列表JSONObjectjsonParam=newJSONObject();jsonParam.put("scene",scene);jsonParam.put("page",path);jsonParam.put("width",Integer.parseInt(width));jsonParam.put("auto_color",false);MapString,Objectline_color=newHashMap();line_color.put("r",0);line_color.put("g",0);line_color.put("b",0);jsonParam.put("line_color",line_color);InputStreaminstreams=HttpUtils.doWXPost(url,jsonParam);if(BL3Utils.isEmpty(instreams)){System.out.println("出错获取二维码失败!");}returninstreams;}28.参数说明
29.1.url:https://api.weixin.qq.com/wxa/getwxacodeunlimit2.access_token:上面有介绍(getAccessToken这个方法)3.path:用户扫描该码进入小程序后,将直接进入path对应的页面;一般是首页地址”pages/index/index”也可以带上参数:”pages/index/index?query=1”。4.width:二维码的宽度int类型默认430
注意:第二种生成小程序码的情况只有小程序上线后才能生成二维码。其他方法生成的码只有小程序上线后才会有权限访问否则会提示小程序尚未发布获取小程序二维码适用于需要的码数量较少的业务场景总共生成的码数量限制为100,000,请谨慎调用。30.接口地址:
31.https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
32.(1)POST参数说明
参数类型默认值说明pathString不能为空,最大长度128字节widthInt430二维码的宽度33.注意:通过该接口生成的小程序二维码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入path对应的页面。
34.示例:
35.{"path":"pages/index?query=1","width":430}
36.注:pages/index需要在app.json的pages中定义
(2)请求接口测试37.
/***获取小程序二维码*@paramurl官方获取二维码地址*@paramwidth二维码的宽度int类型默认430*@paramaccess_token*@parampath*@return*/publicstaticInputStreamcreatewxaqrcode(Stringurl,Stringaccess_token,Stringpath,Stringwidth){url=url+"?access_token="+access_token;JSONObjectjsonParam=newJSONObject();jsonParam.put("path",path);jsonParam.put("width",width);InputStreaminstreams=doWXPost(url,jsonParam);if(BL3Utils.isEmpty(instreams)){System.out.println("出错获取二维码失败!");}returninstreams;}/***请求*@paramurl*@paramjsonParam*@return*/publicstaticInputStreamdoWXPost(Stringurl,JSONObjectjsonParam){InputStreaminstreams=null;HttpPosthttpRequst=newHttpPost(url);//创建HttpPost对象try{StringEntityse=newStringEntity(jsonParam.toString(),"utf-8");se.setContentType("application/json");se.setContentEncoding(newBasicHeader(HTTP.CONTENT_TYPE,"UTF-8"));httpRequst.setEntity(se);HttpResponsehttpResponse=newDefaultHttpClient().execute(httpRequst);if(httpResponse.getStatusLine().getStatusCode()==200){HttpEntityhttpEntity=httpResponse.getEntity();if(httpEntity!=null){instreams=httpEntity.getContent();}}}catch(UnsupportedEncodingExceptione){e.printStackTrace();}catch(ClientProtocolExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}returninstreams;}38.参数介绍:1.url:https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode2.access_token:上面有介绍(getAccessToken这个方法)3.path:用户扫描该码进入小程序后,将直接进入path对应的页面;一般是首页地址”pages/index/index”也可以带上参数“pages/index/index?query=1”。4.width:二维码的宽度int类型默认430。
/*@paraminstreams二进制流*@paramimgPath图片的保存路径*@paramfileName图片的名称*@returnstr图片保存地址*/publicstaticStringsaveToImgByInputStream(InputStreaminstreams,StringimagePath,StringfileName){Stringstr="";Stringpath="QRimage"+getWFileDirName();StringlinuxPath=path.replaceAll("//",File.separator);if(instreams!=null){booleanb=uploadImages(instreams,imagePath+File.separator+linuxPath,fileName);if(b){str=linuxPath+fileName;}}returnstr;}39.参数介绍
40.1.instreams:上面有介绍(createwxaqrcode这个方法)2.imagePath:保存图片的地址3.fileName:图片自定义名称(可以自定义比如:1.jpg、1.png等)。
/***IO流保存图片*@paraminstreams*@paramimagePath*@paramfileName*@return*/publicstaticbooleanuploadImages(InputStreaminstreams,StringimagePath,StringfileName){Filef=newFile(imagePath);f.setWritable(true,false);booleanflag=false;try{//1K的数据缓冲byte[]bs=newbyte[1024];//读取到的数据长度intlen;//输出的文件流Filefile=newFile(imagePath,fileName);if(!file.getParentFile().exists()){file.getParentFile().mkdirs();try{//创建新文件file.createNewFile();}catch(IOExceptione){System.out.println("创建新文件时出现了错误。。。");e.printStackTrace();}}OutputStreamos=newFileOutputStream(imagePath+File.separator+fileName);//开始读取while((len=instreams.read(bs))!=-1){os.write(bs,0,len);}//完毕,关闭所有链接os.close();instreams.close();flag=true;}catch(IOExceptione){e.printStackTrace();}returnflag;}41.直接使用下面的代码就可以获取到二维码地址了
42.StringqrcodeUrl=saveToImgByInputStream(instreams,imagePath,fileName);
三、说明43.1:通过该接口,仅能生成已发布的小程序的二维码。2:可以在开发者工具预览时生成开发版的带参二维码。3:接口1加上接口2,总共生成的码数量限制为100,000,请谨慎调用。4:POST参数需要转成json字符串,不支持form表单提交。5:auto_colorline_color参数仅对小程序码生效。
最后请大家注意44.本篇博客讲解的是
45.生成
46.微信小程序码的两种方式
47.和生成
48.微信小程序二维码的一种方式
微信小程序码和微信小程序二维码是有区别的49.微信小程序码是圆的微信小程序二维码是方的
二维码和小程序码有啥区别-JAVA 获取 微信小程序码的两种方式 和 微信小程序二维码的一种方式-小程序二维码
浏览量:1688
时间:
来源:Architect_csdn
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。












