Parcourir la source

Merge branch 'master' of http://git.ycjcjy.com/default/wechat-conf

胡轶钦 il y a 6 ans
Parent
révision
da57919e0b

+ 1
- 1
bootstrap/bootstrap.go Voir le fichier

15
 	utils.LogInit()
15
 	utils.LogInit()
16
 
16
 
17
 	// 第三方平台
17
 	// 第三方平台
18
-	utils.ComponentInit()
18
+	models.ComponentInit()
19
 
19
 
20
 	// 微信系统
20
 	// 微信系统
21
 	models.InitWechat()
21
 	models.InitWechat()

+ 0
- 3
conf/wechat.conf Voir le fichier

1
-[wechat]
2
-appid = wx9fd33312e78e8d02
3
-aeskey = 41b2994de43d4e3b9dc0f54ee8c5c1bb0050496367e

+ 14
- 2
controllers/component.go Voir le fichier

43
 	r := c.Ctx.Request
43
 	r := c.Ctx.Request
44
 	defer r.Body.Close()
44
 	defer r.Body.Close()
45
 	con, _ := ioutil.ReadAll(r.Body)
45
 	con, _ := ioutil.ReadAll(r.Body)
46
-
47
-	EncodingAESKey := "key"
46
+	conf, err := c.wechatServ.GetComponentInfo()
47
+	if err != nil || conf == nil || conf.Appid == "" {
48
+		utils.LogError("读取微信配置文件失败")
49
+		c.ResponseRaw([]byte(""))
50
+	}
51
+	EncodingAESKey := conf.Aeskey
48
 
52
 
49
 	AESKey, err := base64.StdEncoding.DecodeString(EncodingAESKey + "=")
53
 	AESKey, err := base64.StdEncoding.DecodeString(EncodingAESKey + "=")
50
 	if err != nil {
54
 	if err != nil {
51
 		utils.LogError("DecodeString失败:", err)
55
 		utils.LogError("DecodeString失败:", err)
56
+		c.ResponseRaw([]byte(""))
52
 	}
57
 	}
53
 	xp := &core.XMLParse{}
58
 	xp := &core.XMLParse{}
54
 	// 解析xml
59
 	// 解析xml
68
 		utils.LogError("msgxml解析失败:", err)
73
 		utils.LogError("msgxml解析失败:", err)
69
 		c.ResponseRaw([]byte(""))
74
 		c.ResponseRaw([]byte(""))
70
 	}
75
 	}
