宝哥软件园

微信小程序实现java接口开发获取小程序代码和二维码

编辑:宝哥软件园 来源:互联网 时间:2021-08-26

目前小程序已经推出了自己的标识码,小程序码,比二维码好看。总结了微信小程序获取小程序代码和二维码,生成二维码图片的界面开发。主要内容摘自微信小程序的API文档,java接口的开发是我自己总结开发的。

微信小程序API文档:获取二维码

一.导言

通过后台界面可以获取小程序任意页面的二维码,通过扫描二维码可以直接访问小程序对应的页面。目前微信支持小程序码(左)和小程序二维码(右)两种二维码,如下图:

第二,获取小程序代码

目前可以生成小程序代码的接口有两种,开发者可以根据自己的需求选择合适的接口。

1没有参数的有限数量的小程序代码接口

它适用于具有少量代码的业务场景

接口地址:https://api.weixin.qq.com/wxa/getwxacode?接入令牌=接入令牌

注意:获取accesstoken的方法与微信公众号获取accesstoken的方法相同,但是小程序需要appid和appsercet。登录https://mp.weixin.qq.com,可以在网站的设置-开发者设置中查看微信小程序的AppID。请注意,您不能直接使用服务号或订购号的AppID。

获取微信小程序的AppID文章地址:小程序简单教程

(1)描述1)开机自检参数

参数类型默认值表示path String不能为空,最大长度为128字节,宽度Int 430,宽度为二维码auto_color Bool false自动配置线条颜色,如果颜色仍然为黑色,则表示不建议配置主色line _ colorobject {"r" : "0 "。“g”:“0”、“b”:“0”}在auth _ color为false时生效,rgb用于设置{“r”:“XXX”、“g”:“XXX”、“b”:“XXX”}等颜色注意:通过此扫码进入小程序后,用户将直接进入路径对应的页面。

(2)请求接口测试

使用http请求插件postman或RESTClient请求测试。

请求测试结果返回一个小程序代码图片。与微信公众平台生成的二维码不同,小程序码直接返回文件流,而不是微信公众平台的url和票证。

(3)java接口开发

注意:这个接口是基于Spring RestTemplate的http请求。http请求有很多方法和工具。可以用百度或者参考下面的参考文章。接口只是提供解决方案的想法。

public Map getminiqr(String access token){ rest template rest=new rest template();InputStream inputStream=nullOutputStream outputStream=null尝试{ String URL=' https://API . weixin . QQ.com/wxa/getwx code?access _ token=' accessTokenMapString,Object param=new HashMap();param.put('page ',' pages/index/index ');param.put('width ',430);param.put('auto_color ',false);MapString,Object _ line _ color=new HashMap();line_color.put('r ',0);line_color.put('g ',0);line_color.put('b ',0);param.put('line_color ',line _ color);LOG.info('调用生成微信URL接口参数: ' param);MultiValueMapString,String headers=new linkedmultivalmap();HttpEntity request entity=new HttpEntity(参数,标头);ResponseEntitybyte[]实体=rest.exchange(url,HttpMethod。开机自检,请求实体,字节[]。类,新对象[0]);LOG.info('调用小程序生成微信永久小程序代码URL接口返回结果: ' entity . getbody());byte[]结果=entity . GetBody();log . info(base64 . encodabase 64 string(结果));inputStream=new bytearrainputstream(结果);文件文件=新文件(' c :/用户/王秋林/桌面/1 . png ');if(!file . exists()){ file . createnew file();} output stream=new file output stream(文件);int len=0;byte[] buf=新字节[1024];while((len=inputstream . read(buf,0,1024))!=-1) { outputStream.write(buf,0,len);} OutputStream . flush();} catch(异常e) {LOG.error('调用小程序生成微信永久小程序代码的URL接口异常',e);}最后{ if(inputStream!=null){尝试{ InputStream . close();} catch(IOException e){ e . printstacktrace();} } if(outputStream!=null){尝试{ OutputStream . close();} catch(IOException e){ e . printstacktrace();} } }返回null}说明:获取accessToken的方法就不多说了,因为小程序的二维码返回到文件流,这就导致我们要对流进行处理,转换成图片保存在本地。另一个严重的后果是二维码无法保存在数据库中。每次想要获取二维码,都要请求一个接口,最多只能生成10万个。请小心使用。

2无限数量的带参数的小程序代码接口

它适用于需要大量代码或仅临时使用的业务场景

接口地址:https://api.weixin.qq.com/wxa/getwxacodeunlimit?接入令牌=接入令牌

获取接入令牌的方法与接口1一致。

(1)描述1)开机自检参数

