以下例子就演示了一个启动一个server,接收到用户发往公众号的消息然后做处理。

通过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
文档更新时间: 2020-08-19 10:28   作者:kuteng