以下例子就演示了一个启动一个server,接收到用户发往公众号的消息然后做处理。
测试公众号可以使用微信公众平台接口测试平台
本地环境开发的话,可以使用 ngrok工具映射出来的公网地址,方便调试。
通过go mod
初始化一个项目,并将wechat sdk
下载下来:
go mod init github.com/silenceper/wechat-example go get -v github.com/silenceper/wechat/v2
包含一个文件main.go
代码中的配置参数请更改为自己的!
package main import ( "fmt" "net/http" wechat "github.com/silenceper/wechat/v2" "github.com/silenceper/wechat/v2/cache" offConfig "github.com/silenceper/wechat/v2/officialaccount/config" "github.com/silenceper/wechat/v2/officialaccount/message" ) func serveWechat(rw http.ResponseWriter, req *http.Request) { wc := wechat.NewWechat() //这里本地内存保存access_token,也可选择redis,memcache或者自定cache memory := cache.NewMemory() cfg := &offConfig.Config{ AppID: "xxx", AppSecret: "xxx", Token: "xxx", //EncodingAESKey: "xxxx", Cache: memory, } officialAccount := wc.GetOfficialAccount(cfg) // 传入request和responseWriter server := officialAccount.GetServer(req, rw) //设置接收消息的处理方法 server.SetMessageHandler(func(msg message.MixMessage) *message.Reply { //TODO //回复消息:演示回复用户发送的消息 text := message.NewText(msg.Content) return &message.Reply{MsgType: message.MsgTypeText, MsgData: text} }) //处理消息接收以及回复 err := server.Serve() if err != nil { fmt.Println(err) return } //发送回复的消息 server.Send() } func main() { http.HandleFunc("/", serveWechat) fmt.Println("wechat server listener at", ":8001") err := http.ListenAndServe(":8001", nil) if err != nil { fmt.Printf("start server error , err=%v", err) } } 运行
运行
# go run main.go wechat server listen at :8001