参数类型的默认值表示场景字符串最多有32个可见字符,只支持数字、大小写英文和一些特殊字符:#$'()* ,/:=?@-._ ~,其他字符要自己编码为合法字符(因为不支持%的,中文不能用urlencode处理,请用其他编码方式)。page String必须是已发布的小程序页面,如“pages/index/index”。如果未填写此字段,默认情况下,跳过主页面宽度Int 430二维码auto_color Bool false的宽度,自动配置线条颜色。如果颜色还是黑色,说明不建议配置主色line _ color对象{“r”:“0”,“g”:“0”。“b”:“0”}在auto _ color为false时生效,rgb用于设置颜色,如{“r”:“XXX”、“g”:“XXX”、“b”:“XXX”}。注意:通过该界面生成的小程序代码永久有效,数量暂时不限。用户扫描代码进入小程序后,开发人员需要在做处理逻辑之前,获取相应页面上代码中场景字段的值。使用以下代码获取二维码中场景字段的值。在调试阶段,可以使用开发工具的条件编译自定义参数scene=xxxx进行模拟,开发工具模拟中scene的参数值需要为urlencode。同时需要注意的是,这个界面的页面参数不能取任何参数,所有参数都在场景参数中处理,切记!

//这是首页的jsPage({ onLoad:函数(选项){ //选项中的事件需要使用装饰组件才能获取到生成二维码时传入的场景变量场景=decodeURIComponent(选项。场景)} })(2)请求接口测试

(3)java接口开发

public Map getminiqr(String scenet r,String访问令牌){ rest template rest=new rest template();输入流输入流=空输出流输出流=空试试{字符串网址='https://api.weixin.qq.com/wxa/getwxacodeunlimit?access _ token=' accessTokenMapString,Object param=new HashMap();param.put('scene ',scene str);param.put('page ',' pages/index/index ');param.put('width ',430);param.put('auto_color ',false);MapString,Object _ line _ color=new HashMap();line_color.put('r ',0);line_color.put('g ',0);line_color.put('b ',0);param.put('line_color ',line _ color);' LOG.info('调用生成微信统一资源定位器接口传参: ' param);MultiValueMapString,String headers=new link edmultivalmap();HttpEntity请求实体=新的HttpEntity(参数,标头);响应字节[]实体=rest.exchange(url,HttpMethod .开机自检,请求实体,字节[]。类,新对象[0]);'' LOG.info('调用小程序生成微信永久小程序码统一资源定位器接口返回结果: '实体。GetBody());字节[]结果=实体。GetBody();日志。信息(base64。encodabase 64字符串(结果));inputStream=new bytearrainputstream(结果);文件文件=新文件(' c :/用户/王秋林/桌面/1 .png ');if(!文件。exists()){文件。新建文件();}输出流=新文件输出流(文件);int len=0;字节[] buf=新字节[1024];while((len=inputstream。read(buf,0,1024))!=-1) { outputStream.write(buf,0,len);} OutputStream。flush();} catch(异常e) { LOG.error('调用小程序生成微信永久小程序码统一资源定位器接口异常,e);}最后{ if(inputStream!=null){ 0尝试{ InputStream。close();} catch(IOexception e){ e . print stack trace();} } if(outputStream!=null){ 0尝试{输出流。close();} catch(IOexception e){ e . print stack trace();} } }返回null}3获取小程序二维码

适用于需要的码数量较少的业务场景

接口地址:https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

(1)邮政参数说明

参数类型默认值说明路径字符串不能为空,最大长度128 字节宽度Int 430二维码的宽度注意:通过该接口生成的小程序二维码,永久有效,数量限制见文末说明,请谨慎使用。用户扫描该码进入小程序后,将直接进入小路对应的页面。

示例:

{'path': '页面/索引?query=1 ',' width': 430}注:页面/索引需要在app.json的页中定义

(2)请求接口测试

(3)java接口开发

public Map getminiqr(String访问令牌){ rest template rest=new rest template();输入流输入流=空输出流输出流=空试试{字符串网址='https://api.weixin.qq.com/wxaapp/createwxaqrcode?access _ token=' accessTokenMapString,Object param=new HashMap();param.put('page ',' pages/index/index ');param.put('width ',430);' LOG.info('调用生成微信统一资源定位器接口传参: ' param);MultiValueMapString,String headers=new link edmultivalmap();HttpEntity请求实体=新的HttpEntity(参数,标头);响应字节[]实体=rest.exchange(url,HttpMethod .开机自检,请求实体,字节[]。类,新对象[0]);'' LOG.info('调用小程序生成微信永久二维码统一资源定位器接口返回结果: '实体。GetBody());字节[]结果=实体。GetBody();日志。信息(base64。encodabase 64字符串(结果));inputStream=new bytearrainputstream(结果);文件文件=新文件(' c :/用户/王秋林/桌面/1 .png ');if(!文件。exists()){文件。新建文件();}输出流=新文件输出流(文件);int len=0;字节[] buf=新字节[1024];while((len=inputstream。read(buf,0,1024))!=-1) { outputStream.write(buf,0,len);} OutputStream。flush();} catch(异常e) { LOG.error('调用小程序生成微信永久二维码统一资源定位器接口异常,e);}最后{ if(inputStream!=null){ 0尝试{ InputStream。close();} catch(IOexception e){ e . print stack trace();} } if(outputStream!=null){ 0尝试{输出流。close();} catch(IOexception e){ e . print stack trace();} } }返回null}三、说明

1:通过该接口,仅能生成已发布的小程序的二维码。 2:可以在开发者工具预览时生成开发版的带参二维码。 3:接口一加上接口2,总共生成的码数量限制为100,000,请谨慎调用4 :开机自检参数需要转成数据字符串,不支持形式表单提交5 :自动_彩色线_彩色参数仅对小程序码生效。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+