|
@@ -181,7 +181,7 @@ func toSendTemplateMsg(wxAppId string, data []byte, resource string, sendType in
|
|
|
var accessToken string
|
|
|
var errMsg string
|
|
|
|
|
|
- accessToken, err, errMsg = getWxAccessToken(wxAppId)
|
|
|
+ accessToken, err, errMsg = getWxAccessToken(wxAppId, "")
|
|
|
if err != nil {
|
|
|
utils.FileLog.Info(fmt.Sprintf("获取Token失败,err:%s,errMsg:%s", err.Error(), errMsg))
|
|
|
return
|
|
@@ -232,7 +232,7 @@ func toSendTemplateMsg(wxAppId string, data []byte, resource string, sendType in
|
|
|
//accessToken过期
|
|
|
if templateResponse.Errcode == 40001 {
|
|
|
//强刷token并重新推送
|
|
|
- accessToken, err, errMsg = refreshWxAccessToken(wxAppId)
|
|
|
+ accessToken, err, errMsg = refreshWxAccessToken(wxAppId, "")
|
|
|
if err != nil {
|
|
|
utils.FileLog.Info(fmt.Sprintf("refreshWxAccessToken Err:%s", err.Error()))
|
|
|
return err
|
|
@@ -288,8 +288,18 @@ func toSendTemplateMsg(wxAppId string, data []byte, resource string, sendType in
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// GetWxAccessToken 获取微信token
|
|
|
+func GetWxAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error, errMsg string) {
|
|
|
+ accessToken, err, errMsg = getWxAccessToken(wxAppId, wxAppSecret)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Info(fmt.Sprintf("获取Token失败,err:%s,errMsg:%s", err.Error(), errMsg))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// getWxAccessToken 获取微信token
|
|
|
-func getWxAccessToken(wxAppId string) (accessToken string, err error, errMsg string) {
|
|
|
+func getWxAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error, errMsg string) {
|
|
|
redisKey := getRedisKeyByAppid(wxAppId)
|
|
|
if redisKey == `` {
|
|
|
errMsg = "未配置缓存key"
|
|
@@ -311,11 +321,11 @@ func getWxAccessToken(wxAppId string) (accessToken string, err error, errMsg str
|
|
|
}
|
|
|
|
|
|
//缓存中没有取到数据,那么需要去强制刷新新的accessToken
|
|
|
- return refreshWxAccessToken(wxAppId)
|
|
|
+ return refreshWxAccessToken(wxAppId, wxAppSecret)
|
|
|
}
|
|
|
|
|
|
// refreshWxAccessToken 强制刷新微信token
|
|
|
-func refreshWxAccessToken(wxAppId string) (accessToken string, err error, errMsg string) {
|
|
|
+func refreshWxAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error, errMsg string) {
|
|
|
fmt.Println("强制刷新" + wxAppId + "微信token")
|
|
|
defer func() {
|
|
|
if errMsg != `` {
|
|
@@ -329,8 +339,10 @@ func refreshWxAccessToken(wxAppId string) (accessToken string, err error, errMsg
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- wxAppSecret, ok := utils.WxAppList[wxAppId]
|
|
|
- if !ok {
|
|
|
+ if wxAppSecret == "" {
|
|
|
+ wxAppSecret, _ = utils.WxAppList[wxAppId]
|
|
|
+ }
|
|
|
+ if wxAppSecret == "" {
|
|
|
err = errors.New("缺少密钥信息")
|
|
|
utils.FileLog.Info(fmt.Sprintf("获取Token失败, errMsg:%s", err.Error()))
|
|
|
return
|
|
@@ -373,33 +385,6 @@ func refreshWxAccessToken(wxAppId string) (accessToken string, err error, errMsg
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// WxGetRedisAccessToken 从redis中获取token
|
|
|
-func WxGetRedisAccessToken(wxAppId, wxAppSecret string) (accessToken string, err error) {
|
|
|
- //从redis中获取token校验验证码
|
|
|
- accessToken, err = utils.Rc.RedisString(utils.HZ_ADMIN_WX_ACCESS_TOEKN + wxAppId)
|
|
|
- if err != nil {
|
|
|
- err = nil
|
|
|
- token, tErr := models.GetWxToken(wxAppId, wxAppSecret)
|
|
|
- if tErr != nil {
|
|
|
- return "", tErr
|
|
|
- }
|
|
|
- if token.Errmsg != "" {
|
|
|
- err = errors.New("获取access_token 失败 errcode:" + token.Errmsg + " ;errmsg:" + token.Errmsg)
|
|
|
- return "", err
|
|
|
- }
|
|
|
- //更新redis的accessToken(过期时间提前十分钟)
|
|
|
- redisTimeExpire := time.Duration(token.ExpiresIn-600) * time.Second
|
|
|
- err = utils.Rc.Put(utils.HZ_ADMIN_WX_ACCESS_TOEKN+wxAppId, token.AccessToken, redisTimeExpire)
|
|
|
- if err != nil {
|
|
|
- err = errors.New("保存access_token失败 " + err.Error())
|
|
|
- return accessToken, err
|
|
|
- }
|
|
|
- accessToken = token.AccessToken
|
|
|
- return
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
// 根据微信appid获取对应的缓存key
|
|
|
func getRedisKeyByAppid(wxAppId string) (redisKey string) {
|
|
|
switch wxAppId {
|
|
@@ -407,6 +392,8 @@ func getRedisKeyByAppid(wxAppId string) (redisKey string) {
|
|
|
redisKey = utils.CACHE_WX_ACCESS_TOKEN_HZ
|
|
|
case utils.AdminWxAppId:
|
|
|
redisKey = utils.HZ_ADMIN_WX_ACCESS_TOEKN + wxAppId
|
|
|
+ default:
|
|
|
+ redisKey = utils.HZ_ADMIN_WX_ACCESS_TOEKN + wxAppId
|
|
|
}
|
|
|
return redisKey
|
|
|
}
|