Documentation ¶
Index ¶
- Constants
- Variables
- func AESCBCDecrypt(enc, key, iv []byte) (src []byte, err error)
- func AESCBCEncrypt(src, key, iv []byte) (enc []byte, err error)
- func AddCustom(account, nickname, password string) (err error)
- func AddCustomStruct(cust *Custom) (err error)
- func AddNews(as []Article) (mediaId string, err error)
- func AddTemplate(shortId string) (templateId string, err error)
- func BatchUpdateMemberGroup(openIds []string, toGroupId int) (err error)
- func CheckSignature(token, timestamp, nonce, encrypt, sign string) bool
- func CheckWebToken(webToken, openId string) (err error)
- func CreateConditionalMenu(cm *ConditionalMenu) (menuId string, err error)
- func CreateMenu(buttons []Button) (err error)
- func DecryptMsg(b64Enc string, aesKey []byte, appId string) (msg []byte, err error)
- func DeleteConditionalMenu(menuId int) (err error)
- func DeleteCustom(account, nickname, password string) (err error)
- func DeleteCustomStruct(cust *Custom) (err error)
- func DeleteMenu() (err error)
- func DeleteNews(mediaId string) (err error)
- func DeleteUserGroup(groupId int) (err error)
- func EncryptMsg(msg []byte, aesKey []byte, appId string) (b64Enc string, err error)
- func GenRedirectURL(redirectURL string, scope ScopeSNSAPI, state ...string) string
- func GetGroupIdByOpenId(openId string) (groupId int, err error)
- func GetQRCodeImg(ticket string) string
- func GetTemporaryMaterial(mediaId string) (filename string, body []byte, err error)
- func GetUnmarshal(url string, ret interface{}) (err error)
- func GetUserList(fromOpenId ...string) (openIds []string, total, count int, nextOpenId string, err error)
- func HandleAccess(w http.ResponseWriter, r *http.Request)
- func Initialize(originId, appId, appSecret, token, encodingAESKey string)
- func LongURL2Short(longURL string) (shortURL string, err error)
- func PKCS7Padding(src []byte, k int) (padded []byte)
- func PKCS7UnPadding(src []byte) (padded []byte)
- func ParseFullMsg(fullMsg []byte) (randBytes []byte, msgLen int, msg []byte, appId string)
- func Post(url string, js []byte) (err error)
- func PostMarshal(url string, v interface{}) (err error)
- func PostMarshalUnmarshal(url string, v interface{}, ret interface{}) (err error)
- func PostUnmarshal(url string, js []byte, ret interface{}) (err error)
- func RandBytes(size int) (r []byte)
- func RefreshAccessToken(appId, appSecret string)
- func SendCustomMsg(openId string, msg CustMsg) (err error)
- func SendTemplateMsg(m *TemplateMsg) (msgId int, err error)
- func SetIndustry(primary, secondary int) error
- func Signature(token, timestamp, nonce, encrypt string) string
- func SpliceFullMsg(msg []byte, appId string) (fullMsg []byte)
- func UpdateCustom(account, nickname, password string) (err error)
- func UpdateCustomStruct(cust *Custom) (err error)
- func UpdateMemberGroup(openId string, toGroupId int) (err error)
- func UpdateNews(news *UpdateNewsReq) (err error)
- func UpdateUserRemark(openId, remark string) (err error)
- func Upload(url, fieldName string, file *os.File, ret interface{}, desc ...string) (err error)
- func UploadHeading(account string, file *os.File) (err error)
- func UploadImg(file *os.File) (u string, err error)
- func UploadNews(mtype MediaType, file *os.File) (mediaId, u string, err error)
- func UploadTemporaryMaterial(mtype MediaType, file *os.File) (mediaId string, createAt int, err error)
- func UploadVideo(mtype MediaType, title, desc string, file *os.File) (mediaId, u string, err error)
- func ValidateURL(token, timestamp, nonce, signature string) bool
- type Account
- type AllMenu
- type Article
- type Button
- type ConditionalMenu
- type CustImage
- type CustMsg
- type CustMusic
- type CustNewsArticle
- type CustText
- type CustVideo
- type CustVoice
- type CustWXCard
- type Custom
- type CustomList
- type EncMessage
- type EventAnnualRenew
- type EventBase
- type EventClick
- type EventLocation
- type EventLocationSelect
- type EventNamingVerifyFail
- type EventNamingVerifySuccess
- type EventPicPhotoOrAlbum
- type EventPicSysphoto
- type EventPicWeixin
- type EventQualificationVerifyFail
- type EventQualificationVerifySuccess
- type EventScancodePush
- type EventScancodeWaitmsg
- type EventSubscribe
- type EventTemplateSendJobFinish
- type EventType
- type EventVerifyExpired
- type EventView
- type Group
- type GroupIdWapper
- type GroupWapper
- type GroupsWapper
- type KeywordPair
- type Lang
- type MatchRule
- type MaterialCount
- type MediaType
- type MenuInfo
- type MenuType
- type Message
- type MsgType
- type News
- type NewsList
- type QRCodeTicket
- type RecvEvent
- type RecvImage
- type RecvLink
- type RecvLocation
- type RecvMsg
- type RecvText
- type RecvVideo
- type RecvVoice
- type ReplyArticle
- type ReplyBase
- type ReplyImage
- type ReplyMsg
- type ReplyMusic
- type ReplyNews
- type ReplyText
- type ReplyVideo
- type ReplyVoice
- type ScopeSNSAPI
- type TemplateData
- type TemplateId
- type TemplateMsg
- type TempplateMsgId
- type UpdateNewsReq
- type UserInfo
- type WebToken
- type WebUserInfo
- type WeixinError
- type WeixinErrorer
Constants ¶
const ( CustomAddURL = "https://api.weixin.qq.com/customservice/kfaccount/add?access_token=%s" CustomUpdateURL = "https://api.weixin.qq.com/customservice/kfaccount/update?access_token=%s" CustomDeleteURL = "https://api.weixin.qq.com/customservice/kfaccount/del?access_token=%s" // 设置客服帐号的头像 CustomHeadingURL = "http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=%s&kf_account=%s" CustomListURL = "https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=%s" CustomMsgURL = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s" )
客服消息接口
const ( WeixinErrCodeSystemBusy = -1 WeixinErrCodeSuccess = 0 )
微信错误消息
const ( MaterialUploadTemporaryURL = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s" MaterialGetTemporaryURL = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s" MaterialAddNewsURL = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=%s" MaterialUploadImg = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=%s" MaterialUploadNewsURL = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=%s&type=%s" MaterialGetNewsURL = "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=%s" MaterialDeleteNewsURL = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=%s" MaterialUpdateNewsURL = "https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=%s" MaterialCountURL = "https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=%s" MaterialBatchGetNewsURL = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s" )
素材管理
const ( MenuCreateURL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s" MenuGetURL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=%s" MenuDeleteURL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=%s" MenuInfoURL = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=%s" )
自定义菜单
const ( MenuTypeClick = "click" // 点击推事件 MenuTypeView = "view" // 点击推事件 MenuTypeScancodePush = "scancode_push" // 扫码推事件 MenuTypeScancodeWaitmsg = "scancode_waitmsg" // 扫码推事件且弹出“消息接收中”提示框 MenuTypePicSysphoto = "pic_sysphoto" // 弹出系统拍照发图 MenuTypePicPhotoOrAlbum = "pic_photo_or_album" // 弹出拍照或者相册发图 MenuTypePicWeixin = "pic_weixin" // 弹出微信相册发图器 MenuTypeLocationSelect = "location_select" // 弹出地理位置选择器 MenuTypeMediaId = "media_id" // 下发消息(除文本消息) MenuTypeViewLimited = "view_limited" // 跳转图文消息URL )
各种菜单类型
const ( MenuCreateConditionalURL = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=%s" MenuTryMatchConditionalMenuURL = "https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=%s" MenuDeleteConditionalURL = "https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=%s" )
个性化菜单
const ( AccountCreateQRCodeURL = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s" AccountGetQRCodeImgAddrURL = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=%s" )
二维码
const ( TamplateSetIndustryURL = "https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=%s" TemplateAddTemplateURL = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=%s" TemplateSendTemplateMsgURL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s" )
模板消息接口
const ( UserGroupCreateURL = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=%s" UserGroupUpdateURL = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=%s" UserGroupDeleteURL = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=%s" UserGroupGetAllURL = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=%s" UserGroupGetGroupIdURL = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=%s" UserGroupUpdateMemberGroupURL = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=%s" UserGroupBatchUpdateMemberGroupURL = "https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token=%s" )
用户分组管理
const ( UserInfoUpdateRemarkURL = "https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=%s" UserInfoGetUserInfoURL = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s" UserInfoBatchGetUserInfoURL = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=%s" UserInfoGetUserListURL = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s" )
用户基本信息
const ( LangZHCN = "zh_CN" // 简体 LangZHTW = "zh_TW" // 繁体 LangEN = "en" // 英语 )
微信支持的语言
const ( UserWebRedirectURL = "" /* 129-byte string literal not displayed */ UserWebWebTokenURL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code" UserWebRefreshTokenURL = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%s&grant_type=refresh_token&refresh_token=%s" UserWebGetWebUserInfoURL = "https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=%s" UserWebCheckWebTokenURL = "https://api.weixin.qq.com/sns/auth?access_token=%s&openid=%s" )
网页授权获取用户基本信息
const ( // 不弹出授权页面,直接跳转,只能获取用户openid ScopeSNSAPIBase = "snsapi_base" // 弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息 ScopeSNSAPIUserInfo = "snsapi_userinfo" )
应用授权作用域
const (
ShortURLLongURL2ShortURL = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=%s"
)
链接转换
Variables ¶
var ( RecvTextHandler func(*RecvText) ReplyMsg RecvImageHandler func(*RecvImage) ReplyMsg RecvVoiceHandler func(*RecvVoice) ReplyMsg RecvVideoHandler func(*RecvVideo) ReplyMsg RecvShortVideoHandler func(*RecvVideo) ReplyMsg RecvLocationHandler func(*RecvLocation) ReplyMsg RecvLinkHandler func(*RecvLink) ReplyMsg )
各类消息处理器
var ( EventSubscribeHandler func(*EventSubscribe) ReplyMsg EventUnsubscribeHandler func(*EventSubscribe) ReplyMsg EventLocationHandler func(*EventLocation) ReplyMsg EventClickHandler func(*EventClick) ReplyMsg EventViewHandler func(*EventView) ReplyMsg EventTemplateSendJobFinishHandler func(*EventTemplateSendJobFinish) ReplyMsg EventScancodePushHandler func(*EventScancodePush) ReplyMsg EventScancodeWaitmsgHandler func(*EventScancodeWaitmsg) ReplyMsg EventPicSysphotoHandler func(*EventPicSysphoto) ReplyMsg EventPicPhotoOrAlbumHandler func(*EventPicPhotoOrAlbum) ReplyMsg EventPicWeixinHandler func(*EventPicWeixin) ReplyMsg EventLocationSelectHandler func(*EventLocationSelect) ReplyMsg EventQualificationVerifySuccessHandler func(*EventQualificationVerifySuccess) ReplyMsg // 资质认证成功 EventQualificationVerifyFailHandler func(*EventQualificationVerifyFail) ReplyMsg // 资质认证失败 EventNamingVerifySuccessHandler func(*EventNamingVerifySuccess) ReplyMsg // 名称认证成功(即命名成功) EventNamingVerifyFailHandler func(*EventNamingVerifyFail) ReplyMsg // 名称认证失败 EventAnnualRenewHandler func(*EventAnnualRenew) ReplyMsg // 年审通知 EventVerifyExpiredHandler func(*EventVerifyExpired) ReplyMsg // 认证过期失效通知 )
各类事件处理器
var ( OriginId string // 原始ID AppId string // 应用ID AppSecret string // 应用密钥 Token string // 令牌 EncodingAESKey []byte // 消息加解密密钥 )
TConfig 配置
var AccessToken func() string
AccessToken 取最新的 access_token,必须使用这个接口取,内部已经加锁
var EventDefaultHandler = func(msg *Message) (reply ReplyMsg) { log.Debugf("unregistered receive event handler %s, use EventDefaultHandler", msg.Event) return nil }
EventDefaultHandler 如果没有注册某类事件处理器,那么收到这类事件时,使用这个默认处理器
var RecvDefaultHandler = func(msg *Message) (reply ReplyMsg) { log.Debugf("unregistered receive message handler %s, use RecvDefaultHandler", msg.MsgType) return nil }
RecvDefaultHandler 如果没有注册某类消息处理器,那么收到这类消息时,使用这个默认处理器
Functions ¶
func AESCBCDecrypt ¶
AESCBCDecrypt 采用 CBC 模式的 AES 解密
func AESCBCEncrypt ¶
AESCBCEncrypt 采用 CBC 模式的 AES 加密
func AddTemplate ¶
AddTemplate 添加模板,获得模板ID
func BatchUpdateMemberGroup ¶
BatchUpdateMemberGroup 批量移动用户分组
func CheckSignature ¶
CheckSignature 验证加密的报文的签名
func CheckWebToken ¶
CheckWebToken 检验网页授权凭证(access_token)是否有效
func CreateConditionalMenu ¶
func CreateConditionalMenu(cm *ConditionalMenu) (menuId string, err error)
CreateConditionalMenu 创建个性化菜单
func DecryptMsg ¶
DecryptMsg 解密报文
func DeleteConditionalMenu ¶
DeleteConditionalMenu 删除个性化菜单,menuId 为菜单 id,可以通过自定义菜单查询接口获取
func DeleteCustom ¶
DeleteCustom 删除客服帐号
func DeleteCustomStruct ¶
DeleteCustomStruct 删除客服帐号
func EncryptMsg ¶
EncryptMsg 加密报文
func GenRedirectURL ¶
func GenRedirectURL(redirectURL string, scope ScopeSNSAPI, state ...string) string
GenRedirectURL 生成跳转链接 state 非必填,默认当前时间 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
func GetGroupIdByOpenId ¶
GetGroupIdByOpenId 查询用户所在分组
func GetTemporaryMaterial ¶
GetTemporaryMaterial 新增临时素材
func GetUnmarshal ¶
GetUnmarshal 工具类, Get 并解析返回的报文,返回 error
func GetUserList ¶
func GetUserList(fromOpenId ...string) (openIds []string, total, count int, nextOpenId string, err error)
GetUserList 获取用户列表。第一个拉取的OPENID,nextOpenId 不填默认从头开始拉取
func HandleAccess ¶
func HandleAccess(w http.ResponseWriter, r *http.Request)
HandleAccess 接入微信公众平台开发,并接口来自微信服务器的消息
func Initialize ¶
func Initialize(originId, appId, appSecret, token, encodingAESKey string)
Initialize 配置并初始化
func LongURL2Short ¶
LongURL2Short 长链接转短链接接口
func PKCS7Padding ¶
PKCS7Padding PKCS#7填充,Buf需要被填充为K的整数倍, 在buf的尾部填充(K-N%K)个字节,每个字节的内容是(K- N%K)
func PKCS7UnPadding ¶
PKCS7UnPadding 去掉PKCS#7填充,Buf需要被填充为K的整数倍, 在buf的尾部填充(K-N%K)个字节,每个字节的内容是(K- N%K)
func ParseFullMsg ¶
ParseFullMsg 从完整报文中解析出消息内容, AES加密的buf由16个字节的随机字符串、4个字节的msg_len(网络字节序)、msg和$AppId组成, 其中msg_len为msg的长度,$AppId为公众帐号的AppId
func PostMarshal ¶
PostMarshal 工具类, POST 编组并返回 error
func PostMarshalUnmarshal ¶
PostMarshalUnmarshal 工具类, POST 编组并解析返回的报文,返回 error
func PostUnmarshal ¶
PostUnmarshal 工具类, POST json 并解析返回的报文,返回 error
func RefreshAccessToken ¶
func RefreshAccessToken(appId, appSecret string)
RefreshAccessToken 定时刷新 access_token
func SendCustomMsg ¶
SendCustomMsg 客服接口-发消息
func SendTemplateMsg ¶
func SendTemplateMsg(m *TemplateMsg) (msgId int, err error)
SendTemplateMsg 发送模板消息,返回消息 Id
func SetIndustry ¶
SetIndustry 设置所属行业
行业代码查询
主行业 副行业 代码 IT科技 互联网/电子商务 1 IT科技 IT软件与服务 2 IT科技 IT硬件与设备 3 IT科技 电子技术 4 IT科技 通信与运营商 5 IT科技 网络游戏 6 金融业 银行 7 金融业 基金|理财|信托 8 金融业 保险 9 餐饮 餐饮 10 酒店旅游 酒店 11 酒店旅游 旅游 12 运输与仓储 快递 13 运输与仓储 物流 14 运输与仓储 仓储 15 教育 培训 16 教育 院校 17 政府与公共事业 学术科研 18 政府与公共事业 交警 19 政府与公共事业 博物馆 20 政府与公共事业 公共事业|非盈利机构 21 医药护理 医药医疗 22 医药护理 护理美容 23 医药护理 保健与卫生 24 交通工具 汽车相关 25 交通工具 摩托车相关 26 交通工具 火车相关 27 交通工具 飞机相关 28 房地产 建筑 29 房地产 物业 30 消费品 消费品 31 商业服务 法律 32 商业服务 会展 33 商业服务 中介服务 34 商业服务 认证 35 商业服务 审计 36 文体娱乐 传媒 37 文体娱乐 体育 38 文体娱乐 娱乐休闲 39 印刷 印刷 40 其它 其它 41
func SpliceFullMsg ¶
SpliceFullMsg 拼接完整报文, AES加密的buf由16个字节的随机字符串、4个字节的msg_len(网络字节序)、msg和$AppId组成, 其中msg_len为msg的长度,$AppId为公众帐号的AppId
func UpdateCustom ¶
UpdateCustom 修改客服帐号
func UpdateCustomStruct ¶
UpdateCustomStruct 修改客服帐号
func UpdateMemberGroup ¶
UpdateMemberGroup 移动用户分组
func UpdateUserRemark ¶
UpdateUserRemark 设置用户备注名
func UploadHeading ¶
UploadHeading 设置客服帐号的头像
func UploadNews ¶
UploadNews 新增其他类型永久素材
func UploadTemporaryMaterial ¶
func UploadTemporaryMaterial(mtype MediaType, file *os.File) (mediaId string, createAt int, err error)
UploadTemporaryMaterial 新增临时素材
func UploadVideo ¶
UploadVideo 新增视频类型永久素材
func ValidateURL ¶
ValidateURL 验证 URL 以判断来源是否合法
Types ¶
type Account ¶
type Account struct { Account string `json:"kf_account"` NickName string `json:"kf_nick"` AccountId string `json:"kf_id"` HeadImgURL string `json:"kf_headimgurl"` }
Account 客服账号
type AllMenu ¶
type AllMenu struct { WeixinError Menu struct { Button []Button `json:"button"` MenuId int `json:"menuid"` // 菜单 id } `json:"menu"` ConditionalMenu struct { Button []Button `json:"button"` MenuId int `json:"menuid"` // 菜单 id MatchRule MatchRule `json:"matchrule"` // 菜单匹配规则 } `json:"conditionalmenu"` }
AllMenu 自定义菜单
type Article ¶
type Article struct { Title string `json:"title"` // 标题 ThumbMediaId string `json:"thumb_media_id"` // 图文消息的封面图片素材id(必须是永久mediaID) Author string `json:"author"` // 作者 Digest string `json:"digest"` // 图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空 ShowCoverPic int `json:"show_cover_pic"` // 是否显示封面,0为false,即不显示,1为true,即显示 Content string `json:"content"` // 图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS URL string `json:"url"` // 图文页的URL ContentSourceURL string `json:"content_source_url"` // 图文消息的原文地址,即点击“阅读原文”后的URL }
Article 永久图文素材
type Button ¶
type Button struct { Name string `json:"name"` Type MenuType `json:"type,omitempty"` Key string `json:"key,omitempty"` URL string `json:"url,omitempty"` SubButton []Button `json:"sub_button,omitempty"` }
Button 菜单上的按钮
func TryMatchConditionalMenu ¶
TryMatchConditionalMenu 测试个性化菜单匹配结果,userId 可以是粉丝的 OpenID,也可以是粉丝的微信号
type ConditionalMenu ¶
type ConditionalMenu struct { Button []Button `json:"button"` // 一级菜单数组,个数应为1~3个 MatchRule MatchRule `json:"matchrule"` // 菜单匹配规则 }
ConditionalMenu 个性化菜单
type CustImage ¶
type CustImage struct {
MediaId string `json:"media_id"` // 发送的图片/语音/视频的媒体ID
}
CustImage 客服接口发送图片消息
type CustMusic ¶
type CustMusic struct { Title string `json:"title"` // 图文消息/视频消息/音乐消息的标题 Description string `json:"description"` // 图文消息/视频消息/音乐消息的描述 MusicURL string `json:"musicurl"` // 音乐链接 HQMusicURL string `json:"hqmusicurl"` // 高品质音乐链接,wifi环境优先使用该链接播放音乐 ThumbMediaId string `json:"thumb_media_id"` // 缩略图的媒体ID }
CustMusic 客服接口发送音乐消息
type CustNewsArticle ¶
type CustNewsArticle struct { Title string `json:"title"` // 图文消息/视频消息/音乐消息的标题 Description string `json:"description"` // 图文消息/视频消息/音乐消息的描述 URL string `json:"url"` // 图文消息被点击后跳转的链接 PicURL string `json:"picurl"` // 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80 }
CustNewsArticle 客服接口发送图文消息。图文消息条数限制在10条以内,注意,如果图文数超过10,则将会无响应
type CustText ¶
type CustText struct {
Content string `json:"content"` // 文本消息内容
}
CustText 客服接口发送文本消息
type CustVideo ¶
type CustVideo struct { MediaId string `json:"media_id"` // 发送的图片/语音/视频的媒体ID ThumbMediaId string `json:"thumb_media_id"` // 缩略图的媒体ID Title string `json:"title"` // 图文消息/视频消息/音乐消息的标题 Description string `json:"description"` // 图文消息/视频消息/音乐消息的描述 }
CustVideo 客服接口发送视频消息
type CustVoice ¶
type CustVoice struct {
MediaId string `json:"media_id"` // 发送的图片/语音/视频的媒体ID
}
CustVoice 客服接口发送语音消息
type CustWXCard ¶
CustWXCard 客服接口发送卡券
type Custom ¶
type Custom struct { Account string `json:"kf_account"` NickName string `json:"nickname"` Password string `json:"password"` }
Custom 客服帐号
type CustomList ¶
type CustomList struct { WeixinError List []Account `json:"kf_list"` }
CustomList 客服列表
type EncMessage ¶
type EncMessage struct { XMLName xml.Name `xml:"xml"` ToUserName string `xml:"-"` // 开发者微信号 Encrypt string // 加密的消息报文 MsgSignature string // 报文签名 TimeStamp string // 时间戳 Nonce string // 随机数 }
EncMessage 加密消息体
type EventAnnualRenew ¶
type EventAnnualRenew struct { EventBase // 事件类型 annual_renew ExpiredTime int // 有效期 (整形),指的是时间戳,将于该时间戳认证过期,需尽快年审 }
EventAnnualRenew 年审通知
func NewEventAnnualRenew ¶
func NewEventAnnualRenew(m *Message) *EventAnnualRenew
NewEventAnnualRenew 把通用 struct 转化成相应类型的 struct
type EventBase ¶
type EventBase struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // 消息类型,event Event EventType // 事件类型 }
EventBase 事件基础类
type EventClick ¶
EventClick 点击菜单拉取消息时的事件推送
func NewEventClick ¶
func NewEventClick(m *Message) *EventClick
NewEventClick 把通用 struct 转化成相应类型的 struct
type EventLocation ¶
type EventLocation struct { EventBase // 事件类型 LOCATION Latitude float64 // 地理位置纬度 Longitude float64 // 地理位置经度 Precision float64 // 地理位置精度 }
EventLocation 上报地理位置事件
func NewEventLocation ¶
func NewEventLocation(m *Message) *EventLocation
NewEventLocation 把通用 struct 转化成相应类型的 struct
type EventLocationSelect ¶
type EventLocationSelect struct { EventBase // 事件类型 pic_sysphoto EventKey string // 事件KEY值,由开发者在创建菜单时设定 LocationX float64 // 地理位置维度 LocationY float64 // 地理位置经度 Scale int // 精度,可理解为精度或者比例尺、越精细的话 scale越高 Label string // 地理位置的字符串信息 Poiname string // 朋友圈POI的名字,可能为空 }
EventLocationSelect 弹出地理位置选择器的事件推送
func NewEventLocationSelect ¶
func NewEventLocationSelect(m *Message) *EventLocationSelect
NewEventLocationSelect 把通用 struct 转化成相应类型的 struct
type EventNamingVerifyFail ¶
type EventNamingVerifyFail struct { EventBase // 事件类型 naming_verify_fail FailTime int // 失败发生时间 (整形),时间戳 FailReason string // 认证失败的原因 }
EventNamingVerifyFail 名称认证失败(这时虽然客户端不打勾,但仍有接口权限)
func NewEventNamingVerifyFail ¶
func NewEventNamingVerifyFail(m *Message) *EventNamingVerifyFail
NewEventNamingVerifyFail 把通用 struct 转化成相应类型的 struct
type EventNamingVerifySuccess ¶
type EventNamingVerifySuccess struct { EventBase // 事件类型 naming_verify_success ExpiredTime int // 有效期 (整形),指的是时间戳,将于该时间戳认证过期 }
EventNamingVerifySuccess 名称认证成功(即命名成功)
func NewEventNamingVerifySuccess ¶
func NewEventNamingVerifySuccess(m *Message) *EventNamingVerifySuccess
NewEventNamingVerifySuccess 把通用 struct 转化成相应类型的 struct
type EventPicPhotoOrAlbum ¶
type EventPicPhotoOrAlbum struct { EventBase // 事件类型 pic_sysphoto EventKey string // 事件KEY值,由开发者在创建菜单时设定 Count int // 发送的图片数量 PicMd5Sums []string // 图片的MD5值,开发者若需要,可用于验证接收到图片 }
EventPicPhotoOrAlbum 弹出拍照或者相册发图的事件推送
func NewEventPicPhotoOrAlbum ¶
func NewEventPicPhotoOrAlbum(m *Message) *EventPicPhotoOrAlbum
NewEventPicPhotoOrAlbum 把通用 struct 转化成相应类型的 struct
type EventPicSysphoto ¶
type EventPicSysphoto struct { EventBase // 事件类型 pic_sysphoto EventKey string // 事件KEY值,由开发者在创建菜单时设定 Count int // 发送的图片数量 PicMd5Sums []string // 图片的MD5值,开发者若需要,可用于验证接收到图片 }
EventPicSysphoto 弹出系统拍照发图的事件推送
func NewEventPicSysphoto ¶
func NewEventPicSysphoto(m *Message) *EventPicSysphoto
NewEventPicSysphoto 把通用 struct 转化成相应类型的 struct
type EventPicWeixin ¶
type EventPicWeixin struct { EventBase // 事件类型 pic_weixin EventKey string // 事件KEY值,由开发者在创建菜单时设定 Count int // 发送的图片数量 PicMd5Sums []string // 图片的MD5值,开发者若需要,可用于验证接收到图片 }
EventPicWeixin 弹出微信相册发图器的事件推送
func NewEventPicWeixin ¶
func NewEventPicWeixin(m *Message) *EventPicWeixin
NewEventPicWeixin 把通用 struct 转化成相应类型的 struct
type EventQualificationVerifyFail ¶
type EventQualificationVerifyFail struct { EventBase // 事件类型 qualification_verify_fail FailTime int // 失败发生时间 (整形),时间戳 FailReason string // 认证失败的原因 }
EventQualificationVerifyFail 资质认证失败
func NewEventQualificationVerifyFail ¶
func NewEventQualificationVerifyFail(m *Message) *EventQualificationVerifyFail
NewEventQualificationVerifyFail 把通用 struct 转化成相应类型的 struct
type EventQualificationVerifySuccess ¶
type EventQualificationVerifySuccess struct { EventBase // 事件类型 qualification_verify_success ExpiredTime int // 有效期 (整形),指的是时间戳,将于该时间戳认证过期 }
EventQualificationVerifySuccess 资质认证成功(此时立即获得接口权限)
func NewEventQualificationVerifySuccess ¶
func NewEventQualificationVerifySuccess(m *Message) *EventQualificationVerifySuccess
NewEventQualificationVerifySuccess 把通用 struct 转化成相应类型的 struct
type EventScancodePush ¶
type EventScancodePush struct { EventBase // 事件类型 scancode_push EventKey string // 事件KEY值,由开发者在创建菜单时设定 ScanType string // 扫描类型,一般是qrcode ScanResult string // 扫描结果,即二维码对应的字符串信息 }
EventScancodePush 扫码推事件的事件推送
func NewEventScancodePush ¶
func NewEventScancodePush(m *Message) *EventScancodePush
NewEventScancodePush 把通用 struct 转化成相应类型的 struct
type EventScancodeWaitmsg ¶
type EventScancodeWaitmsg struct { EventBase // 事件类型 scancode_waitmsg EventKey string // 事件KEY值,由开发者在创建菜单时设定 ScanType string // 扫描类型,一般是qrcode ScanResult string // 扫描结果,即二维码对应的字符串信息 }
EventScancodeWaitmsg 扫码推事件且弹出“消息接收中”提示框的事件推送
func NewEventScancodeWaitmsg ¶
func NewEventScancodeWaitmsg(m *Message) *EventScancodeWaitmsg
NewEventScancodeWaitmsg 把通用 struct 转化成相应类型的 struct
type EventSubscribe ¶
type EventSubscribe struct { EventBase // 事件类型 subscribe(订阅)、unsubscribe(取消订阅) // 用户扫描带场景值二维码时,可能推送以下两种事件: // 1. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。 // EventKey 事件KEY值,qrscene_为前缀,后面为二维码的参数值 // 2. 如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。 // EventKey 事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id EventKey string Ticket string // 二维码的ticket,可用来换取二维码图片 }
EventSubscribe 关注/取消关注事件
func NewEventSubscribe ¶
func NewEventSubscribe(m *Message) *EventSubscribe
NewEventSubscribe 把通用 struct 转化成相应类型的 struct
type EventTemplateSendJobFinish ¶
type EventTemplateSendJobFinish struct { EventBase // 事件类型 VIEW MsgID int // 消息id Status string // 发送状态为成功 }
EventTemplateSendJobFinish 模版消息发送结果通知事件
func NewEventTemplateSendJobFinish ¶
func NewEventTemplateSendJobFinish(m *Message) *EventTemplateSendJobFinish
NewEventTemplateSendJobFinish 把通用 struct 转化成相应类型的 struct
type EventType ¶
type EventType string
EventType 事件类型
const ( EventTypeSubscribe EventType = "subscribe" EventTypeUnsubscribe EventType = "unsubscribe" EventTypeLocation EventType = "LOCATION" EventTypeClick EventType = "CLICK" EventTypeView EventType = "VIEW" EventTypeTemplateSendJobFinish EventType = "TEMPLATESENDJOBFINISH" // 模版消息发送结果通知事件 )
微信支持的事件类型
const ( EventTypeQualificationVerifySuccess EventType = "qualification_verify_success" // 资质认证成功 EventTypeQualificationVerifyFail EventType = "qualification_verify_fail" // 资质认证失败 EventTypeNamingVerifySuccess EventType = "naming_verify_success" // 名称认证成功(即命名成功) EventTypeNamingVerifyFail EventType = "naming_verify_fail" // 名称认证失败 EventTypeAnnualRenew EventType = "annual_renew" // 年审通知 EventTypeVerifyExpired EventType = "verify_expired" // 认证过期失效通知 )
微信支持的事件类型
const ( EventTypeScancodePush EventType = "scancode_push" // 扫码推事件的事件推送 EventTypeScancodeWaitmsg EventType = "scancode_waitmsg" // 扫码推事件且弹出“消息接收中”提示框的事件推送 EventTypePicSysphoto EventType = "pic_sysphoto" // 弹出系统拍照发图的事件推送 EventTypePicPhotoOrAlbum EventType = "pic_photo_or_album" // 弹出拍照或者相册发图的事件推送 EventTypePicWeixin EventType = "pic_weixin" // 弹出微信相册发图器的事件推送 EventTypeLocationSelect EventType = "location_select" // 弹出地理位置选择器的事件推送 )
微信支持的事件类型
type EventVerifyExpired ¶
type EventVerifyExpired struct { EventBase // 事件类型 verify_expired ExpiredTime int // 有效期 (整形),指的是时间戳,表示已于该时间戳认证过期,需要重新发起微信认证 }
EventVerifyExpired 认证过期失效通知
func NewEventVerifyExpired ¶
func NewEventVerifyExpired(m *Message) *EventVerifyExpired
NewEventVerifyExpired 把通用 struct 转化成相应类型的 struct
type EventView ¶
EventView 点击菜单跳转链接时的事件推送
func NewEventView ¶
NewEventView 把通用 struct 转化成相应类型的 struct
type Group ¶
type Group struct { Id int `json:"id,omitempty"` Name string `json:"name"` Count int `json:"count,omitempty"` }
Group 用户分组
func CreateUserGroup ¶
CreateUserGroup 创建用户分组
type GroupIdWapper ¶
type GroupIdWapper struct {
GroupId int `json:"groupid"`
}
GroupIdWapper 用户所在分组包装器
type GroupWapper ¶
type GroupWapper struct { WeixinError Group Group `json:"group"` }
GroupWapper 用户分组包装器
type GroupsWapper ¶
type GroupsWapper struct { WeixinError Groups []Group `json:"groups"` }
GroupsWapper 所有用户分组包装器
type KeywordPair ¶
KeywordPair 模板消息内容值
type MatchRule ¶
type MatchRule struct { GroupId int `json:"group_id,omitempty"` // 用户分组id,可通过用户分组管理接口获取 Sex int `json:"sex,omitempty"` // 性别:男(1)女(2),不填则不做匹配 // 客户端版本,当前只具体到系统型号:IOS(1), Android(2),Others(3),不填则不做匹配 ClientPlatformType int `json:"client_platform_type,omitempty"` // country、province、city组成地区信息,将按照country、province、city的顺序进行验证, // 要符合地区信息表的内容。地区信息从大到小验证,小的可以不填,即若填写了省份信息,则国家信 // 息也必填并且匹配,城市信息可以不填。 例如 “中国 广东省 广州市”、“中国 广东省”都是合法 // 的地域信息,而“中国 广州市”则不合法,因为填写了城市信息但没有填写省份信息。 // 地区信息表:http://mp.weixin.qq.com/wiki/static/assets/870a3c2a14e97b3e74fde5e88fa47717.zip Country string `json:"country,omitempty"` // 国家信息,是用户在微信中设置的地区,具体请参考地区信息表 Province string `json:"province,omitempty"` // 省份信息,是用户在微信中设置的地区,具体请参考地区信息表 City string `json:"city,omitempty"` // 城市信息,是用户在微信中设置的地区,具体请参考地区信息表 }
MatchRule 菜单匹配规则,六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的,
type MaterialCount ¶
type MaterialCount struct { WeixinError VoiceCount int `json:"voice_count"` // 语音总数量 VideoCount int `json:"video_count"` // 视频总数量 ImageCount int `json:"image_count"` // 图片总数量 NewsCount int `json:"news_count"` // 图文总数量 }
MaterialCount 素材总数
func GetMaterialCount ¶
func GetMaterialCount() (mc *MaterialCount, err error)
GetMaterialCount 获取素材总数
type MenuInfo ¶
type MenuInfo struct { IsMenuOpen int `json:"is_menu_open"` // 菜单是否开启,0代表未开启,1代表开启 Button []struct { // 菜单的类型,公众平台官网上能够设置的菜单类型有view(跳转网页)、text(返回文本,下同)、 // img、photo、video、voice。使用API设置的则有8种,详见《自定义菜单创建接口》 Type MenuType `json:"type"` Name string `json:"name"` // 菜单名称 // 对于不同的菜单类型,value的值意义不同。官网上设置的自定义菜单: // Text:保存文字到value; Img、voice:保存mediaID到value; Video:保存视频下载链接到value; // News:保存图文消息到news_info,同时保存mediaID到value; View:保存链接到url。 // 使用API设置的自定义菜单: click、scancode_push、scancode_waitmsg、pic_sysphoto、 // pic_photo_or_album、 pic_weixin、location_select:保存值到key;view:保存链接到url Key string `json:"key"` URL string `json:"url"` Value string `json:"value"` SubButton struct { List []struct { Name string `json:"name"` Type MenuType `json:"type"` Key string `json:"key"` URL string `json:"url"` Value string `json:"value"` NewsInfo struct { List []struct { Title string `json:"title"` // 图文消息的标题 Author string `json:"author"` // 作者 Digest string `json:"digest"` // 摘要 ShowCover string `json:"show_cover"` // 是否显示封面,0为不显示,1为显示 CoverURL string `json:"cover_url"` // 封面图片的URL ContentURL string `json:"content_url"` // 正文的URL SourceURL string `json:"source_url"` // 原文的URL,若置空则无查看原文入口 } } `json:"news_info"` // news_info 图文消息的信息 } `json:"list"` } `json:"sub_button"` // 菜单按钮 } `json:"button"` // 菜单按钮 } `json:"selfmenu_info"` // 菜单信息 }
MenuInfo 自定义菜单配置
type MenuType ¶
type MenuType string
MenuType 菜单类型
请注意:
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。 3、创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。 自定义菜单接口可实现多种类型按钮,如下:
1、click:点击推事件
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
2、view:跳转URL
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
3、scancode_push:扫码推事件
用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。
4、scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框
用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
5、pic_sysphoto:弹出系统拍照发图
用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。
6、pic_photo_or_album:弹出拍照或者相册发图
用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
7、pic_weixin:弹出微信相册发图器
用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
8、location_select:弹出地理位置选择器
用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
9、media_id:下发消息(除文本消息)
用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
10、view_limited:跳转图文消息URL
用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
请注意,3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。9和10,是专门给第三方平台旗下未微信认证(具体而言,是资质认证未通过)的订阅号准备的事件类型,它们是没有事件推送的,能力相对受限,其他类型的公众号不必使用。
type Message ¶
type Message struct { Encrypt string XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgId int // 消息id,64位整型 // text-文本消息,image-图片消息,voice-语音消息, // video-视频消息,shortvideo-小视频消息, // location-地理位置消息,link-链接消息, // music-音乐,news-图文消息 MsgType MsgType // text-文本消息 Content string `xml:",omitempty"` // 文本消息内容 // image-图片消息 PicUrl string `xml:",omitempty"` // 图片链接 MediaId string `xml:",omitempty"` // 图片消息媒体id,可以调用多媒体文件下载接口拉取数据 // voice-语音消息 // MediaId string `xml:",omitempty"`// 语音消息媒体id,可以调用多媒体文件下载接口拉取数据 Format string `xml:",omitempty"` // 语音格式,如amr,speex等 Recongnition string `xml:",omitempty"` // 语音识别结果,使用UTF8编码 // video-视频消息,shortvideo-小视频消息 // MediaId string `xml:",omitempty"` // 视频消息媒体id,可以调用多媒体文件下载接口拉取数据 ThumbMediaId string `xml:",omitempty"` // 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据 // location-地理位置消息 LocationX float64 `xml:"Location_X,omitempty"` // 地理位置维度 LocationY float64 `xml:"Location_Y,omitempty"` // 地理位置经度 Scale int `xml:",omitempty"` // 地图缩放大小 Label string `xml:",omitempty"` // 地理位置信息 // link-链接消息 Title string `xml:",omitempty"` // 消息标题 Description string `xml:",omitempty"` // 消息描述 Url string `xml:",omitempty"` // 消息链接 // 关注/取消关注事件 Event EventType // 事件类型,subscribe(订阅)、unsubscribe(取消订阅) // 扫描带参数二维码事件 // Event EventType // 事件类型,subscribe // 用户扫描带场景值二维码时,可能推送以下两种事件: // 1. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。 // EventKey 事件KEY值,qrscene_为前缀,后面为二维码的参数值 // 2. 如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。 // EventKey 事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id EventKey string // 事件KEY值,qrscene_为前缀,后面为二维码的参数值 Ticket string // 二维码的ticket,可用来换取二维码图片 // 上报地理位置事件 // Event EventType // 事件类型,LOCATION Latitude float64 // 地理位置纬度 Longitude float64 // 地理位置经度 Precision float64 // 地理位置精度 // 模版消息发送任务完成后,微信服务器会将是否送达成功作为通知 // Event EventType // 事件类型,TEMPLATESENDJOBFINISH TplMsgId int // 消息id Status string // 发送状态为成功 // 事件类型,scancode_push/scancode_waitmsg // Event EventType // 事件类型,scancode_push // EventKey string // 事件KEY值,由开发者在创建菜单时设定 ScanType string `json:"ScanCodeInfo>ScanType"` // 扫描类型,一般是qrcode ScanResult string `json:"ScanCodeInfo>ScanResult"` // 扫描结果,即二维码对应的字符串信息 // 事件类型,pic_sysphoto // Event EventType // 事件类型,pic_sysphoto // EventKey string // 事件KEY值,由开发者在创建菜单时设定 Count int `json:"SendPicsInfo>Count"` // 发送的图片数量 PicMd5Sums []string `json:"SendPicsInfo>PicList>item>PicMd5Sum"` // 图片的MD5值,开发者若需要,可用于验证接收到图片 LocationX2 float64 `xml:"SendLocationInfo>Location_X,omitempty"` // 地理位置维度 LocationY2 float64 `xml:"SendLocationInfo>Location_Y,omitempty"` // 地理位置经度 Scale2 int `xml:"SendLocationInfo>Scale,omitempty"` // 精度,可理解为精度或者比例尺、越精细的话 scale越高 Label2 string `xml:"SendLocationInfo>Label,omitempty"` // 地理位置的字符串信息 Poiname string `xml:"SendLocationInfo>Poiname,omitempty"` // 朋友圈POI的名字,可能为空 // 事件类型 qualification_verify_success,naming_verify_success,annual_renew,verify_expired ExpiredTime int // 有效期 (整形),指的是时间戳,将于该时间戳认证过期 // 事件类型,qualification_verify_fail,naming_verify_fail FailTime int // 失败发生时间 (整形),时间戳 FailReason string // 认证失败的原因 }
Message 通用类,接收微信各类消息
type MsgType ¶
type MsgType string
MsgType 消息类型
const ( MsgTypeText MsgType = "text" // 文本消息 MsgTypeImage MsgType = "image" // 图片消息 MsgTypeVoice MsgType = "voice" // 语音消息 MsgTypeVideo MsgType = "video" // 视频消息 MsgTypeShortVideo MsgType = "shortvideo" // 小视频消息 MsgTypeLocation MsgType = "location" // 地理位置消息 MsgTypeLink MsgType = "link" // 链接消息 MsgTypeMusic MsgType = "music" // 音乐消息 MsgTypeNews MsgType = "news" // 图文消息 MsgTypeWXCard MsgType = "wxcard" // 卡券,客服消息时使用 MsgTypeEvent MsgType = "event" // 事件推送 )
微信支持的消息类型
type News ¶
type News struct { Title string `json:"title"` // 图文消息的标题 Description string `json:"description"` DownURL string `json:"down_url"` NewsItem []Article `json:"news_item"` }
News 永久素材
type NewsList ¶
type NewsList struct { WeixinError TotalCount string `json:"total_count"` // 该类型的素材的总数 ItemCount string `json:"item_count"` // 本次调用获取的素材的数量 Item []struct { MediaId string `json:"media_id"` UpdateTime string `json:"update_time"` // 这篇图文消息素材的最后更新时间 Name string `json:"name"` // 文件名称 URL string `json:"url"` // 图文页的URL,或者,当获取的列表是图片素材列表时,该字段是图片的URL Content struct { NewsItem []Article `json:"news_item"` } `json:"content"` // 本次调用获取的素材的数量 } `json:"item"` // 多图文消息会在此处有多篇文章 }
NewsList 素材列表
type QRCodeTicket ¶
type QRCodeTicket struct { Ticket string `json:"ticket"` // 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。 ExpireSeconds int `json:"expire_seconds"` // 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天)。 URL string `json:"url"` // 二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片 }
QRCodeTicket 二维码ticket
func CreatePermanentQRCodeTicket ¶
func CreatePermanentQRCodeTicket(sceneId int) (ticket *QRCodeTicket, err error)
CreatePermanentQRCodeTicket 创建永久二维码
func CreatePermanentQRCodeTicketString ¶
func CreatePermanentQRCodeTicketString(sceneId string) (ticket *QRCodeTicket, err error)
CreatePermanentQRCodeTicketString 创建字符串形式的二维码
func CreateTemporaryQRCodeTicket ¶
func CreateTemporaryQRCodeTicket(sceneId int, expireSeconds ...int) (ticket *QRCodeTicket, err error)
CreateTemporaryQRCodeTicket 创建临时二维码
type RecvEvent ¶
type RecvEvent interface { RecvMsg }
RecvEvent 事件消息
func NewRecvEvent ¶
NewRecvEvent 把通用 struct 转化成相应类型的 struct
type RecvImage ¶
type RecvImage struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // image PicUrl string // 图片链接 MediaId string // 图片消息媒体id,可以调用多媒体文件下载接口拉取数据 MsgId int // 消息id,64位整型 }
RecvImage 接收图片消息
func NewRecvImage ¶
NewRecvImage 把通用 struct 转化成相应类型的 struct
type RecvLink ¶
type RecvLink struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // location Title string // 消息标题 Description string // 消息描述 Url string // 消息链接 MsgId int // 消息id,64位整型 }
RecvLink 接收链接消息
type RecvLocation ¶
type RecvLocation struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // location LocationX float64 `xml:"Location_X,omitempty"` // 地理位置维度 LocationY float64 `xml:"Location_Y,omitempty"` // 地理位置经度 Scale int // 地图缩放大小 Label string // 地理位置信息 MsgId int // 消息id,64位整型 }
RecvLocation 接收地理位置消息
func NewRecvLocation ¶
func NewRecvLocation(m *Message) *RecvLocation
NewRecvLocation 把通用 struct 转化成相应类型的 struct
type RecvText ¶
type RecvText struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // text Content string // 文本消息内容 MsgId int // 消息id,64位整型 }
RecvText 接收文本消息
type RecvVideo ¶
type RecvVideo struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // video MediaId string // 视频消息媒体id,可以调用多媒体文件下载接口拉取数据 ThumbMediaId string // 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据 MsgId int // 消息id,64位整型 }
RecvVideo 接收图片消息
func NewRecvVideo ¶
NewRecvVideo 把通用 struct 转化成相应类型的 struct
type RecvVoice ¶
type RecvVoice struct { RecvMsg ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MsgType MsgType // voice MediaId string // 语音消息媒体id,可以调用多媒体文件下载接口拉取数据 Format string // 语音格式,如amr,speex等 Recongnition string // 语音识别结果,使用UTF8编码 MsgId int // 消息id,64位整型 }
RecvVoice 接收视频/小视频消息
func NewRecvVoice ¶
NewRecvVoice 把通用 struct 转化成相应类型的 struct
type ReplyArticle ¶
type ReplyArticle struct { Title string `xml:",omitempty"` // 图文消息标题 Description string `xml:",omitempty"` // 图文消息描述 PicUrl string `xml:",omitempty"` // 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200 Url string `xml:",omitempty"` // 点击图文消息跳转链接 }
ReplyArticle 图文消息
type ReplyImage ¶
type ReplyImage struct { ReplyBase XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) PicUrl string // 图片链接 MediaId string `xml:"Image>MediaId"` // 图片消息媒体id,可以调用多媒体文件下载接口拉取数据 }
ReplyImage 回复图片消息
type ReplyMusic ¶
type ReplyMusic struct { ReplyBase XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) Title string `xml:"Music>Title,omitempty"` // 音乐标题 Description string `xml:"Music>Description,omitempty"` // 音乐描述 MusicURL string `xml:"Music>MusicURL,omitempty"` // 音乐链接 HQMusicUrl string `xml:"Music>HQMusicUrl,omitempty"` // 高质量音乐链接,WIFI环境优先使用该链接播放音乐 ThumbMediaId string `xml:"Music>ThumbMediaId,omitempty"` // 缩略图的媒体id,通过素材管理接口上传多媒体文件,得到的id }
ReplyMusic 回复音乐消息
type ReplyNews ¶
type ReplyNews struct { ReplyBase XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) ArticleCount int // 图文消息个数,限制为10条以内 Articles []ReplyArticle `xml:"Articles>item"` // 多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应 }
ReplyNews 回复图文消息
type ReplyText ¶
type ReplyText struct { ReplyBase XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) Content string // 文本消息内容 }
ReplyText 回复文本消息
type ReplyVideo ¶
type ReplyVideo struct { ReplyBase XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MediaId string `xml:"Video>MediaId"` // 通过素材管理接口上传多媒体文件,得到的id Title string `xml:"Video>Title,omitempty"` // 视频消息的标题 Description string `xml:"Video>Description,omitempty"` // 视频消息的描述 }
ReplyVideo 回复视频消息
type ReplyVoice ¶
type ReplyVoice struct { ReplyBase XMLName xml.Name `xml:"xml"` ToUserName string // 开发者微信号 FromUserName string // 发送方帐号(一个OpenID) CreateTime string // 消息创建时间(整型) MediaId string `xml:"Voice>MediaId"` // 通过素材管理接口上传多媒体文件,得到的id }
ReplyVoice 回复语音消息
type TemplateData ¶
type TemplateData struct { First KeywordPair `json:"first"` Keyword1 KeywordPair `json:"keyword1"` Keyword2 KeywordPair `json:"keyword2,omitempty"` Keyword3 KeywordPair `json:"keyword3,omitempty"` Keyword4 KeywordPair `json:"keyword4,omitempty"` Keyword5 KeywordPair `json:"keyword5,omitempty"` Remark KeywordPair `json:"value"` }
TemplateData 模板消息内容
type TemplateId ¶
type TemplateId struct { WeixinError TemplateId string `json:"template_id"` }
TemplateId 模板ID with Error
type TemplateMsg ¶
type TemplateMsg struct { ToUser string `json:"touser"` TemplateId string `json:"template_id"` URL string `json:"url,omitempty"` Data TemplateData `json:"data"` }
TemplateMsg 模板消息
type TempplateMsgId ¶
type TempplateMsgId struct { WeixinError MsgId int `json:"msgid"` }
TempplateMsgId 模版消息 Id
type UpdateNewsReq ¶
type UpdateNewsReq struct { MediaId string `json:"media_id"` // 要修改的图文消息的id Index string `json:"index"` // 要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0 Articles []Article `json:"articles"` // 要修改的图文消息的id }
UpdateNewsReq 修改永久图文素材
type UserInfo ¶
type UserInfo struct { WeixinError Subscribe int `json:"subscribe"` OpenId string `json:"openid"` NickName string `json:"nickname"` Sex int `json:"sex"` Language Lang `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"` }
UserInfo 用户基本信息
func BatchGetUserInfo ¶
BatchGetUserInfo 获取用户基本信息(包括UnionID机制)
type WebToken ¶
type WebToken struct { WeixinError AccessToken string `json:"access_token"` // 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 ExpiresIn int `json:"expires_in"` // access_token接口调用凭证超时时间,单位(秒) RefreshToken string `json:"refresh_token"` // 用户刷新access_token OpenId string `json:"openid"` // 用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID Scope string `json:"scope"` // 用户授权的作用域,使用逗号(,)分隔 UnionId string `json:"unionid,omitempty"` // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制) }
WebToken 网页授权access_token
func GetWebToken ¶
GetWebToken 获取网页授权 access_token
func RefreshWebToken ¶
RefreshWebToken 刷新网页授权 access_token
type WebUserInfo ¶
type WebUserInfo struct { WeixinError OpenId string `json:"openid"` // 用户的唯一标识 NickName string `json:"nickname"` // 用户昵称 Sex int `json:"sex"` // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 Province string `json:"province"` // 用户个人资料填写的省份 City string `json:"city"` // 普通用户个人资料填写的城市 Country string `json:"country"` // 国家,如中国为CN // 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选, // 0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 HeadImgURL string `json:"headimgurl"` Privilege []string `json:"privilege"` // 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制) UnionId string `json:"unionid"` }
WebUserInfo 网页授权获取用户基本信息
func GetWebUserInfo ¶
func GetWebUserInfo(webToken, openId string, lang ...Lang) (info *WebUserInfo, err error)
GetWebUserInfo 刷新网页授权 access_token
type WeixinError ¶
WeixinError 微信错误
func (*WeixinError) Error ¶
func (e *WeixinError) Error() string
func (*WeixinError) GetWeixinError ¶
func (e *WeixinError) GetWeixinError() *WeixinError
GetWeixinError 返回微信错误消息
type WeixinErrorer ¶
type WeixinErrorer interface { // GetErrCode() int // GetErrMsg() string GetWeixinError() *WeixinError }
WeixinErrorer 微信错误消息接口
Source Files ¶
- access.go
- accesstoken.go
- aescbc.go
- custom.go
- encrypt.go
- errors.go
- event.go
- eventother.go
- eventverify.go
- eventview.go
- handler.go
- httpclient.go
- initializer.go
- material.go
- menu.go
- menuconditional.go
- message.go
- qrcode.go
- recvmsg.go
- replymsg.go
- shorturl.go
- signature.go
- template.go
- usergroup.go
- userinfo.go
- userweb.go