瀏覽代碼

Merge branch 'feature/fix_wx_token' into debug

xyxie 1 年之前
父節點
當前提交
be1cb1ead6
共有 2 個文件被更改,包括 39 次插入7 次删除
  1. 35 3
      controllers/wechat.go
  2. 4 4
      services/wechat.go

+ 35 - 3
controllers/wechat.go

@@ -363,12 +363,28 @@ func (this *WechatController) GetWxSign() {
 		return
 	}
 
-	ticket, err := services.GetWxTicket(accessToken)
+	errCode, ticket, err := services.GetWxTicket(accessToken)
 	if err != nil {
+		if errCode == 40001 {
+			accessToken, err, errMsg = wechat.GetAccessToken(tReq)
+			if err != nil {
+				br.Msg = "获取微信配置失败"
+				br.ErrMsg = "获取access_token失败,err:" + errMsg
+				return
+			}
+
+			errCode, ticket, err = services.GetWxTicket(accessToken)
+			if err != nil {
+				br.Msg = "获取Ticket失败,请联系客服"
+				br.ErrMsg = "获取Ticket失败,Err" + err.Error()
+				return
+			}
+		}
 		br.Msg = "获取Ticket失败,请联系客服"
 		br.ErrMsg = "获取Ticket失败,Err" + err.Error()
 		return
 	}
+
 	if ticket == "" {
 		br.Msg = "获取Ticket失败,请联系客服"
 		br.ErrMsg = "ticket为空" + ticket
@@ -639,19 +655,35 @@ func (this *WechatCommonController) GetWxSign() {
 	}
 	getUrl := this.GetString("Url")
 	fmt.Println("getUrl:", getUrl)
+
 	tReq := wechat.WxTokenReq{
 		WxAppId:     appId,
 		WxAppSecret: appSecret,
 	}
 	accessToken, err, errMsg := wechat.GetAccessToken(tReq)
 	if err != nil {
-		br.Msg = "获取用户信息失败"
+		br.Msg = "获取微信配置失败"
 		br.ErrMsg = "获取access_token失败,err:" + errMsg
 		return
 	}
 
-	ticket, err := services.GetWxTicket(accessToken)
+	errCode, ticket, err := services.GetWxTicket(accessToken)
 	if err != nil {
+		if errCode == 40001 {
+			accessToken, err, errMsg = wechat.GetAccessToken(tReq)
+			if err != nil {
+				br.Msg = "获取微信配置失败"
+				br.ErrMsg = "获取access_token失败,err:" + errMsg
+				return
+			}
+
+			errCode, ticket, err = services.GetWxTicket(accessToken)
+			if err != nil {
+				br.Msg = "获取Ticket失败,请联系客服"
+				br.ErrMsg = "获取Ticket失败,Err" + err.Error()
+				return
+			}
+		}
 		br.Msg = "获取Ticket失败,请联系客服"
 		br.ErrMsg = "获取Ticket失败,Err" + err.Error()
 		return

+ 4 - 4
services/wechat.go

@@ -141,21 +141,21 @@ func WxGetUserInfo(openId, accessToken string) (item *WxUserInfo, err error) {
 	return
 }
 
-func GetWxTicket(accessToken string) (string, error) {
+func GetWxTicket(accessToken string) (int, string, error) {
 	Url := strings.Join([]string{"https://api.weixin.qq.com/cgi-bin/ticket/getticket",
 		"?access_token=", accessToken,
 		"&type=jsapi"}, "")
 	infoBody, err := http.Get(Url)
 	if err != nil {
-		return "", err
+		return 0, "", err
 	}
 	atr := models.WxTicket{}
 	err = json.Unmarshal(infoBody, &atr)
 	fmt.Println("ticket result:", string(infoBody))
 	if err != nil {
-		return atr.Errmsg, err
+		return atr.Errcode, atr.Errmsg, err
 	} else {
-		return atr.Ticket, nil
+		return 0, atr.Ticket, nil
 	}
 }