微信小程序> 二维码和小程序码有啥区别-JAVA  获取    微信小程序码的两种方式  和  微信小程序二维码的一种方式-小程序二维码

二维码和小程序码有啥区别-JAVA  获取    微信小程序码的两种方式  和  微信小程序二维码的一种方式-小程序二维码

浏览量:1688 时间: 来源:Architect_csdn

1.目前小程序推出了自己的识别码,小程序码,圆形的码看起来比二维码好看。

2.本文总结微信小程序的获取小程序二维码的接口开发。官方地址

3.主要内容摘抄自微信小程序的API文档,java接口开发是自己总结开发。

一、简介

4.通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面。目前微信支持两种二维码,小程序码(左),小程序二维码(右),如下所示:

微信小程序获取二维码的三种方式小程序码两种小程序二维码一种

5.1.官方文档有介绍获取二维码的,这里主要介绍JAVA怎么获取。2.微信小程序二维码API文档官方地址3.小程序获取的图片样式其实是有差异的;一种是我们熟悉的二维码,一种就是小程序码了;具体可根据需求选择。

获取小程序码小程序二维码的前提是必须获取小程序的TOKEN

6.获取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.微信小程序码是圆的微信小程序二维码是方的

版权声明

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

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

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