| 
					
				 | 
			
			
				@@ -0,0 +1,442 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package wechat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"encoding/xml" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Client wechat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type Client struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	UseCacheToken bool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID          string `json:"appid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppSecret      string `json:"appsecret"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Token          string `json:"token"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EncodingAESKey string `json:"encodingaeskey"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AccessToken string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Ticket      string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//TokenFromCache bool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LastTokenTime  int64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LastTicketTime int64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ClientToken wechat client token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ClientToken struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID string `json:"appid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AccessToken   string `json:"access_token"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LastTokenTime int64  `json:"last_token_time"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ClientTicket wechat client ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ClientTicket struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID string `json:"appid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Ticket         string `json:"ticket"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LastTicketTime int64  `json:"last_ticket_time"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MiniClient wechat mini 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MiniClient struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID     string `json:"appid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppSecret string `json:"appsecret"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AccessToken   string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LastTokenTime int64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ResponseMsg response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ResponseMsg struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ErrCode int    `json:"errcode,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ErrMsg  string `json:"errmsg,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ResponseToken token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ResponseToken struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AccessToken string `json:"access_token"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ExpiresIn   int    `json:"expires_in"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ResponseTicket ticket 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ResponseTicket struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Ticket    string `json:"ticket"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ExpiresIn int    `json:"expires_in"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormSignature signature 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormSignature struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TimeStamp string `form:"timestamp" json:"timestamp"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Nonce     string `form:"nonce" json:"nonce"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Signature string `form:"signature" json:"signature"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Echostr   string `form:"echostr" json:"echostr"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormAuthorize get code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormAuthorize struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Code  string `form:"code"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	State string `form:"state"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL   string `form:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormOpenID openid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormOpenID struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OpenID string `form:"openid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormCode code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormCode struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Code string `form:"code"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormSignPackage js sign package 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormSignPackage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL string `form:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormURLState redirect url and state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormURLState struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	RedirectURL string `form:"url" json:"url" xml:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	State       string `form:"state" json:"state" xml:"state"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Message message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type Message struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	XMLName      xml.Name `xml:"xml"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ToUserName   string   `xml:"ToUserName" json:"ToUserName"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FromUserName string   `xml:"FromUserName" json:"FromUserName"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CreateTime   int64    `xml:"CreateTime" json:"CreateTime"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MsgType      string   `xml:"MsgType" json:"MsgType"` // text/image/voice/video/shortvideo/location/link 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 文本 Text Text message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Text string `xml:"Content,omitempty" json:"Content,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 图片 PicURL / MediaID image messgae 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PicURL string `xml:"PicUrl,omitempty" json:"PicUrl,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// MediaID 媒体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MediaID string `xml:"MediaId,omitempty" json:"MediaId,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 语音 MediaID / Format voice message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Format string `xml:"Format,omitempty" json:"Format,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 视频/小视频 ThumbMediaID / MediaID video/shortvideo message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ThumbMediaID string `xml:"ThumbMediaId,omitempty" json:"ThumbMediaId,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 地理位置 location message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LocationX string `xml:"Location_X,omitempty" json:"Location_X,omitempty"` // 纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	LocationY string `xml:"Location_Y,omitempty" json:"Location_Y,omitempty"` // 经度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Scale     string `xml:"Scale,omitempty" json:"Scale,omitempty"`           // 地图缩放大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Label     string `xml:"Label,omitempty" json:"Label,omitempty"`           // 地理位置信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 链接消息 link 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Title       string `xml:"Title,omitempty" json:"Title,omitempty"`             // 消息标题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Description string `xml:"Description,omitempty" json:"Description,omitempty"` // 消息描述 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL         string `xml:"Url,omitempty" json:"Url,omitempty"`                 // 消息链接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Event string `xml:"Event,omitempty" json:"Event,omitempty"` // 事件 subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单事件)、SCAN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 扫描带参数二维码事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	EventKey string `xml:"EventKey,omitempty" json:"EventKey,omitempty"` // 事件KEY 值,扫码未关注的 qrscene_ 为前缀(subscribe 事件, 已关注的推送 SCAN 事件),后面为二维码的参数值, 自定义菜单事件与自定义菜单接口中 KEY 值对应 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Ticket   string `xml:"Ticket,omitempty" json:"Ticket,omitempty"`     // 二维码的ticket,可用来换取二维码图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 地理位置 location message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Latitude  string `xml:"Latitude,omitempty" json:"Latitude,omitempty"`   // 纬度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Longitude string `xml:"Longitude,omitempty" json:"Longitude,omitempty"` // 经度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Precision string `xml:"Precision,omitempty" json:"Precision,omitempty"` // 地理位置精度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MsgID  int64  `xml:"MsgID,omitempty" json:"MsgID,omitempty"`   // 消息id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Status string `xml:"Status,omitempty" json:"Status,omitempty"` // 消息发送状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type menuSubButtonList struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Type string `json:"type"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Name string `json:"name"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Key  string `json:"key"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL  string `json:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type menuSubButton struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	List []menuSubButtonList `json:"list"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type menuButton struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Type      string        `json:"type"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Name      string        `json:"name"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Key       string        `json:"key"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SubButton menuSubButton `json:"sub_button"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type menuInfo struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Button []menuButton `json:"button"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Menu menu 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type Menu struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	IsOpen int64    `json:"is_menu_open"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Info   menuInfo `json:"selfmenu_info"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormMenuButton menu button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormMenuButton struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Type      string            `json:"type,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Name      string            `json:"name"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Key       string            `json:"key,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL       string            `json:"url,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID     string            `json:"appid,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Pagepath  string            `json:"pagepath,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MediaID   string            `json:"media_id,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SubButton []*FormMenuButton `json:"sub_button,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormMenu menu create 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormMenu struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Button []*FormMenuButton `json:"button"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ArticleItem article item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ArticleItem struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Title       string `xml:"Title" json:"Title"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Description string `xml:"Description" json:"Description"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PicURL      string `xml:"PicUrl" json:"PicUrl"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL         string `xml:"Url" json:"Url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type articleItems struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Items []ArticleItem `xml:"item" json:"item"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ReplyMessage reply message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ReplyMessage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	XMLName      xml.Name `xml:"xml"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ToUserName   string   `xml:"ToUserName" json:"ToUserName"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FromUserName string   `xml:"FromUserName" json:"FromUserName"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CreateTime   int64    `xml:"CreateTime" json:"CreateTime"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MsgType      string   `xml:"MsgType" json:"MsgType"` // text/image/voice/video/music/news 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 文本 Content Text message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Content string `xml:"Content,omitempty" json:"Content,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ArticleCount int           `xml:"ArticleCount,omitempty" json:"ArticleCount,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Articles     *articleItems `xml:"Articles,omitempty" json:"Articles,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// EventTemplateReply event reply 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type EventTemplateReply struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	XMLName      xml.Name `xml:"xml"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ToUserName   string   `xml:"ToUserName"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FromUserName string   `xml:"FromUserName"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CreateTime   string   `xml:"CreateTime"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MsgType      string   `xml:"MsgType"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Event        string   `xml:"Event"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MsgID        string   `xml:"MsgID"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Status       string   `xml:"Status"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// SignPackage sign package 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type SignPackage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID     string `json:"appId"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NonceStr  string `json:"nonceStr"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Timestamp int64  `json:"timestamp"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Signature string `json:"signature"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Ticket    string `json:"ticket"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL       string `json:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormMaterial Material 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormMaterial struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Type   string `form:"type"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Offset int    `form:"offset"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Count  int    `form:"count"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// UserInfo userinfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type UserInfo struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SubScribe      int    `json:"subscribe"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OpenID         string `json:"openid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NickName       string `json:"nickname"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Sex            int    `json:"sex"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Language       string `json:"language"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	City           string `json:"city"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Province       string `json:"province"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Country        string `json:"country"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	HeadImgURL     string `json:"headimgurl"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SubscribeTime  int    `json:"subscribe_time"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	UnionID        string `json:"unionid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Remark         string `json:"remark"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	GroupID        int    `json:"groupid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TagidList      []int  `json:"tagid_list"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	SubscribeScene string `json:"subscribe_scene"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	QrScene        int    `json:"qr_scene"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	QrSceneStr     string `json:"qr_scene_str"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormNextOpenID next openid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormNextOpenID struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Next string `form:"next_openid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// List openid list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type List struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OpenID []string `json:"openid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// UserList user list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type UserList struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Total      int    `json:"total"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Count      int    `json:"count"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Data       List   `json:"data"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NextOpenID string `json:"next_openid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MaterialNewsItem 图片素材 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MaterialNewsItem struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Title              string `json:"title"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Author             string `json:"author"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Digest             string `json:"digest"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Content            string `json:"content"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ContentSourceURL   string `json:"content_source_url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ThumbMediaID       string `json:"thumb_media_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ShowCoverPic       int    `json:"show_cover_pic"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL                string `json:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ThumbURL           string `json:"thumb_url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NeedOpenComment    int    `json:"need_open_comment"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OnlyFansCanComment int    `json:"only_fans_can_comment"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MaterialContent 素材内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MaterialContent struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NewsItem   []*MaterialNewsItem `json:"news_item,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CreateTime int                 `json:"create_time,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	UpdateTime int                 `json:"update_time,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MaterialItem 素材信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MaterialItem struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MediaID    string           `json:"media_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Name       string           `json:"name,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	UpdateTime int              `json:"update_time"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL        string           `json:"url,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Content    *MaterialContent `json:"content,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Material 素材 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type Material struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TotalCount int            `json:"total_count"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ItemCount  int            `json:"item_count"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Item       []MaterialItem `json:"item"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MiniProgramPage mini 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MiniProgramPage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID    string `json:"appid,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	PagePath string `json:"pagepath,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// ValueColor value color 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type ValueColor struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Value string `json:"value"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Color string `json:"color,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TemplateResponse 模版消息返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type TemplateResponse struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResponseMsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MessageID int64 `json:"msgid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TemplateData data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type TemplateData struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	First     *ValueColor `json:"first"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword1  *ValueColor `json:"keyword1,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword2  *ValueColor `json:"keyword2,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword3  *ValueColor `json:"keyword3,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword4  *ValueColor `json:"keyword4,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword5  *ValueColor `json:"keyword5,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword6  *ValueColor `json:"keyword6,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword7  *ValueColor `json:"keyword7,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword8  *ValueColor `json:"keyword8,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword9  *ValueColor `json:"keyword9,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Keyword10 *ValueColor `json:"keyword10,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Name      *ValueColor `json:"name,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ExpDate   *ValueColor `json:"expDate,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Remark    *ValueColor `json:"remark,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TemplateMessage template message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type TemplateMessage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ToUser      string           `json:"touser"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TemplateID  string           `json:"template_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL         string           `json:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MiniProgram *MiniProgramPage `json:"miniprogram,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Data        TemplateData     `json:"data"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MiniTemplateMessage mini template message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MiniTemplateMessage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ToUser     string       `json:"touser"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TemplateID string       `json:"template_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Page       string       `json:"page"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FormID     string       `json:"form_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Data       TemplateData `json:"data"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// WeappTemplateMessage mini message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type WeappTemplateMessage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TemplateID string       `json:"template_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Page       string       `json:"page"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FormID     string       `json:"form_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Data       TemplateData `json:"data"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Emphasis   string       `json:"emphasis_keyword"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MpTemplateMessage wechat public message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MpTemplateMessage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID      string          `json:"appid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TemplateID string          `json:"template_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	URL        string          `json:"url"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Mini       MiniProgramPage `json:"miniprogram"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Data       TemplateData    `json:"data"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// MiniUniformMessage mini uniform send 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type MiniUniformMessage struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ToUser string                `json:"touser"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	WeApp  *WeappTemplateMessage `json:"weapp_template_msg,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MP     *MpTemplateMessage    `json:"mp_template_msg,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// FormPayNotify notify 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type FormPayNotify struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	XMLName  xml.Name `xml:"xml" json:"_,omitempty"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	AppID    string   `form:"appid" xml:"appid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Attach   string   `form:"attach" xml:"attach"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	BankType string   `form:"bank_type" xml:"bank_type"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CashFee  int      `form:"cash_fee" xml:"cash_fee"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	FeeType  string   `form:"fee_type" xml:"fee_type"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	MchID       string `form:"mch_id" xml:"mch_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	IsSubscribe string `form:"is_subscribe" xml:"is_subscribe"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	NonceStr    string `form:"nonce_str" xml:"nonce_str"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OpenID      string `form:"openid" xml:"openid"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	OutTradeNo  string `form:"out_trade_no" xml:"out_trade_no"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ResultCode string `form:"result_code" xml:"result_code"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ReturnMsg  string `form:"return_msg" xml:"return_msg"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ReturnCode string `form:"return_code" xml:"return_code"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ErrCodeDes string `form:"err_code_des" xml:"err_code_des"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ErrCode    string `form:"err_code" xml:"err_code"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Sign     string `form:"sign" xml:"sign"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TimeEnd  string `form:"time_end" xml:"time_end"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TotalFee int    `form:"total_fee" xml:"total_fee"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TradeType     string `form:"trade_type" xml:"trade_type"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	TransactionID string `form:"transaction_id" xml:"transaction_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ContractID    string `form:"contract_id" xml:"contract_id"` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |