1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package controllers
-
- import (
- "encoding/base64"
- "io/ioutil"
- "wechat-conf/utils"
-
- "github.com/zjxpcyc/wechat/core"
- )
-
- const (
- INFOTYPE_TICKET = "component_verify_ticket"
- INFOTYPE_AUTHORIZED = "authorized"
- INFOTYPE_UNAUTHORIZED = "unauthorized"
- INFOTYPE_UPDATEAUTHORIZED = "updateauthorized"
- )
-
- // ComponentPush 第三方平台推送
- func (c *BaseController) ComponentPush() {
- r := c.Ctx.Request
- defer r.Body.Close()
- con, _ := ioutil.ReadAll(r.Body)
-
- // timestamp := c.GetString("timestamp")
- // nonce := c.GetString("nonce")
-
- // token := "testtoken"
- EncodingAESKey := "key"
- // appid := "appid"
-
- AESKey, err := base64.StdEncoding.DecodeString(EncodingAESKey + "=")
- if err != nil {
- utils.LogError("DecodeString失败:", err)
- }
- xp := &core.XMLParse{}
- // 解析xml
- val, err := xp.Parse(string(con))
- if err != nil {
- utils.LogError("xml解析失败:", err)
- }
-
- msgbyte, err := utils.AesDecrypt([]byte(val["Encrypt"]), AESKey)
- if err != nil {
- utils.LogError("解密失败:", err)
- }
- msg, err := xp.Parse(string(msgbyte))
- if err != nil {
- utils.LogError("msgxml解析失败:", err)
- }
- switch msg["InfoType"] {
- case INFOTYPE_TICKET:
- // 更新ticket
- utils.RefreshComponentTicket(msg["ComponentVerifyTicket"])
- break
- case INFOTYPE_AUTHORIZED:
- // 授权成功
- var cert = map[string]string{
- "appid": msg["AuthorizerAppid"],
- "authorization_code": msg["AuthorizationCode"],
- }
-
- wxclient := utils.WechatInit(cert)
- utils.AppendWxClient(wxclient)
- c.ResponseRaw([]byte("success"))
- break
- case INFOTYPE_UPDATEAUTHORIZED:
- // 授权更新
- break
- case INFOTYPE_UNAUTHORIZED:
- // 取消授权
- break
- }
-
- }
|