callback

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2021 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ValidateSignatureError int = -40001
	ParseXmlError          int = -40002
	ComputeSignatureError  int = -40003
	IllegalAesKey          int = -40004
	ValidateCorpidError    int = -40005
	EncryptAESError        int = -40006
	DecryptAESError        int = -40007
	IllegalBuffer          int = -40008
	EncodeBase64Error      int = -40009
	DecodeBase64Error      int = -40010
	GenXmlError            int = -40010
	ParseJsonError         int = -40012
	GenJsonError           int = -40013
	IllegalProtocolType    int = -40014
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CDATA

type CDATA struct {
	Value string `xml:",cdata"`
}

type CallbackManager

type CallbackManager struct {
	// contains filtered or unexported fields
}

CallbackManager 回调管理

func NewCallbackManager

func NewCallbackManager(receiver_id string, token string, encodingAESKey string) *CallbackManager

NewCallbackManager 返回一个企业微信加解密实例

func (*CallbackManager) CallbackVerifyURL

func (wxcpt *CallbackManager) CallbackVerifyURL(req CallbackVerifyURLReq) (string, error)
	------------使用示例一:验证回调URL---------------
	*企业开启回调模式时,企业微信会向验证url发送一个get请求
	假设点击验证时,企业收到类似请求:
	* GET /cgi-bin/wxpush?msg_signature=5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3&timestamp=1409659589&nonce=263014780&echostr=P9nAzCzyDtyTWESHep1vC5X9xho%2FqYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp%2B4RPcs8TgAE7OaBO%2BFZXvnaqQ%3D%3D
	* HTTP/1.1 Host: qy.weixin.qq.com

	接收到该请求时,企业应
     1.解析出Get请求的参数,包括消息体签名(msg_signature),时间戳(timestamp),随机数字串(nonce)以及企业微信推送过来的随机加密字符串(echostr),
     这一步注意作URL解码。
     2.验证消息体签名的正确性
     3. 解密出echostr原文,将原文当作Get请求的response,返回给企业微信
     第2,3步可以用企业微信提供的库函数VerifyURL来实现。

CallbackVerifyURL 企业微信验证回调URL 参考 https://work.weixin.qq.com/api/doc/90000/90135/90930

func (*CallbackManager) DecryptEnterAgentEvent

func (wxcpt *CallbackManager) DecryptEnterAgentEvent(req DecryptUserMsgReq) (*EventEnterAgent, error)

DecryptEnterAgentEvent 对进入应用事件解密

func (*CallbackManager) DecryptImageMsg

func (wxcpt *CallbackManager) DecryptImageMsg(req DecryptUserMsgReq) (*MsgImage, error)

DecryptImageMsg 对用户回复的图片消息解密

func (*CallbackManager) DecryptLinkMsg

func (wxcpt *CallbackManager) DecryptLinkMsg(req DecryptUserMsgReq) (*MsgLink, error)

DecryptLinkMsg 对用户回复的链接消息解密

func (*CallbackManager) DecryptLocationMsg

func (wxcpt *CallbackManager) DecryptLocationMsg(req DecryptUserMsgReq) (*MsgLocation, error)

DecryptLocationMsg 对用户回复的位置消息解密

func (*CallbackManager) DecryptReportLocationEvent

func (wxcpt *CallbackManager) DecryptReportLocationEvent(req DecryptUserMsgReq) (*EventReportLocation, error)

DecryptReportLocationEvent 对上报位置事件解密

func (*CallbackManager) DecryptSubEvent

func (wxcpt *CallbackManager) DecryptSubEvent(req DecryptUserMsgReq) (*EventSub, error)

DecryptSubEvent 对订阅事件解密

func (*CallbackManager) DecryptUserMsg

func (wxcpt *CallbackManager) DecryptUserMsg(req DecryptUserMsgReq) (*MsgContent, error)

DecryptUserMsg 对用户回复的文本消息解密

func (*CallbackManager) DecryptVideoMsg

