最近开发微信小程序支付的时候,需要获取用户openid
,查了一下相关资料。
根据:微信小程序案例:获取微信访问用户的openid:
//调用微信登录接口
wx.login({
success: function (loginCode) {
var appid = ''; //填写微信小程序appid
var secret = ''; //填写微信小程序secret
//调用request请求api转换登录凭证
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid='+appid+'&secret='+secret+'&grant_type=authorization_code&js_code=' + loginCode.code,
header: {
'content-type': 'application/json'
},
success: function (res) {
console.log(res.data.openid) //获取openid
}
})
}
})
这段代码在 开启开发环境不校验请求域名、TLS版本以及HTTPS证书 的情况下是可行的,但是正式环境下是没用的。
因为微信小程序开发设置中无法添加https://api.weixin.qq.com
域名。
处理办法:
- 先在微信小程序中调用
wx.login
获取loginCode.code
- 将
loginCode.code
传给服务器,由服务器请求'https://api.weixin.qq.com/sns/jscode2session?appid='+appid+'&secret='+secret+'&grant_type=authorization_code&js_code=' + loginCode.code
,来获取openid。 - 服务器获取到
openid
后就可以进行进一步处理,例如进行微信支付相关操作。