1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| package main
import ( "encoding/json" "fmt" "github.com/google/uuid" "io/ioutil" "log" "net/http" "strings" "time" )
type GetWechatPublicAccessTokenResponseEntity struct { AccessToken string `json:"access_token"` ExpiresIn int `json:"expires_in"` }
type WechatPublicSendMessageResponseEntity struct { ErrCode int `json:"errcode"` ErrMsg string `json:"errmsg"` MsgID int `json:"msgid"` }
func main() { var appID = "<appid>" var secret = "<secret>" var openID = "<openid>" var templateID = "<template_id>"
var accessToken string if res, err := http.Get(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", appID, secret)); err != nil { log.Println(err.Error()) } else { defer res.Body.Close() if res, err := ioutil.ReadAll(res.Body); err != nil { log.Println(err.Error()) } else { var response GetWechatPublicAccessTokenResponseEntity if err := json.Unmarshal(res, &response); err != nil { log.Println(err.Error()) } accessToken = response.AccessToken } }
var uuidString string if res, err := uuid.NewUUID(); err != nil { log.Println(err.Error()) } else { uuidString = res.String() } var currentTimeTime = time.Now() var currentTimeString = fmt.Sprintf( "%04d年%02d月%02d日", currentTimeTime.Year(), int(currentTimeTime.Month()), currentTimeTime.Day(), ) var payloadMap map[string]interface{} = map[string]interface{}{ "touser": openID, "template_id": templateID, "client_msg_id": uuidString, "data": map[string]interface{}{ "thing6": map[string]string{ "value": "登录用户名", }, "thing4": map[string]string{ "value": "登录方式", }, "time3": map[string]string{ "value": currentTimeString, }, }, } var payloadString string if res, err := json.Marshal(payloadMap); err != nil { log.Println(err.Error()) } else { payloadString = string(res) } if res, err := http.Post( fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s", accessToken), "application/json", strings.NewReader(payloadString), ); err != nil { log.Println(err.Error()) } else { defer res.Body.Close() if res, err := ioutil.ReadAll(res.Body); err != nil { log.Println(err.Error()) } else { log.Println(string(res)) var response WechatPublicSendMessageResponseEntity if err := json.Unmarshal(res, &response); err != nil { log.Println(err.Error()) } if response.ErrCode == 0 { log.Println("Success!") } } } }
|