这个不是全部的代码哦,只是一个演示可以验证跟接受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语言)实现微信公众平台
相关推荐
基于Go语言实现微信小程序获得访问者ip的天气源码.zip基于Go语言实现微信小程序获得访问者ip的天气源码.zip基于Go语言实现微信小程序获得访问者ip的天气源码.zip基于Go语言实现微信小程序获得访问者ip的天气源码.zip...
【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用
golang整合微信支付
weixin-golang-sdk 微信golang工具包
此项目是微信公众号批量自动化爬虫的核心实现, 面向开发者开源, 可以当做go语言包引入到自己项目中, 完整产品必须二次开发实现,QQ交流群: 563954381 微信的防作弊一直在不断更新完善,过于频繁的抓取可能导致微信...
基于GO语音的毕业设计、课程作业,系统源码!!
go语言实现微信企业号发送监控 for OpenFalcon
用Golang实现微信跳一跳游戏自动玩
golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO...
使用go语言作为服务器端语言,前端使用jquery vue等实现,目前只实现了好友添加,聊天功能
在开发微信小程序的过程中,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。那么这个用户身份标识就是 openid。 小程序获取 openid 的流程 那么小程序获取 ...
基于Golang实现的,OpenAI微信聊天机器人.zip 简介 最近 chatGPT 火遍了中文互联网,而它的公司 OpenAI 也开放了 API 供开发者完成自己的创意。本项目是一个 Golang 实现的,基于 OpenAI 的开放 API 实现的微信聊天...
wechat_pusher:Go 实现的微信模板消息推送服务
golang+vue即时通讯,仿微信PC端,系统内部聊天.zip
golang微信小程序具有高并发,低延迟,完全继承golang的优良传统,快捷简单
主要介绍了golang实现微信小程序商城后台系统(moshopserver),本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
在开发微信小程序的过程中,小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。那么这个用户身份标识就是 openid。 小程序获取 openid 的流程 那么小程序获取 ...
微信扫码登录源码资料JAVA学习原代码练习
PowerWechat是一款基于WeChat SDK for Golang,支持小程序、微信支付、企业微信、公众号等全微信生态.zip
特点 1、代码简单、灵活可靠。 2、可扩展性强:参数传递采用map[string]interface{},不需要定义复杂的结构,满足多变的参数需求。 3、支持服务商模式和非服务商模式。