这个不是全部的代码哦,只是一个演示可以验证跟接受post传过来的消息并且能返回消息,中间的回复逻辑就待需要各位同志们自己写了哈
/* *@author widuu *@time 2013-7-19 *@go语言实现公众平台 */ package main import ( "crypto/sha1" "encoding/xml" "fmt" "io" "io/ioutil" "log" "net/http" "sort" "strings" "time" ) type Request struct { ToUserName string FromUserName string CreateTime time.Duration MsgType string Content string MsgId int } type Response struct { ToUserName string `xml:"xml>ToUserName"` FromUserName string `xml:"xml>FromUserName"` CreateTime string `xml:"xml>CreateTime"` MsgType string `xml:"xml>MsgType"` Content string `xml:"xml>Content"` MsgId int `xml:"xml>MsgId"` } func str2sha1(data string) string { t := sha1.New() io.WriteString(t, data) return fmt.Sprintf("%x", t.Sum(nil)) } func action(w http.ResponseWriter, r *http.Request) { postedMsg, err := ioutil.ReadAll(r.Body) if err != nil { log.Fatal(err) } r.Body.Close() v := Request{} xml.Unmarshal(postedMsg, &v) if v.MsgType == "text" { v := Request{v.ToUserName, v.FromUserName, v.CreateTime, v.MsgType, v.Content, v.MsgId} output, err := xml.MarshalIndent(v, " ", " ") if err != nil { fmt.Printf("error:%v\n", err) } fmt.Fprintf(w, string(output)) } else if v.MsgType == "event" { Content := `"欢迎关注 我的微信"` v := Request{v.ToUserName, v.FromUserName, v.CreateTime, v.MsgType, Content, v.MsgId} output, err := xml.MarshalIndent(v, " ", " ") if err != nil { fmt.Printf("error:%v\n", err) } fmt.Fprintf(w, string(output)) } } func checkSignature(w http.ResponseWriter, r *http.Request) { r.ParseForm() var token string = "你的token" var signature string = strings.Join(r.Form["signature"], "") var timestamp string = strings.Join(r.Form["timestamp"], "") var nonce string = strings.Join(r.Form["nonce"], "") var echostr string = strings.Join(r.Form["echostr"], "") tmps := []string{token, timestamp, nonce} sort.Strings(tmps) tmpStr := tmps[0] + tmps[1] + tmps[2] tmp := str2sha1(tmpStr) if tmp == signature { fmt.Fprintf(w, echostr) } } func main() { http.HandleFunc("/check", checkSignature) http.HandleFunc("/", action) http.ListenAndServe(":8080", nil) }
转载请注明:微度网络 » golang(Go语言)实现微信公众平台
相关推荐
【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用
简单高效的微信公众平台消息处理库 安装 $ go get github.com/feit/wechat 用法 package main import ( "net/http" "wechat" ) func wechatHandler ( this * wechat. Message ) { switch this . Msg [ "Content" ...
有意向的可以简历砸过来: QQ:15967396 邮件: 历史版本 简介模块描述mp微信公众平台SDK ch微信商户平台(微信支付)SDK安装去获取-u github.com/chanxuehong/wechat / ...一点简单的帮助文档,也许对你有作用联系...
Gowechat golang中的微信开放接口补充 pb-mp和qy的公共和基础功能实现 qy-对于微信qiye dev mp-微信mp开发 到目前为止,仓库还没有实现微信的所有接口。
标题中的“核酸采样点一站查毕业论文go+微信小程序”指的是一个基于Go语言和微信小程序的项目,旨在实现一个方便快捷的核酸采样点查询服务。该项目作为毕业设计,涵盖了从需求分析到系统实现的全过程,旨在提高公众...
Go语言圣经(中文版)Go语言圣经 中文版本,仅供学习交流之用。对于希望学习CGO、Go汇编语言等高级用法的同学,我们推荐开源图书。项目主页:原版官网:译者信息:译者:柴树杉,Github ,Twitter译者:Xargin,译者...
扫描下面的二维码(或微信搜索k8s技术圈)关注我们的微信公众帐号,在微信公众号中回复加群即可加入到我们的kubernetes讨论群里面共同学习。 目录 下面是博客中主要的一些文章目录 Kubernetes / Docker 高朗 Python ...
在Golang中,有很多优秀的日志库可以选择,如logrus、zap、go-kit的log等。这些库提供了丰富的功能,比如级别控制(如DEBUG、INFO、WARN、ERROR等)、时间戳、堆栈跟踪、自定义格式化等,使日志记录更加灵活且便于...