微信公众号消息接收与回复golang代码演示

{app.params.name}}{app.params.name}}{app.params.name}}

微信公众号消息接收与回复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 ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/159



版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/159