func (wxcpt *CallbackManager) DecryptVideoMsg(req DecryptUserMsgReq) (*MsgVideo, error)

DecryptVideoMsg 对用户回复的视频消息解密

func (*CallbackManager) DecryptVoiceMsg

func (wxcpt *CallbackManager) DecryptVoiceMsg(req DecryptUserMsgReq) (*MsgVoice, error)

DecryptVoiceMsg 对用户回复的语音消息解密

func (*CallbackManager) EncryptUserMsg

func (wxcpt *CallbackManager) EncryptUserMsg(req EncryptUserMsgReq) (string, error)

EncryptUserMsg 企业回复的消息加密

func (*CallbackManager) GetUserEventType

func (wxcpt *CallbackManager) GetUserEventType(req DecryptUserMsgReq) (string, error)

GetUserEventType 获取用户事件的事件类型,必须先判断消息类型为event,才能调用该函数

func (*CallbackManager) GetUserMsgType

func (wxcpt *CallbackManager) GetUserMsgType(req DecryptUserMsgReq) (string, error)

GetUserMsgType 获取用户发送消息的消息类型

func (*CallbackManager) ReplyUserMsgContent

func (wxcpt *CallbackManager) ReplyUserMsgContent(req MsgContentReply) (string, error)

EncryptUserMsg 回复文本消息

func (*CallbackManager) ReplyUserMsgImage

func (wxcpt *CallbackManager) ReplyUserMsgImage(req MsgImageReply) (string, error)

ReplyUserMsgImage 回复图片消息

func (*CallbackManager) ReplyUserMsgNews

func (wxcpt *CallbackManager) ReplyUserMsgNews(req MsgNewsReply) (string, error)

ReplyUserMsgNews 回复图文消息

func (*CallbackManager) ReplyUserMsgTaskCard

func (wxcpt *CallbackManager) ReplyUserMsgTaskCard(req MsgTaskCardReply) (string, error)

ReplyUserMsgTaskCard 回复任务卡片

func (*CallbackManager) ReplyUserMsgVideo

func (wxcpt *CallbackManager) ReplyUserMsgVideo(req MsgVideoReply) (string, error)

ReplyUserMsgVideo 回复视频消息

func (*CallbackManager) ReplyUserMsgVoice

func (wxcpt *CallbackManager) ReplyUserMsgVoice(req MsgVoiceReply) (string, error)

ReplyUserMsgVoice 回复语音消息

type CallbackVerifyURLReq

type CallbackVerifyURLReq struct {
	MsgSignature string
	Timestamp    string
	Nonce        string
	EchoStr      string
}

CallbackVerifyURLReq 回调验证URL请求

type CryptError

type CryptError struct {
	ErrCode int
	ErrMsg  string
}

func NewCryptError

func NewCryptError(err_code int, err_msg string) *CryptError

type DecryptUserMsgReq

type DecryptUserMsgReq struct {
	MsgSignature string // 签名
	Timestamp    string
	Nonce        string
	Data         []byte // post请求发送的xml密文数据
}

DecryptUserMsgReq 用户消息解密请求

type EncryptUserMsgReq

type EncryptUserMsgReq struct {
	Timestamp string
	Nonce     string
	Data      string // 企业待发送的xml明文数据
}

EncryptUserMsgReq 企业回复消息加密请求

type EventEnterAgent

type EventEnterAgent struct {
	ToUsername   string `xml:"ToUserName"`   //企业微信CorpID
	FromUsername string `xml:"FromUserName"` //成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   //消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      //消息类型,此时固定为:event
	Event        string `xml:"Event"`        //事件类型:enter_agent
	EventKey     string `xml:"EventKey"`     //事件KEY值,此事件该值为空
	Agentid      uint32 `xml:"AgentId"`      //企业应用的id,整型。可在应用的设置页面查看
}

EventEnterAgent 用户进入应用事件

type EventReportLocation

type EventReportLocation struct {
	ToUsername   string `xml:"ToUserName"`   //企业微信CorpID
	FromUsername string `xml:"FromUserName"` //成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   //消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      //消息类型,此时固定为:event
	Event        string `xml:"Event"`        //事件类型:LOCATION
	Latitude     string `xml:"Latitude"`     // 地理位置纬度
	Longitude    string `xml:"Longitude"`    // 地理位置经度
	Precision    string `xml:"Precision"`    //地理位置精度
	EventKey     string `xml:"EventKey"`     //事件KEY值,此事件该值为空
	Agentid      uint32 `xml:"AgentId"`      //企业应用的id,整型。可在应用的设置页面查看
	AppType      string `xml:"AppType"`      //app类型,在企业微信固定返回wxwork,在微信不返回该字段
}

EventReportLocation 上报地理位置事件

type EventSub

type EventSub struct {
	ToUsername   string `xml:"ToUserName"`   //企业微信CorpID
	FromUsername string `xml:"FromUserName"` //成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   //消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      //消息类型,此时固定为:event
	Event        string `xml:"Event"`        //事件类型,subscribe(关注)、unsubscribe(取消关注)
	EventKey     string `xml:"EventKey"`     //事件KEY值,此事件该值为空
	Agentid      uint32 `xml:"AgentId"`      //企业应用的id,整型。可在应用的设置页面查看
}

EventSub 用户订阅事件

type EventType

type EventType string
const (
	EventTypeSubcrible      EventType = "subscribe"
	EventTypeUnSubcrible    EventType = "unsubscribe"
	EventTypeEnterAgent     EventType = "enter_agent"
	EventTypeReportLocation EventType = "location"
)

事件类型

type EventTypeResp

type EventTypeResp struct {
	Event string `xml:"Event"` // 事件类型
}

EventTypeResp 获取用户事件类型响应,在MsgType为event时查询

type ImageResource

type ImageResource struct {
	MediaId string `xml:"MediaId"` // 图片媒体文件id,可以调用获取媒体文件接口拉取
}

ImageResource 图片资源

type MsgContent

type MsgContent struct {
	ToUsername   string `xml:"ToUserName"`
	FromUsername string `xml:"FromUserName"`
	CreateTime   uint32 `xml:"CreateTime"`
	MsgType      string `xml:"MsgType"`
	Content      string `xml:"Content"`
	Msgid        string `xml:"MsgId"`
	Agentid      uint32 `xml:"AgentId"`
}

MsgContent 用户文本消息内容

type MsgContentReply

type MsgContentReply struct {
	ToUsername   string `xml:"ToUserName"`
	FromUsername string `xml:"FromUserName"`
	CreateTime   uint32 `xml:"CreateTime"`
	MsgType      string `xml:"MsgType"`
	Content      string `xml:"Content"`
}

MsgContentReply 回复用户文本消息内容

type MsgImage

type MsgImage struct {
	ToUsername   string `xml:"ToUserName"`   // 企业微信CorpID
	FromUsername string `xml:"FromUserName"` // 成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   // 消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      // 消息类型,此时固定为:image
	PicUrl       string `xml:"PicUrl"`       // 图片链接
	MediaId      string `xml:"MediaId"`      // 图片媒体文件id,可以调用获取媒体文件接口拉取,仅三天内有效
	Msgid        string `xml:"MsgId"`        // 消息id,64位整型
	Agentid      uint32 `xml:"AgentId"`      // 企业应用的id,整型。可在应用的设置页面查看
}

MsgImage 用户图片消息内容

type MsgImageReply

type MsgImageReply struct {
	ToUsername    string          `xml:"ToUserName"`
	FromUsername  string          `xml:"FromUserName"`
	CreateTime    uint32          `xml:"CreateTime"`
	MsgType       string          `xml:"MsgType"` // 消息类型,此时固定为:image
	ImageResource []ImageResource `xml:"Image"`
}

MsgImageReply 回复用户图片消息内容

