From 2a567dde8636a76036b859d7ce18a3b1f40c16a6 Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Tue, 6 Jan 2026 17:48:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=9B=9E=E8=B0=83=E5=A4=84=E7=90=86=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.yaml | 2 +- config/config_test.yaml | 16 ++++++++-------- internal/server/router/router.go | 4 +++- internal/services/callback.go | 27 ++++++++++++++++++++------- 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index fce383f..2e6903f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -159,7 +159,7 @@ dingtalk: qywx: corp_id: "ww48151f694fb8ec67" app_secret: "uYqtdwdtdH4Uv_P4is2AChuGzBCoB6cQDyRvpbW0Vmk" - token: "Jdukry6" + token: "zJdukry6" aes_key: "4VLH47qRGUogc2d3QLWuUhvJlk8Y0YuRjXzeBquBq8B" init_account: "les." chat_id_len: 16 diff --git a/config/config_test.yaml b/config/config_test.yaml index 97903aa..7355304 100644 --- a/config/config_test.yaml +++ b/config/config_test.yaml @@ -152,15 +152,15 @@ dingtalk: bbxt: 23 qywx: -# corp_id: "ww48151f694fb8ec67" -# app_secret: "uYqtdwdtdH4Uv_P4is2AChuGzBCoB6cQDyRvpbW0Vmk" -# token: "uYqtdwdtdH4Uv_P4is2AChuGzBCoB6cQDyRvpbW0Vmk" -# aes_key: "4VLH47qRGUogc2d3QLWuUhvJlk8Y0YuRjXzeBquBq8B" - - corp_id: "wwabfd0cec7171e769" + corp_id: "ww48151f694fb8ec67" app_secret: "uYqtdwdtdH4Uv_P4is2AChuGzBCoB6cQDyRvpbW0Vmk" - token: "gY1AGR3mjBhzy" - aes_key: "g8VGfQEqluUhoKOlyjmmll8Q9C5tVFUTX5T2qkmI9Sv" + token: "zJdukry6" + aes_key: "4VLH47qRGUogc2d3QLWuUhvJlk8Y0YuRjXzeBquBq8B" +# +# corp_id: "wx5823bf96d3bd56c7" +# token: "QDG6eK" +# aes_key: "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C" +# app_secret: "uYqtdwdtdH4Uv_P4is2AChuGzBCoB6cQDyRvpbW0Vmk" init_account: "les." chat_id_len: 16 default_config_id: 1 diff --git a/internal/server/router/router.go b/internal/server/router/router.go index c461740..6285222 100644 --- a/internal/server/router/router.go +++ b/internal/server/router/router.go @@ -129,7 +129,9 @@ func registerResponse(router fiber.Router) { func registerCommon(c *fiber.Ctx, err error) error { // 调用下一个中间件或路由处理函数 - + if c.Path() == "/api/v1/qywx/callback" { + return nil + } bsErr, ok := err.(*errors.BusinessErr) if !ok { bsErr = errors.SystemError diff --git a/internal/services/callback.go b/internal/services/callback.go index 70cf967..0cbb877 100644 --- a/internal/services/callback.go +++ b/internal/services/callback.go @@ -332,14 +332,21 @@ func (s *CallbackService) handleBugOptimizationSubmitDone(ctx context.Context, t return msg, nil } -func (s *CallbackService) QywxCallback(c *fiber.Ctx) error { +func (s *CallbackService) QywxCallback(c *fiber.Ctx) (err error) { // 读取头 - msgSignature := c.Query("msg_signature") - timestamp := c.Query("timestamp") - nonce := c.Query("nonce") - echostr := c.Query("echostr") + httpstr := string(c.Request().URI().QueryString()) + + start := strings.Index(httpstr, "msg_signature=") + start += len("msg_signature=") + var msgSignature string + next := getString(httpstr, "×tamp=", start, &msgSignature) + var timestamp string + next = getString(httpstr, "&nonce=", next, ×tamp) + var nonce string + next = getString(httpstr, "&echostr=", next, &nonce) + echostr := httpstr[next:len(httpstr)] echostr, _ = url.QueryUnescape(echostr) - fmt.Println(msgSignature, timestamp, nonce, echostr) + fmt.Println(httpstr, msgSignature, timestamp, nonce, echostr) wxcpt := wxbizjsonmsgcrypt.NewWXBizMsgCrypt(s.cfg.Qywx.Token, s.cfg.Qywx.AES_KEY, s.cfg.Qywx.CorpId, wxbizjsonmsgcrypt.JsonType) echoStr, cryptErr := wxcpt.VerifyURL(msgSignature, timestamp, nonce, echostr) if nil != cryptErr { @@ -347,7 +354,13 @@ func (s *CallbackService) QywxCallback(c *fiber.Ctx) error { return fmt.Errorf("%v", cryptErr) } fmt.Println("verifyUrl success echoStr", string(echoStr)) - err := c.Send(echoStr) + err = c.Send(echoStr) return err } + +func getString(str, endstr string, start int, msg *string) int { + end := strings.Index(str, endstr) + *msg = str[start:end] + return end + len(endstr) +}