Browse Source

fixed wechat ticket

ls 4 years ago
parent
commit
23e55ddb32
3 changed files with 30 additions and 27 deletions
  1. 1 0
      go.sum
  2. 27 27
      wechat/client.go
  3. 2 0
      wechat/const.go

+ 1 - 0
go.sum

@@ -36,6 +36,7 @@ github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.3.0 h1:/qkRGz8zljWiDcFvgpwUpwIAPu3r07TDvs3Rws+o/pU=
 github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.5.2 h1:yTSXVswvWUOQ3k1sd7vJfDrbSl8lKuscqFJRqjC0ifw=
 github.com/lib/pq v1.5.2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4=

+ 27 - 27
wechat/client.go

@@ -54,6 +54,33 @@ func (wc *Client) getToken() (token string, err error) {
 	return
 }
 
+func (wc *Client) getTicket(now int64) (ticket string, err error) {
+	var jq *myth.JSONQuery
+	if wc.LastTicketTime > 0 {
+		if now-wc.LastTicketTime < TicketExpires {
+			ticket = wc.Ticket
+			return
+		}
+	}
+
+	args := url.Values{}
+	args.Add("access_token", wc.AccessToken)
+	args.Add("type", "jsapi")
+
+	uri := BaseURL + "/cgi-bin/ticket/getticket?"
+	uri += args.Encode()
+	if jq, err = getJSON(uri); err == nil {
+		ticket, err = jq.String(`ticket`)
+		wc.LastTicketTime = now
+		wc.Ticket = ticket
+
+		key := key(wc.AppID)
+		cache.Store(key, wc)
+	}
+
+	return
+}
+
 // GetCodeURL get code 授权获取 OpenID URL
 // /connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
 // 转向到
@@ -165,33 +192,6 @@ func (wc Client) GetMaterial(mtype string, offset, count int) (material Material
 	return
 }
 
-func (wc *Client) getTicket(now int64) (ticket string, err error) {
-	var jq *myth.JSONQuery
-	if wc.LastTicketTime > 0 {
-		if now-wc.LastTokenTime < TokenExpires {
-			ticket = wc.Ticket
-			return
-		}
-	}
-
-	args := url.Values{}
-	args.Add("access_token", wc.AccessToken)
-	args.Add("type", "jsapi")
-
-	uri := BaseURL + "/cgi-bin/ticket/getticket?"
-	uri += args.Encode()
-	if jq, err = getJSON(uri); err == nil {
-		ticket, err = jq.String(`ticket`)
-		wc.LastTicketTime = now
-		wc.Ticket = ticket
-
-		key := key(wc.AppID)
-		cache.Store(key, wc)
-	}
-
-	return
-}
-
 // GetSignPackage JS 签名
 //   uri      当前 URL
 //   nonceStr 随机字符串

+ 2 - 0
wechat/const.go

@@ -3,6 +3,8 @@ package wechat
 const (
 	// TokenExpires token expires time 1 hours
 	TokenExpires = 60 * 60
+	// TicketExpires ticket expires time 1 hours
+	TicketExpires = 60 * 60
 
 	// BaseURL api host
 	BaseURL = `https://api.weixin.qq.com`