package message import ( "bytes" "context" "encoding/json" "errors" "fmt" "net/http" ) func (c *Client) Update(ctx context.Context, reqData *UpdateCardRequest) error { token, err := c.auth.AccessToken(ctx) if err != nil { return err } url := fmt.Sprintf( "https://qyapi.weixin.qq.com/cgi-bin/message/update_template_card?access_token=%s", token, ) body, err := json.Marshal(reqData) if err != nil { return err } req, err := http.NewRequestWithContext( ctx, http.MethodPost, url, bytes.NewBuffer(body), ) if err != nil { return err } req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { return err } defer resp.Body.Close() var result Response if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { return err } if result.ErrCode != 0 { return errors.New(result.ErrMsg) } return nil }