1.第一步获取 code,通过登录方法
在app.js文件中通过登录方法设置全局的code
// 登录
wx.login({
success: res => {
// console.log('login=',res)
// debugger
getApp().globalData.code=res.code
}
});
2.第二步点击获取手机号的button,绑定获取手机微信能力open-type="getPhoneNumber"
<van-button custom-class="phone" size="small" round plain hairline open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</van-button>
var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js')
const app = getApp();
getPhoneNumber: function (e) {
// console.log('getPhoneNumber=>res=',e)
var that = this;
if (!e.detail.errMsg || e.detail.errMsg != "getPhoneNumber:ok") {
wx.showModal({
content: '不能获取手机号码',
})
return;
}
wx.showLoading({
title: '获取手机号中...',
})
// Toast(app.globalData.sessionCode);
wx.request({
url: urlPrefix + 'index/getSessionKey.html', // 仅为示例,并非真实的接口地址
data: app.globalData.sessionCode,
method: 'POST',
header: {
'content-type': 'application/json' // 默认值
},
success(res) {
// Toast(res.data.data.session_key);
// console.log(res.data)
// debugger
if (res.data.success) {
// console.log('session_key=',res.data.data.session_key)
// console.log('openid=',res.data.data.openid)
// 下面解密过程所需要的包文章末尾获取
const pc = new WXBizDataCrypt(res.data.data.appid, res.data.data.session_key) // -解密第一步
const data = pc.decryptData(e.detail.encryptedData, e.detail.iv) // 解密第二步
console.log('phoneNumber=',data.phoneNumber)
// 获取到手机号处理业务逻辑
wx.hideLoading()
}
}
})
},
3.第三步 请求的后台数据,需要前端小程序传入code然后请求微信接口获取到session_key,然后返回小程序使用
private static String session_key = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code";
public Map<String, String> getSessionKey(String code){
Map<String,String> map = new HashMap<String,String>();
try {
String appid = appIdMin;
String appsecret = appSecretMin;
// 发起GET请求获取凭证
String session_key = StringUrl.session_key.replace("APPID", appid).replace("SECRET",
appsecret).replace("JSCODE", code);
JSONObject jsonObject = httpsRequest(session_key, "GET", null);
if(jsonObject.getString("session_key") != null){
try {
map.put("session_key",jsonObject.getString("session_key"));
map.put("openid",jsonObject.getString("openid"));
map.put("appid",appid);
System.out.println("【session_key】" + jsonObject.getString("session_key"));
} catch(Exception e){
e.printStackTrace();
}
}
else{
logger.info("获取session_key失败"+jsonObject.toString());
}
}
catch (Exception e){
logger.info("获取session_key失败"+e.getMessage());
}
return map;
}
目录结构
微信图片_20200225100415.png
特别感谢解密包出处转载自:https://www.jianshu.com/p/9651cc121afe
本篇文章目的: 记录工作中遇到的问题,方便快速查询使用
如果文章有什么不妥的地方,感谢留言,相互学习!
网友评论