package util import ( "context" "crypto/md5" "encoding/base64" "fmt" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/skip2/go-qrcode" "io" "net/http" "strings" ) // SendQrImage2ChatBot 发送二维码给群聊机器人 func SendQrImage2ChatBot(qrContent string) error { res, err := qrcode.Encode(qrContent, qrcode.Medium, 256) if err != nil { return gerror.Wrap(err, "解密二维码异常") } rawStr := base64.StdEncoding.EncodeToString(res) h := md5.New() h.Write(res) hash := h.Sum(nil) hashStr := fmt.Sprintf("%x", hash) postBody := fmt.Sprintf(`{ "msgtype": "image", "image": { "base64": "%s", "md5": "%s", "mentioned_list":["@%s"] } }`, rawStr, strings.ToLower(hashStr), "all") client := new(http.Client) req, err := http.NewRequest("POST", g.Cfg().MustGet(context.Background(), "qwxRobotUrl").String(), strings.NewReader(postBody)) if err != nil { return gerror.Wrap(err, "请求企业微信机器人接口异常") } req.Header.Set("Content-Type", "application/json") resp, err := client.Do(req) if err != nil { return err } defer resp.Body.Close() bb, _ := io.ReadAll(resp.Body) fmt.Println(string(bb)) return nil }