type MsgLink struct {
	ToUsername   string `xml:"ToUserName"`   // 企业微信CorpID
	FromUsername string `xml:"FromUserName"` // 成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   // 消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      // 消息类型,此时固定为:link
	Title        string `xml:"Title"`        // 标题
	Description  string `xml:"Description"`  // 描述
	Url          string `xml:"Url"`          // 链接跳转的url
	PicUrl       string `xml:"PicUrl"`       // 封面缩略图的url
	Msgid        string `xml:"MsgId"`        // 消息id,64位整型
	Agentid      uint32 `xml:"AgentId"`      // 企业应用的id,整型。可在应用的设置页面查看
}

MsgLink 用户链接消息内容

type MsgLocation

type MsgLocation struct {
	ToUsername   string `xml:"ToUserName"`   // 企业微信CorpID
	FromUsername string `xml:"FromUserName"` // 成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   // 消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      // 消息类型,此时固定为: location
	Location_X   string `xml:"Location_X"`   // 地理位置纬度
	Location_Y   string `xml:"Location_Y"`   // 地理位置经度
	Scale        uint32 `xml:"Scale"`        // 地图缩放大小
	Label        string `xml:"Label"`        //地理位置信息
	Msgid        string `xml:"MsgId"`        // 消息id,64位整型
	Agentid      uint32 `xml:"AgentId"`      // 企业应用的id,整型。可在应用的设置页面查看
}

MsgLocation 用户位置消息内容

type MsgNewsReply

type MsgNewsReply struct {
	ToUsername   string         `xml:"ToUserName"`
	FromUsername string         `xml:"FromUserName"`
	CreateTime   uint32         `xml:"CreateTime"`
	MsgType      string         `xml:"MsgType"`      // 消息类型,此时固定为:news
	ArticleCount uint32         `xml:"ArticleCount"` // 图文消息的数量
	NewsResource []NewsResource `xml:"Articles"`     // 图文资源
}

MsgNewsReply 回复用户图文消息内容

type MsgTaskCardReply

type MsgTaskCardReply struct {
	ToUsername       string             `xml:"ToUserName"`
	FromUsername     string             `xml:"FromUserName"`
	CreateTime       uint32             `xml:"CreateTime"`
	MsgType          string             `xml:"MsgType"` // 消息类型,此时固定为:update_taskcard
	TaskCardResource []TaskCardResource `xml:"TaskCard"`
}

MsgTaskCardReply 回复用户任务卡片

type MsgType

type MsgType string

参考 https://work.weixin.qq.com/api/doc/90000/90135/90239

const (
	MsgTypeText     MsgType = "text"
	MsgTypeImage    MsgType = "image"
	MsgTypeVoice    MsgType = "voice"
	MsgTypeVideo    MsgType = "video"
	MsgTypeLocation MsgType = "location"
	MsgTypeLink     MsgType = "link"
	MsgTypeEvent    MsgType = "event"
)

消息类型

type MsgTypeResp

type MsgTypeResp struct {
	MsgType string `xml:"MsgType"` // 消息类型
}

MsgTypeResp 获取用户消息类型响应

type MsgVideo

type MsgVideo struct {
	ToUsername   string `xml:"ToUserName"`   // 企业微信CorpID
	FromUsername string `xml:"FromUserName"` // 成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   // 消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      // 消息类型,此时固定为:video
	ThumbMediaId string `xml:"ThumbMediaId"` // 视频消息缩略图的媒体id,可以调用获取媒体文件接口拉取数据,仅三天内有效
	MediaId      string `xml:"MediaId"`      // 视频媒体文件id,可以调用获取媒体文件接口拉取数据,仅三天内有效
	Msgid        string `xml:"MsgId"`        // 消息id,64位整型
	Agentid      uint32 `xml:"AgentId"`      // 企业应用的id,整型。可在应用的设置页面查看
}

MsgVideo 用户视频消息内容

type MsgVideoReply

type MsgVideoReply struct {
	ToUsername    string          `xml:"ToUserName"`
	FromUsername  string          `xml:"FromUserName"`
	CreateTime    uint32          `xml:"CreateTime"`
	MsgType       string          `xml:"MsgType"` // 消息类型,此时固定为:video
	VideoResource []VideoResource `xml:"Video"`
}

