微信公众号消息接收与回复golang代码演示
import (
"xxx/modules/log"
"xxx/modules/server"
"xxx/modules/utils"
"encoding/xml"
"net/http"
"time"
)
func Message(c *server.Context) {
type ReceiveData struct {
ToUserName string `xml:"ToUserName"`
FromUserName string `xml:"FromUserName"`
CreateTime string `xml:"CreateTime"`
MsgType string `xml:"MsgType"`
Content string `xml:"Content"`
MsgId string `xml:"MsgId"`
MsgDataId string `xml:"MsgDataId"`
Idx string `xml:"Idx"`
}
var receiveData ReceiveData
c.BindXML(&receiveData)
tag := "Message"
//body := c.Request.Body
log.InfoLogger.H(tag, utils.H{
"body": c.Request.Body,
"xml": receiveData,
})
type ReturnData struct {
XMLName xml.Name `xml:"xml"`
ToUserName string `xml:"ToUserName"`
FromUserName string `xml:"FromUserName"`
CreateTime int64 `xml:"CreateTime"`
MsgType string `xml:"MsgType"`
Content string `xml:"Content"`
}
type ReturnPicNewsItem struct {
Title string `xml:"Title"`
Description string `xml:"Description"`
PicUrl string `xml:"PicUrl"`
Url string `xml:"Url"`
}
type ReturnPicNewsNode struct {
Item []ReturnPicNewsItem `xml:"item"`
}
type ReturnPicNewsData struct {
XMLName xml.Name `xml:"xml"`
ToUserName string `xml:"ToUserName"`
FromUserName string `xml:"FromUserName"`
CreateTime int64 `xml:"CreateTime"`
MsgType string `xml:"MsgType"`
ArticleCount int `xml:"ArticleCount"`
Articles ReturnPicNewsNode `xml:"Articles"`
}
if receiveData.MsgType == "text" && receiveData.Content == "xxxxx" {
var item = []ReturnPicNewsItem{
{
Title: "xxx",
Description: "xxx",
PicUrl: "xxx.jpg",
Url: "https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=xxx&scene=1000&template_id=xxx&redirect_url=xxx&reserved=xxx#wechat_redirect",
},
}
var node = ReturnPicNewsNode{
Item: item,
}
var message = ReturnPicNewsData{
ToUserName: receiveData.FromUserName,
FromUserName: receiveData.ToUserName,
CreateTime: time.Now().Unix(),
MsgType: "news",
ArticleCount: 1,
Articles: node,
}
log.InfoLogger.H(tag, utils.H{
"message": message,
})
c.XML(http.StatusOK, message)
} else {
var message = ReturnData{
ToUserName: receiveData.FromUserName,
FromUserName: receiveData.ToUserName,
CreateTime: time.Now().Unix(),
MsgType: "text",
Content: "欢迎",
}
c.XML(http.StatusOK, message)
}
}
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于
博客(
https://www.xiaorongmao.com ),版权所有,侵权必究。