76
+	utils.LogError("接收微信推送消息:", msg)
71
 	switch msg["InfoType"] {
77
 	switch msg["InfoType"] {
72
 	case INFOTYPE_TICKET:
78
 	case INFOTYPE_TICKET:
73
 		// 更新ticket
79
 		// 更新ticket
80
+		conf.Ticket = msg["ComponentVerifyTicket"]
81
+		err := c.wechatServ.UpdateComponentTicket(conf)
82
+		if err != nil {
83
+			utils.LogError("修改ticket失败:", err)
84
+		}
74
 		utils.RefreshComponentTicket(msg["ComponentVerifyTicket"])
85
 		utils.RefreshComponentTicket(msg["ComponentVerifyTicket"])
75
 		break
86
 		break
76
 	case INFOTYPE_AUTHORIZED:
87
 	case INFOTYPE_AUTHORIZED:
177
 
188
 
178
 // GetPreAuthCode 获取预授权码
189
 // GetPreAuthCode 获取预授权码
179
 func (c *WechatController) GetPreAuthCode() {
190
 func (c *WechatController) GetPreAuthCode() {
191
+	utils.LogError(utils.Component.GetToken())
180
 	code, err := utils.Component.GetPreAuthCode()
192
 	code, err := utils.Component.GetPreAuthCode()
181
 	if err != nil {
193
 	if err != nil {
182
 		utils.LogError("获取预授权码错误: " + err.Error())
194
 		utils.LogError("获取预授权码错误: " + err.Error())

+ 24
- 0
models/wechat.go Voir le fichier

5
 	"wechat-conf/utils"
5
 	"wechat-conf/utils"
6
 )
6
 )
7
 
7
 
8
+// ComponentInit 初始化第三方
9
+func ComponentInit() {
10
+	var conf = model.SysComponentConf{}
11
+
12
+	_, err := DBEngine.Get(&conf)
13
+	if err != nil {
14
+		utils.LogError("初始化第三方失败:", err)
15
+		return
16
+	}
17
+	utils.LogError("获取第三方信息:", conf)
18
+	if conf.Appid == "" {
19
+		utils.LogError("初始化第三方数据失败,数据为空")
20
+		return
21
+	}
22
+	var cert = map[string]string{
23
+		"appid":                 conf.Appid,
24
+		"aeskey":                conf.Aeskey,
25
+		"secret":                conf.Secret,
26
+		"componentVerifyTicket": conf.Ticket,
27
+	}
28
+
29
+	utils.ComponentInit(cert)
30
+}
31
+
8
 // InitWechat 初始化微信
32
 // InitWechat 初始化微信
9
 func InitWechat() {
33
 func InitWechat() {
10
 	var wxconfs []model.SysWechatConf
34
 	var wxconfs []model.SysWechatConf

+ 15
- 0
models/wechat/wechat.go Voir le fichier

75
 	}
75
 	}
76
 	return nil
76
 	return nil
77
 }
77
 }
78
+
79
+// GetComponentInfo 获取第三方conf
80
+func (m *WechatDAO) GetComponentInfo() (*model.SysComponentConf, error) {
81
+	var conf = model.SysComponentConf{}
82
+	_, err := m.db.Get(&conf)
83
+	return &conf, err
84
+}
85
+
86
+// UpdateComponentTicket 更新第三方ticket
87
+func (m *WechatDAO) UpdateComponentTicket(conf *model.SysComponentConf) error {
88
+	_, err := m.db.Cols([]string{
89
+		"ticket",
90
+	}...).Where("appid = ?", conf.Appid).Update(conf)
91
+	return err
92
+}

+ 1
- 0
routers/router.go Voir le fichier

67
 		beego.NSRouter("/ticket", &controllers.WechatController{}, "get:ComponentPush"),
67
 		beego.NSRouter("/ticket", &controllers.WechatController{}, "get:ComponentPush"),
68
 		beego.NSRouter("/:appid/callback", &controllers.WechatController{}, "get:WxReceive"),
68
 		beego.NSRouter("/:appid/callback", &controllers.WechatController{}, "get:WxReceive"),
69
 		beego.NSRouter("/:appid/callback", &controllers.WechatController{}, "post:WxReceive"),
69
 		beego.NSRouter("/:appid/callback", &controllers.WechatController{}, "post:WxReceive"),
70
+		beego.NSRouter("/authcode", &controllers.WechatController{}, "get:GetPreAuthCode"),
70
 	)
71
 	)
71
 
72
 
72
 	beego.AddNamespace(ns)
73
 	beego.AddNamespace(ns)

+ 15
- 0
service/wechat/wechat.go Voir le fichier

31
 func (s *WechatServ) UpdateToken(token map[string]string) {
31
 func (s *WechatServ) UpdateToken(token map[string]string) {
32
 	models.UpdateToken(token)
32
 	models.UpdateToken(token)
33
 }
33
 }
34
+
35
+// GetComponentInfo 获取第三方信息
36
+func (s *WechatServ) GetComponentInfo() (*model.SysComponentConf, error) {
37
+	conf, err := s.dao.GetComponentInfo()
38
+	if err != nil {
39
+		return nil, err
40
+	}
41
+	return conf, nil
42
+}
43
+
44
+// UpdateComponentTicket 更新微信ticket
45
+func (s *WechatServ) UpdateComponentTicket(conf *model.SysComponentConf) error {
46
+	err := s.dao.UpdateComponentTicket(conf)
47
+	return err
48
+}

+ 2
- 14
utils/wechat.go Voir le fichier

1
 package utils
1
 package utils
2
 
2
 
3
 import (
3
 import (
4
-	"github.com/astaxie/beego/config"
5
-	"github.com/astaxie/beego/logs"
6
 	"github.com/kinisky564477/wechat/component"
4
 	"github.com/kinisky564477/wechat/component"
7
 )
5
 )
8
 
6
 
10
 var Component *component.ComponentClient
8
 var Component *component.ComponentClient
11
 
9
 
12
 // ComponentInit 第三方初始化
10
 // ComponentInit 第三方初始化
13
-func ComponentInit() {
14
-	// 初始化第三方
15
-
16
-	// 读取配置文件
17
-	conf, err := config.NewConfig("ini", GetAppRoot()+"/conf/wechat.conf")
18
-	if err != nil {
19
-		logs.Error("读取微信配置文件失败")
20
-	}
21
-	var cert = map[string]string{
22
-		"component_appid": conf.String("wechat::appid"),
23
-		"aeskey":          conf.String("wechat::aeskey"),
24
-	}
11
+func ComponentInit(cert map[string]string) {
25
 	Component = component.NewComponentClient(cert)
12
 	Component = component.NewComponentClient(cert)
13
+	LogError(Component)
26
 }
14
 }
27
 
15
 
28
 // RefreshComponentTicket ticket
16
 // RefreshComponentTicket ticket