这个不是全部的代码哦,只是一个演示可以验证跟接受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支付合集(包括微信支付,支付宝,)"是一个专为Go语言开发者设计的支付集成库,旨在简化在项目中集成微信支付和支付宝的过程。这个合集不仅提供了基本的支付接口调用,还可能包含订单管理、退款、通知处理等...
Golang支付-微信公众号、微信应用、微信小程序、微信企业支付、支付宝网络版、支付宝应用、支付宝企业支付_支付宝
weixin-golang-sdk 微信golang工具包
【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用
基于Go语言实现微信小程序获得访问者ip的天气源码.zip基于Go语言实现微信小程序获得访问者ip的天气源码.zip基于Go语言实现微信小程序获得访问者ip的天气源码.zip基于Go语言实现微信小程序获得访问者ip的天气源码.zip...
golang整合微信支付
在本文中,我们将深入探讨如何使用Go-Golang语言实现聚合支付系统,该系统涵盖了微信支付和支付宝两大主流的在线支付平台。聚合支付是现代电子商务的关键组成部分,它允许商家通过一个统一的接口处理来自不同支付...
微信小程序服务端SDK(for Golang)是专为Golang开发者设计的一个工具包,用于方便地与微信小程序进行交互和数据通信。这个SDK允许开发者在服务端实现与小程序的无缝对接,提供高效、稳定的服务支持。本文将详细介绍...
go语言golang写的wechat微信数据库dump代码,端的
Golang,也被称为Go语言,是由Google开发的一种静态类型的、编译型的、并发型且具有垃圾回收功能的编程语言。在本项目中,Golang主要负责以下几方面: 1. **网络通信**:Go语言内置的`net/http`包使得构建Web服务器...
企业微信(客服)能力下的ChatGPT微信机器人。 企业微信(客服)能力下的 GPT-3 微信机器人 目前越来越多的人开始用 GPT-3 相关的产品协助自己的工作和学习,在微信上也有不少接入API的机器人。 不过目前而言,想...
此项目是微信公众号批量自动化爬虫的核心实现, 面向开发者开源, 可以当做go语言包引入到自己项目中, 完整产品必须二次开发实现,QQ交流群: 563954381 微信的防作弊一直在不断更新完善,过于频繁的抓取可能导致微信...
标题中的“golang微信小程序”指的是使用Go语言(Golang)开发的微信小程序应用。Go语言,由Google公司设计,以其高效、简洁和并发性著称,被广泛应用于后端服务开发、网络编程以及高性能计算等领域。将Go语言应用于...
基于GO语音的毕业设计、课程作业,系统源码!!
go语言实现微信企业号发送监控 for OpenFalcon
1. **Golang(Go语言)**:Go语言是Google公司于2009年推出的开源编程语言,设计目标是简单、高效、可移植。它的并发模型基于goroutines和channels,非常适合构建网络服务和高并发应用。在这个项目中,Golang被选为...
本方法粘贴后,自己完善微信签名,err处理后即可使用。商户号配置支付页面的链接即可。
golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO语言开发工具golang GO...
在`wechat4go-master`这个压缩包中,我们可以预期找到一个用Go语言实现的微信个人号接口库。这个库可能包含了以下组件: 1. `login`模块:用于模拟用户登录,可能包括获取二维码、扫描验证、登录状态保持等。 2. `...
【golang实现微信小程序商城后台系统(moshopserver)】 本文将深入探讨如何使用Golang语言构建微信小程序的后台系统,moshopserver。Golang作为一门相对较新的编程语言,以其简洁的语法和高效的性能受到了许多...