日期:2023-07-15访问量:0类型:小程序制作资讯
1.小程序开发文档地址:
你可以先自己尝试一下
这次由于业务需求:选择了一个可以无限生成的接口进行对接:
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
2. 代码实现
1.yml配置:
注:填写
小程序的唯一证书AppID可以在“微信官方平台-设置-开发设置”页面获取。 (需是开发者,且账号无异常状态);
小程序唯一的凭证密钥,即获取方法与appid相同
config:
sun:
token-access-url: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret
code-url: https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=
就我个人而言,我更喜欢使用配置类来引用配置。 小程序代码更像sun代码,称为sun代码,即配置类如下
@Data
@Configuration
@ConfigurationProperties(prefix = "config.sun")
public class SunConfig {
private String tokenAccessUrl;
private String codeUrl;
}
2、定义对接小程序界面的组件:
public class SunCodeComponent {
@Autowired
private SunConfig sunConfig;
@Autowired
RestTemplate restTemplate;
//方法一是持久化到数据库
public String getSunCode(Long userId,String shareType) throws IOException {
//获取凭证
String tokenAccessUrl = sunConfig.getTokenAccessUrl();
String tokenAccess = Objects
.requireNonNull(
restTemplate.getForObject(tokenAccessUrl, JSONObject.class)
)
.getString("access_token");
//获取二维码
String codeUrl = sunConfig.getCodeUrl()+tokenAccess;
int code = ShareTypeEnum.valueOf(shareType).value();
String scene = "a=qrcode_"+code+"_"+userId;
JSONObject json = new JSONObject();
json.put("page", "");//如果传空则默认进入小程序首页
json.put("scene", scene);//参数
json.put("width", "120");//宽
json.put("is_hyaline", true);//是否透明底色
byte[] bytes =restTemplate.postForObject(codeUrl, json, byte[].class);
if (bytes==null){
return null;
}
InputStream inputStream = new ByteArrayInputStream(bytes);
MultipartFile file = new MockMultipartFile("game","game.png",ContentType.IMAGE_PNG.toString(), inputStream);
//调用文件服务上传文件接口,上传二维码
//todo写上自己的上传方式接口即可
return "文件路径";
}
//方法二是直接返回一个图片给前端展示,也可方便自测查看返回图片是否正常。
//附上,在线转图片地址:https://tool.chinaz.com/tools/imgtobase
public String getSunCodeV2(Long userId,String shareType){
//获取凭证
String tokenAccessUrl = sunConfig.getTokenAccessUrl();
String tokenAccess = restTemplate.getForObject(tokenAccessUrl,JSONObject.class).getString("access_token");
//获取二维码
int code = ShareTypeEnum.valueOf(shareType).value();
String codeUrl = sunConfig.getCodeUrl()+tokenAccess;
String scene = "a=qrcode_"+code+"_"+userId;
JSONObject json = new JSONObject();
json.put("page", "");
json.put("scene", scene);
json.put("width", "120");
json.put("is_hyaline", true);
byte[] response = restTemplate.postForObject(codeUrl, json, byte[].class);
return "data:image/png;base64," + Base64.getEncoder().encodeToString(response);
}
}
对接过程中的坑:
场景:特别注意:不能大于32位,且最多不能超过1个! ! !
TAG标签:小程序开发文档
日期:2024-02-14 浏览量:71
日期:2023-10-17 浏览量:104
日期:2023-08-23 浏览量:132
日期:2023-08-22 浏览量:121
日期:2023-08-19 浏览量:128
日期:2023-08-18 浏览量:140
日期:2023-07-21 浏览量:149
日期:2023-07-19 浏览量:63
日期:2023-07-17 浏览量:120