MsgVideoReply 回复用户视频消息内容

type MsgVoice

type MsgVoice struct {
	ToUsername   string `xml:"ToUserName"`   // 企业微信CorpID
	FromUsername string `xml:"FromUserName"` // 成员UserID
	CreateTime   uint32 `xml:"CreateTime"`   // 消息创建时间(整型)
	MsgType      string `xml:"MsgType"`      // 消息类型,此时固定为:voice
	Format       string `xml:"Format"`       // 语音格式,如amr,speex等
	MediaId      string `xml:"MediaId"`      // 语音媒体文件id,可以调用获取媒体文件接口拉取数据,仅三天内有效
	Msgid        string `xml:"MsgId"`        // 消息id,64位整型
	Agentid      uint32 `xml:"AgentId"`      // 企业应用的id,整型。可在应用的设置页面查看
}

MsgVoice 用户语音消息内容

type MsgVoiceReply

type MsgVoiceReply struct {
	ToUsername    string          `xml:"ToUserName"`
	FromUsername  string          `xml:"FromUserName"`
	CreateTime    uint32          `xml:"CreateTime"`
	MsgType       string          `xml:"MsgType"` // 消息类型,此时固定为:voice
	VoiceResource []VoiceResource `xml:"Voice"`
}

MsgVoiceReply 回复用户语音消息内容

type News

type News struct {
	Title       string `xml:"Title"`       // 视频消息的标题,不超过128个字节,超过会自动截断
	Description string `xml:"Description"` // 视频消息的描述,不超过512个字节,超过会自动截断
	Url         string `xml:"Url"`         // 点击后跳转的链接。
	PicUrl      string `xml:"PicUrl"`      // 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640320,小图8080。
}

News 图文信息

type NewsResource

type NewsResource struct {
	Items []News `xml:"item"` // 图文列表项
}

NewsResource 图文资源

type ProtocolProcessor

type ProtocolProcessor interface {
	// contains filtered or unexported methods
}

type ProtocolType

type ProtocolType int
const (
	XmlType ProtocolType = 1
)

type TaskCardResource

type TaskCardResource struct {
	ReplaceName string `xml:"ReplaceName"` // 点击任务卡片按钮后显示的按钮名称
}

TaskCardResource 任务卡片资源

type VideoResource

type VideoResource struct {
	MediaId     string `xml:"MediaId"`     // 视频文件id,可以调用获取媒体文件接口拉取
	Title       string `xml:"Title"`       // 视频消息的标题,不超过128个字节,超过会自动截断
	Description string `xml:"Description"` // 视频消息的描述,不超过512个字节,超过会自动截断
}

VideoResource 视频资源

type VoiceResource

type VoiceResource struct {
	MediaId string `xml:"MediaId"` // 语音文件id,可以调用获取媒体文件接口拉取
}

VoiceResource 语音资源

type WXBizMsg4Recv

type WXBizMsg4Recv struct {
	Tousername string `xml:"ToUserName"`
	Encrypt    string `xml:"Encrypt"`
	Agentid    string `xml:"AgentID"`
}

type WXBizMsg4Send

type WXBizMsg4Send struct {
	XMLName   xml.Name `xml:"xml"`
	Encrypt   CDATA    `xml:"Encrypt"`
	Signature CDATA    `xml:"MsgSignature"`
	Timestamp string   `xml:"TimeStamp"`
	Nonce     CDATA    `xml:"Nonce"`
}

func NewWXBizMsg4Send

func NewWXBizMsg4Send(encrypt, signature, timestamp, nonce string) *WXBizMsg4Send

type WXBizMsgCrypt

type WXBizMsgCrypt struct {
	// contains filtered or unexported fields
}

func NewWXBizMsgCrypt

func NewWXBizMsgCrypt(token, encoding_aeskey, receiver_id string, protocol_type ProtocolType) *WXBizMsgCrypt

type XmlProcessor

type XmlProcessor struct {
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL