有時候項(xiàng)目需要用到微信登錄或獲取用戶的手機(jī)號碼,weixin-java-miniapp是一個好用的第三方工具,不用我們自己寫httpcline調(diào)用。
導(dǎo)入jar包
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.1.0</version>
</dependency>
添加一個resource.properties文件,寫上小程序的appid和secret
wx.miniapp.appid: xxxxxxxxxxxx
wx.miniapp.secret: xxxxxxxxxxxxxxxxxxxxxxxxxx
wx.miniapp.msgDataFormat: JSON
添加兩個配置文件
WxMaProperties.java
@ConfigurationProperties(prefix = "wx.miniapp")
public class WxMaProperties {
/**
* 設(shè)置微信小程序的appid
*/
private String appid;
/**
* 設(shè)置微信小程序的Secret
*/
private String secret;
/**
* 消息格式,XML或者JSON
*/
private String msgDataFormat;
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getMsgDataFormat() {
return msgDataFormat;
}
public void setMsgDataFormat(String msgDataFormat) {
this.msgDataFormat = msgDataFormat;
}
WxMaConfiguration.java
@Configuration
@EnableConfigurationProperties(WxMaProperties.class)
public class WxMaConfiguration {
@Bean
public WxMaService wxMaService(WxMaProperties properties) {
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
config.setAppid(properties.getAppid());
config.setSecret(properties.getSecret());
config.setMsgDataFormat(properties.getMsgDataFormat());
WxMaService service = new WxMaServiceImpl();
service.setWxMaConfig(config);
return service;
}
}
如何使用
@Autowired
private WxMaService wxMaService;
@ApiOperation("獲取微信授權(quán)信息")
@ApiImplicitParam(name = "code",value = "前端授權(quán)登錄后傳來的code", required = true,paramType = "query")
@RequestMapping(value = "/wechatSession", method = RequestMethod.POST)
@ResponseBody
public ResponseResult wechatSession(@RequestParam String code) {
//獲取openId、unionid、session_key
WxMaJscode2SessionResult sessionInfo = wxMaService.getUserService().getSessionInfo(code);
}
@ApiOperation("小程序手機(jī)號登錄")
@ApiImplicitParams({
@ApiImplicitParam(name = "sessionKey", value = "sessionKey", paramType = "query", dataType = "string", required = true),
@ApiImplicitParam(name = "encryptedData", value = "加密串", paramType = "query", dataType = "string", required = true),
@ApiImplicitParam(name = "iv", value = "偏移量", paramType = "query", dataType = "string", required = true)
})
@RequestMapping(value = "/wechatLogin", method = RequestMethod.POST)
@ResponseBody
public ResponseResult wechatLogin(HttpServletRequest request,
@RequestParam @NotBlank(message = "sessionKey不能為空") String sessionKey,
@RequestParam @NotBlank(message = "加密串不能為空") String encryptedData,
@RequestParam @NotBlank(message = "偏移串不能為空") String iv) {
WxMaPhoneNumberInfo phoneInfo = wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
return phoneInfo.getPurePhoneNumber();
}
小程序給微信發(fā)送消息通知,類似于下圖
在resource.properties添加相關(guān)類型的消息通知id,在申請小程序那配置文章來源:http://www.zghlxwxcb.cn/news/detail-597493.html
#通知類型1
wx.miniapp.msg.template_id_1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#通知類型2
wx.miniapp.msg.template_id_2: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
如何使用:文章來源地址http://www.zghlxwxcb.cn/news/detail-597493.html
@Value("${wx.miniapp.msg.template_id_1}")
private String msgTemplateId1;
@Value("${wx.miniapp.msg.template_id_2}")
private String msgTemplateId2;
/**
openId : 用戶微信登錄的openID
*/
private boolean sendSubscribeMessage(String openId) {
String page="pages/index/index"; // 應(yīng)該是消息點(diǎn)擊后跳轉(zhuǎn)頁面
WxMaSubscribeMessage message = new WxMaSubscribeMessage();
message.setTemplateId(msgTemplateId1);
message.setToUser(openId);
message.setPage(page);
List<WxMaSubscribeMessage.MsgData> subscribeDataList = new ArrayList<>();
WxMaSubscribeMessage.MsgData subscribeData = new WxMaSubscribeMessage.MsgData();
subscribeData.setName("key1"); // 你在小程序自定義的key(比如“商家名稱”)
subscribeData.setValue("奈雪的茶"); //key對應(yīng)的內(nèi)容
//添加你配置要且要展示的內(nèi)容
subscribeDataList.add(subscribeData);
message.setData(subscribeDataList);
try {
wxMaService.getMsgService().sendSubscribeMsg(message);
return true;
} catch (WxErrorException e) {
log.error("發(fā)送小程序訂閱消息失敗,errCode:{},errMsg:{}", e.getError().getErrorCode(), e.getError().getErrorMsg());
}
return false;
}
到了這里,關(guān)于spring boot整合第三方微信開發(fā)工具 weixin-java-miniapp 實(shí)現(xiàn)小程序微信登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!