├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── api_generate ├── api.tmpl └── main.go ├── apis ├── OA审批-修改成员假期余额.go ├── OA审批-复制更新模板到企业.go ├── OA审批-批量获取审批单号.go ├── OA审批-提交审批申请.go ├── OA审批-查询第三方应用审批申请当前状态.go ├── OA审批-获取企业假期管理配置.go ├── OA审批-获取审批模板详情.go ├── OA审批-获取审批申请详情.go ├── OA审批-获取成员假期余额.go ├── api_auth.go ├── api_client.go ├── api_client_option.go ├── api_error.go ├── api_media.go ├── api_resp.go ├── api_token.go ├── api_tool.go ├── api_traits.go ├── 上下游-批量导入上下游联系人.go ├── 上下游-移除企业.go ├── 上下游-获取应用共享信息.go ├── 企业微信帐号ID安全性全面升级.go ├── 企业支付-获取对外收款记录.go ├── 企业支付-获取收款项目的商户单号.go ├── 发送应用消息-小程序通知消息.go ├── 发送应用消息-撤回应用消息.go ├── 发送应用消息-更新模版卡片消息.go ├── 发送应用消息-模板卡片消息.go ├── 发送应用消息-模板消息.go ├── 发送应用消息.go ├── 在职继承-分配在职成员的客户.go ├── 在职继承-分配在职成员的客户群.go ├── 在职继承-查询客户接替状态.go ├── 客户朋友圈-企业发表内容到客户的朋友圈.go ├── 客户朋友圈-停止发表企业朋友圈.go ├── 客户朋友圈-客户朋友圈规则组管理.go ├── 客户朋友圈-获取客户朋友圈全部的发表记录.go ├── 客户标签管理-管理企业标签.go ├── 客户标签管理-编辑客户企业标签.go ├── 客户管理-修改客户备注信息.go ├── 客户管理-批量获取客户详情.go ├── 客户管理-获取客户列表.go ├── 客户管理-获取客户详情.go ├── 客户群管理-客户群opengid转换.go ├── 客户群管理-获取客户群列表.go ├── 客户群管理-获取客户群详情.go ├── 客户联系-联系我管理.go ├── 应用授权-获取企业凭证.go ├── 应用授权-获取企业授权信息.go ├── 应用授权-获取企业永久授权码.go ├── 应用授权-获取应用二维码.go ├── 应用授权-获取应用权限详情.go ├── 应用授权-获取应用的管理员列表.go ├── 应用授权-获取第三方应用凭证.go ├── 应用授权-获取预授权码.go ├── 应用授权-设置授权配置.go ├── 应用管理-获取应用.go ├── 成员管理-userid与openid互换.go ├── 成员管理-二次验证.go ├── 成员管理-创建成员.go ├── 成员管理-删除成员.go ├── 成员管理-手机号获取userid.go ├── 成员管理-更新成员.go ├── 成员管理-查询成员用户是否已授权.go ├── 成员管理-获取成员ID列表.go ├── 成员管理-获取成员授权列表.go ├── 成员管理-获取选人ticket对应的用户.go ├── 成员管理-获取部门成员.go ├── 成员管理-获取部门成员详情.go ├── 成员管理-读取成员.go ├── 成员管理-邀请成员.go ├── 成员管理-邮箱获取userid.go ├── 打卡-为打卡人员排班.go ├── 打卡-获取员工打卡规则.go ├── 打卡-获取打卡人员排班信息.go ├── 打卡-获取打卡日报数据.go ├── 打卡-获取打卡月报数据.go ├── 打卡-获取打卡记录数据.go ├── 打卡-获取设备打卡数据.go ├── 接口调用许可-下单续期帐号.go ├── 接口调用许可-下单购买多企业账号.go ├── 接口调用许可-下单购买帐号.go ├── 接口调用许可-分配激活码给下游企业.go ├── 接口调用许可-取消订单.go ├── 接口调用许可-帐号继承.go ├── 接口调用许可-查询企业的许可自动激活状态.go ├── 接口调用许可-激活帐号.go ├── 接口调用许可-获取企业的帐号列表.go ├── 接口调用许可-获取多企业订单详情.go ├── 接口调用许可-获取应用的接口许可状态.go ├── 接口调用许可-获取成员的激活详情.go ├── 接口调用许可-获取激活码详情.go ├── 接口调用许可-获取订单中的帐号列表.go ├── 接口调用许可-获取订单列表.go ├── 接口调用许可-获取订单详情.go ├── 接口调用许可-设置企业的许可自动激活状态.go ├── 推广二维码-获取应用安装链接.go ├── 推广二维码-获取注册码.go ├── 收银台-创建收款订单.go ├── 收银台-取消收款订单.go ├── 收银台-延长试用期.go ├── 收银台-获取收款订单列表.go ├── 收银台-获取收款订单详情.go ├── 收银台-获取订单列表.go ├── 收银台-获取订单详情.go ├── 标签管理-创建标签.go ├── 标签管理-删除标签.go ├── 标签管理-删除标签成员.go ├── 标签管理-增加标签成员.go ├── 标签管理-更新标签名字.go ├── 标签管理-获取标签列表.go ├── 标签管理-获取标签成员.go ├── 消息推送-停止企业群发.go ├── 消息推送-入群欢迎语素材管理.go ├── 消息推送-创建企业群发.go ├── 消息推送-发送新客户欢迎语.go ├── 消息推送-提醒成员群发.go ├── 消息推送-获取企业的全部群发记录.go ├── 离职继承-分配离职成员的客户.go ├── 离职继承-分配离职成员的客户群.go ├── 离职继承-查询客户接替状态.go ├── 离职继承-获取待分配的离职成员列表.go ├── 素材管理-上传临时素材.go ├── 素材管理-异步上传临时素材.go ├── 统计管理-获取群聊数据统计.go ├── 统计管理-获取联系客户统计.go ├── 获取access_token.go ├── 获取企业的jsapi_ticket.go ├── 获取应用的jsapi_ticket.go ├── 获取服务商凭证.go ├── 获取视频号绑定状态.go ├── 获客助手-查询剩余使用量.go ├── 获客助手-获取由获客链接添加的客户信息.go ├── 获客助手-获客链接管理.go ├── 身份验证-获取登录用户信息.go ├── 身份验证-获取访问用户敏感信息.go ├── 身份验证-获取访问用户身份.go ├── 通讯录-通讯录userid排序.go ├── 通讯录-通讯录搜索.go ├── 部门管理-获取单个部门详情.go ├── 部门管理-获取子部门ID列表.go └── 部门管理-获取部门列表.go ├── callback_generate ├── callback.tmpl └── main.go ├── callbacks ├── callback.go ├── callback_constant.go ├── callback_interface.go ├── callback_message.go ├── event上下游共享应用事件回调.go ├── event上报地理位置.go ├── event任务卡片事件推送.go ├── event企业互联共享应用事件回调.go ├── event企业客户标签创建事件.go ├── event企业客户标签删除事件.go ├── event企业客户标签变更事件.go ├── event企业客户标签重排事件.go ├── event会话存档-产生会话回调事件.go ├── event会话存档-客户同意进行聊天内容存档事件回调.go ├── event使用量已经耗尽事件.go ├── event修改设置工作台自定义开关事件推送.go ├── event删除企业客户事件.go ├── event删除成员事件.go ├── event删除获客链接事件.go ├── event删除跟进成员事件.go ├── event删除部门事件.go ├── event回调事件.go ├── event回调异步任务结果.go ├── event外部联系人免验证添加成员事件.go ├── event审批状态通知事件.go ├── event审批申请状态变化回调通知.go ├── event客户接替失败事件.go ├── event客户群创建事件.go ├── event客户群变更事件.go ├── event客户群解散事件.go ├── event客服账号授权变更事件.go ├── event应用管理员变更通知.go ├── event应用邮箱接收邮件事件.go ├── event异步任务完成事件推送.go ├── event弹出地理位置选择器的事件推送.go ├── event弹出微信相册发图器的事件推送.go ├── event弹出拍照或者相册发图的事件推送.go ├── event弹出系统拍照发图的事件推送.go ├── event微信客户发起会话事件.go ├── event微盘容量不足事件.go ├── event成员关注事件.go ├── event成员取消关注事件.go ├── event扫码推事件且弹出消息接收中提示框的事件推送.go ├── event扫码推事件的事件推送.go ├── event接口调用许可-接口许可失效通知.go ├── event新增成员事件.go ├── event新增部门事件.go ├── event日程-修改日历事件.go ├── event日程-修改日程事件.go ├── event日程-删除日历事件.go ├── event日程-删除日程事件.go ├── event日程-添加日程事件.go ├── event更新成员事件.go ├── event更新部门事件.go ├── event标签成员变更事件.go ├── event模板卡片事件推送.go ├── event添加企业客户事件.go ├── event点击菜单拉取消息的事件推送.go ├── event点击菜单跳转链接的事件推送.go ├── event直播回调事件.go ├── event编辑企业客户事件.go ├── event获客链接不可用事件.go ├── event获客额度即将耗尽事件.go ├── event进入应用.go ├── event通用模板卡片右上角菜单事件推送.go ├── event通过获客链接申请好友事件.go ├── event长期未使用应用临时停用事件.go ├── event长期未使用应用重新启用事件.go ├── image图片消息.go ├── link链接消息.go ├── location位置消息.go ├── text文本消息.go ├── third企业客户标签创建事件.go ├── third企业客户标签删除事件.go ├── third企业客户标签变更事件.go ├── third企业客户标签重排事件.go ├── third会话存档-产生会话回调事件.go ├── third会话存档-客户同意进行聊天内容存档事件回调.go ├── third删除企业客户事件.go ├── third删除成员事件.go ├── third删除跟进成员事件.go ├── third删除部门事件.go ├── third取消授权通知.go ├── third变更授权通知.go ├── third同意授权转换external_userid事件.go ├── third外部联系人免验证添加成员事件.go ├── third客户接替失败事件.go ├── third客户群创建事件.go ├── third客户群变更事件.go ├── third客户群解散事件.go ├── third家校沟通-创建部门事件.go ├── third家校沟通-删除学生事件.go ├── third家校沟通-删除家长事件.go ├── third家校沟通-删除部门事件.go ├── third家校沟通-家长关注事件.go ├── third家校沟通-家长取消关注事件.go ├── third家校沟通-新增学生事件.go ├── third家校沟通-新增家长事件.go ├── third家校沟通-更新部门事件.go ├── third家校沟通-编辑学生事件.go ├── third家校沟通-编辑家长事件.go ├── third扫描推广二维码事件.go ├── third授权成功通知.go ├── third授权组织架构权限通知.go ├── third接口调用许可-支付成功通知.go ├── third接口调用许可-自动激活回调通知.go ├── third接口调用许可-退款结果通知.go ├── third推送suite_ticket.go ├── third收银台-下单成功通知.go ├── third收银台-应用版本变更通知.go ├── third收银台-支付成功通知.go ├── third收银台-改单通知.go ├── third收银台-退款通知.go ├── third新增成员事件.go ├── third新增部门事件.go ├── third更新成员事件.go ├── third更新部门事件.go ├── third标签成员变更事件.go ├── third注册完成回调事件.go ├── third添加企业客户事件.go ├── third编辑企业客户事件.go ├── third获客助手权限取消事件.go ├── third获客助手权限确认事件.go ├── third设备数据授权变更回调.go ├── third重置永久授权码通知.go ├── video视频消息.go └── voice语音消息.go ├── demo ├── README.md ├── api.go ├── api_test.go ├── callback.go ├── callback_test.go ├── config.go └── workwx.go ├── docs ├── 代开发应用服务商操作流程.docx ├── 企业微信使用教程_1634259824876.pdf ├── 企业微信员工使用手册_1634259832138.pdf ├── 企业微信基础玩法_1635478371902.pptx ├── 企业微信封号问题汇总.docx ├── 企微接口调用许可.md ├── 常见问题汇总.docx ├── 管理端操作手册_1634259834379.pdf └── 通过企业微信经营私域流量.docx ├── go.mod ├── go.sum ├── internal ├── README.md ├── encryptor │ ├── mod.go │ └── pkcs7 │ │ └── mod.go ├── envelope │ ├── ctor_options.go │ ├── mod.go │ ├── models.go │ └── time_source.go └── signature │ └── mod.go └── main.go /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | 3 | vendor -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 生成企微api代码 2 | api: 3 | go run api_generate/main.go -doc=$(doc) -prefix=$(prefix) 4 | 5 | # 生成企微回调事件代码 6 | callback: 7 | go run callback_generate/main.go -doc=$(doc) -prefix=$(prefix) -------------------------------------------------------------------------------- /api_generate/api.tmpl: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | {{if (index . 0).IsGet }}"net/url"{{end}} 6 | ) 7 | 8 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 9 | // 可自行修改生成的文件,以满足开发需求 10 | 11 | {{ range .}} 12 | // Req{{ .StructName }} {{ .Name }}请求 13 | // 文档:{{ .DocURL }}#{{ .Name }} 14 | {{ .ReqCode }} 15 | {{if .IsGet }} 16 | var _ urlValuer = Req{{ .StructName }}{} 17 | 18 | func (x Req{{ .StructName }}) intoURLValues() url.Values { 19 | var vals map[string]interface{} 20 | jsonBytes, _ := json.Marshal(x) 21 | _ = json.Unmarshal(jsonBytes, &vals) 22 | 23 | var ret url.Values = make(map[string][]string) 24 | for k, v := range vals { 25 | ret.Add(k, StrVal(v)) 26 | } 27 | return ret 28 | } 29 | {{else}} 30 | var _ bodyer = Req{{ .StructName }}{} 31 | 32 | func (x Req{{ .StructName }}) intoBody() ([]byte, error) { 33 | result, err := json.Marshal(x) 34 | if err != nil { 35 | return nil, err 36 | } 37 | return result, nil 38 | } 39 | {{end}} 40 | 41 | // Resp{{ .StructName }} {{ .Name }}响应 42 | // 文档:{{ .DocURL }}#{{ .Name }} 43 | {{ .RespCode }} 44 | var _ bodyer = Resp{{ .StructName }}{} 45 | 46 | func (x Resp{{ .StructName }}) intoBody() ([]byte, error) { 47 | result, err := json.Marshal(x) 48 | if err != nil { 49 | return nil, err 50 | } 51 | return result, nil 52 | } 53 | 54 | // Exec{{ .StructName }} {{ .Name }} 55 | // 文档:{{ .DocURL }}#{{ .Name }} 56 | func (c *ApiClient) Exec{{ .StructName }}(req Req{{ .StructName }}) (Resp{{ .StructName }}, error) { 57 | var resp Resp{{ .StructName }} 58 | err := c.executeWXApi{{ .MethodCaml }}("{{ .URL }}", req, &resp, true) 59 | if err != nil { 60 | return Resp{{ .StructName }}{}, err 61 | } 62 | if bizErr := resp.TryIntoErr(); bizErr != nil { 63 | return Resp{{ .StructName }}{}, bizErr 64 | } 65 | return resp, nil 66 | } 67 | {{end}} -------------------------------------------------------------------------------- /apis/OA审批-修改成员假期余额.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqSetoneuserquotaVacation 修改成员假期余额请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/94213#修改成员假期余额 12 | type ReqSetoneuserquotaVacation struct { 13 | Userid string `json:"userid"` 14 | VacationID int `json:"vacation_id"` 15 | Leftduration int `json:"leftduration"` 16 | TimeAttr int `json:"time_attr"` 17 | Remarks string `json:"remarks"` 18 | } 19 | 20 | var _ bodyer = ReqSetoneuserquotaVacation{} 21 | 22 | func (x ReqSetoneuserquotaVacation) intoBody() ([]byte, error) { 23 | result, err := json.Marshal(x) 24 | if err != nil { 25 | return nil, err 26 | } 27 | return result, nil 28 | } 29 | 30 | // RespSetoneuserquotaVacation 修改成员假期余额响应 31 | // 文档:https://developer.work.weixin.qq.com/document/path/94213#修改成员假期余额 32 | type RespSetoneuserquotaVacation struct { 33 | CommonResp 34 | } 35 | 36 | var _ bodyer = RespSetoneuserquotaVacation{} 37 | 38 | func (x RespSetoneuserquotaVacation) intoBody() ([]byte, error) { 39 | result, err := json.Marshal(x) 40 | if err != nil { 41 | return nil, err 42 | } 43 | return result, nil 44 | } 45 | 46 | // ExecSetoneuserquotaVacation 修改成员假期余额 47 | // 文档:https://developer.work.weixin.qq.com/document/path/94213#修改成员假期余额 48 | func (c *ApiClient) ExecSetoneuserquotaVacation(req ReqSetoneuserquotaVacation) (RespSetoneuserquotaVacation, error) { 49 | var resp RespSetoneuserquotaVacation 50 | err := c.executeWXApiPost("/cgi-bin/oa/vacation/setoneuserquota", req, &resp, true) 51 | if err != nil { 52 | return RespSetoneuserquotaVacation{}, err 53 | } 54 | if bizErr := resp.TryIntoErr(); bizErr != nil { 55 | return RespSetoneuserquotaVacation{}, bizErr 56 | } 57 | return resp, nil 58 | } 59 | -------------------------------------------------------------------------------- /apis/OA审批-复制更新模板到企业.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqCopyTemplateApproval 复制/更新模板到企业请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/92630#复制/更新模板到企业 12 | type ReqCopyTemplateApproval struct { 13 | // 服务商审批模板的唯一标识id。可在“获取审批单据详情”、“审批状态变化回调通知”中获得,也可在服务商后台-应用管理-审批模板的模板编辑页面中获得。 14 | OpenTemplateId string `json:"open_template_id"` 15 | } 16 | 17 | var _ bodyer = ReqCopyTemplateApproval{} 18 | 19 | func (x ReqCopyTemplateApproval) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespCopyTemplateApproval 复制/更新模板到企业响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/92630#复制/更新模板到企业 29 | type RespCopyTemplateApproval struct { 30 | CommonResp 31 | // 服务商审批模板的唯一标识id。可在“获取审批单据详情”、“审批状态变化回调通知”中获得,也可在服务商后台-应用管理-审批模板的模板编辑页面中获得。 32 | TemplateId string `json:"template_id"` 33 | } 34 | 35 | var _ bodyer = RespCopyTemplateApproval{} 36 | 37 | func (x RespCopyTemplateApproval) intoBody() ([]byte, error) { 38 | result, err := json.Marshal(x) 39 | if err != nil { 40 | return nil, err 41 | } 42 | return result, nil 43 | } 44 | 45 | // ExecCopyTemplateApproval 复制/更新模板到企业 46 | // 文档:https://developer.work.weixin.qq.com/document/path/92630#复制/更新模板到企业 47 | func (c *ApiClient) ExecCopyTemplateApproval(req ReqCopyTemplateApproval) (RespCopyTemplateApproval, error) { 48 | var resp RespCopyTemplateApproval 49 | err := c.executeWXApiPost("/cgi-bin/oa/approval/copytemplate", req, &resp, true) 50 | if err != nil { 51 | return RespCopyTemplateApproval{}, err 52 | } 53 | if bizErr := resp.TryIntoErr(); bizErr != nil { 54 | return RespCopyTemplateApproval{}, bizErr 55 | } 56 | return resp, nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/OA审批-批量获取审批单号.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | type ( 8 | ReqGetApprovalInfoOa struct { 9 | Starttime string `json:"starttime"` 10 | Endtime string `json:"endtime"` 11 | NewCursor string `json:"new_cursor"` 12 | Size int `json:"size"` 13 | Filters []ReqGetApprovalInfoOaFilters `json:"filters"` 14 | } 15 | 16 | ReqGetApprovalInfoOaFilters struct { 17 | Key string `json:"key"` 18 | Value string `json:"value"` 19 | } 20 | ) 21 | 22 | var _ bodyer = ReqGetApprovalInfoOa{} 23 | 24 | func (x ReqGetApprovalInfoOa) intoBody() ([]byte, error) { 25 | result, err := json.Marshal(x) 26 | if err != nil { 27 | return nil, err 28 | } 29 | return result, nil 30 | } 31 | 32 | type RespGetApprovalInfoOa struct { 33 | CommonResp 34 | SpNoList []string `json:"sp_no_list"` 35 | } 36 | 37 | var _ bodyer = RespGetApprovalInfoOa{} 38 | 39 | func (x RespGetApprovalInfoOa) intoBody() ([]byte, error) { 40 | result, err := json.Marshal(x) 41 | if err != nil { 42 | return nil, err 43 | } 44 | return result, nil 45 | } 46 | 47 | func (c *ApiClient) ExecGetApprovalInfoOa(req ReqGetApprovalInfoOa) (RespGetApprovalInfoOa, error) { 48 | var resp RespGetApprovalInfoOa 49 | err := c.executeWXApiPost("/cgi-bin/oa/getapprovalinfo", req, &resp, true) 50 | if err != nil { 51 | return RespGetApprovalInfoOa{}, err 52 | } 53 | if bizErr := resp.TryIntoErr(); bizErr != nil { 54 | return RespGetApprovalInfoOa{}, bizErr 55 | } 56 | return resp, nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/api_resp.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | type CommonResp struct { 4 | ErrCode int64 `json:"errcode"` 5 | ErrMsg string `json:"errmsg"` 6 | } 7 | 8 | // IsOK 响应体是否为一次成功请求的响应 9 | // 10 | // 实现依据: https://developer.work.weixin.qq.com/document/10013 11 | // 12 | // > 企业微信所有接口,返回包里都有errcode、errmsg。(除部分旧接口只有在失败时才会返回errcode,但没什么影响,因为结构体中errcode默认值为0,即默认成功) 13 | // > 开发者需根据errcode是否为0判断是否调用成功(errcode意义请见全局错误码)。 14 | // > 而errmsg仅作参考,后续可能会有变动,因此不可作为是否调用成功的判据。 15 | func (x *CommonResp) IsOK() bool { 16 | return x.ErrCode == 0 17 | } 18 | 19 | func (x *CommonResp) TryIntoErr() error { 20 | if x.IsOK() { 21 | return nil 22 | } 23 | 24 | return &ClientError{ 25 | Code: x.ErrCode, 26 | Msg: x.ErrMsg, 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apis/api_tool.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | "strconv" 6 | ) 7 | 8 | // StrVal 获取变量的字符串值 9 | // 浮点型 3.0将会转换成字符串3, "3",长整数不会变成科学计数法 10 | // 非数值或字符类型的变量将会被转换成JSON格式字符串 11 | func StrVal(value interface{}) string { 12 | // interface 转 string 13 | var key string 14 | if value == nil { 15 | return key 16 | } 17 | 18 | switch value.(type) { 19 | case float64: 20 | ft := value.(float64) 21 | key = strconv.FormatFloat(ft, 'f', -1, 64) 22 | case float32: 23 | ft := value.(float32) 24 | key = strconv.FormatFloat(float64(ft), 'f', -1, 64) 25 | case int: 26 | it := value.(int) 27 | key = strconv.Itoa(it) 28 | case uint: 29 | it := value.(uint) 30 | key = strconv.Itoa(int(it)) 31 | case int8: 32 | it := value.(int8) 33 | key = strconv.Itoa(int(it)) 34 | case uint8: 35 | it := value.(uint8) 36 | key = strconv.Itoa(int(it)) 37 | case int16: 38 | it := value.(int16) 39 | key = strconv.Itoa(int(it)) 40 | case uint16: 41 | it := value.(uint16) 42 | key = strconv.Itoa(int(it)) 43 | case int32: 44 | it := value.(int32) 45 | key = strconv.Itoa(int(it)) 46 | case uint32: 47 | it := value.(uint32) 48 | key = strconv.Itoa(int(it)) 49 | case int64: 50 | it := value.(int64) 51 | key = strconv.FormatInt(it, 10) 52 | case uint64: 53 | it := value.(uint64) 54 | key = strconv.FormatUint(it, 10) 55 | case string: 56 | key = value.(string) 57 | case []byte: 58 | key = string(value.([]byte)) 59 | default: 60 | newValue, _ := json.Marshal(value) 61 | key = string(newValue) 62 | } 63 | 64 | return key 65 | } 66 | -------------------------------------------------------------------------------- /apis/api_traits.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "net/url" 5 | ) 6 | 7 | // urlValuer 可转化为 url.Values 类型的 trait 8 | type urlValuer interface { 9 | intoURLValues() url.Values 10 | } 11 | 12 | // Bodyer 可转化为 API 请求体的 trait 13 | type bodyer interface { 14 | intoBody() ([]byte, error) 15 | } 16 | 17 | // mediaUploader 携带 *Media 对象,可转化为 multipart 文件上传请求体的 trait 18 | type mediaUploader interface { 19 | getMedia() *Media 20 | } 21 | -------------------------------------------------------------------------------- /apis/上下游-移除企业.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqRemoveCorpCorp 移除企业请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/95822#移除企业 12 | type ReqRemoveCorpCorp struct { 13 | // ChainID 上下游id,必填 14 | ChainID string `json:"chain_id"` 15 | // Corpid 需要移除的下游企业corpid 16 | Corpid string `json:"corpid,omitempty"` 17 | // PendingCorpid 需要移除的未加入下游企业corpid,corpid和pending_corpid至少填一个,都填corpid生效 18 | PendingCorpid string `json:"pending_corpid,omitempty"` 19 | } 20 | 21 | var _ bodyer = ReqRemoveCorpCorp{} 22 | 23 | func (x ReqRemoveCorpCorp) intoBody() ([]byte, error) { 24 | result, err := json.Marshal(x) 25 | if err != nil { 26 | return nil, err 27 | } 28 | return result, nil 29 | } 30 | 31 | // RespRemoveCorpCorp 移除企业响应 32 | // 文档:https://developer.work.weixin.qq.com/document/path/95822#移除企业 33 | type RespRemoveCorpCorp struct { 34 | CommonResp 35 | } 36 | 37 | var _ bodyer = RespRemoveCorpCorp{} 38 | 39 | func (x RespRemoveCorpCorp) intoBody() ([]byte, error) { 40 | result, err := json.Marshal(x) 41 | if err != nil { 42 | return nil, err 43 | } 44 | return result, nil 45 | } 46 | 47 | // ExecRemoveCorpCorp 移除企业 48 | // 文档:https://developer.work.weixin.qq.com/document/path/95822#移除企业 49 | func (c *ApiClient) ExecRemoveCorpCorp(req ReqRemoveCorpCorp) (RespRemoveCorpCorp, error) { 50 | var resp RespRemoveCorpCorp 51 | err := c.executeWXApiPost("/cgi-bin/corpgroup/corp/remove_corp", req, &resp, true) 52 | if err != nil { 53 | return RespRemoveCorpCorp{}, err 54 | } 55 | if bizErr := resp.TryIntoErr(); bizErr != nil { 56 | return RespRemoveCorpCorp{}, bizErr 57 | } 58 | return resp, nil 59 | } 60 | -------------------------------------------------------------------------------- /apis/企业支付-获取收款项目的商户单号.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqGetPaymentInfoExternalpay 获取收款项目的商户单号请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/95936#获取收款项目的商户单号 12 | type ReqGetPaymentInfoExternalpay struct { 13 | // PaymentID 收款项目单号。在发起对外收款中返回。,必填 14 | PaymentID string `json:"payment_id"` 15 | } 16 | 17 | var _ bodyer = ReqGetPaymentInfoExternalpay{} 18 | 19 | func (x ReqGetPaymentInfoExternalpay) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespGetPaymentInfoExternalpay 获取收款项目的商户单号响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/95936#获取收款项目的商户单号 29 | type RespGetPaymentInfoExternalpay struct { 30 | BillList []struct { 31 | OutTradeNo string `json:"out_trade_no"` 32 | } `json:"bill_list"` 33 | CommonResp 34 | } 35 | 36 | var _ bodyer = RespGetPaymentInfoExternalpay{} 37 | 38 | func (x RespGetPaymentInfoExternalpay) intoBody() ([]byte, error) { 39 | result, err := json.Marshal(x) 40 | if err != nil { 41 | return nil, err 42 | } 43 | return result, nil 44 | } 45 | 46 | // ExecGetPaymentInfoExternalpay 获取收款项目的商户单号 47 | // 文档:https://developer.work.weixin.qq.com/document/path/95936#获取收款项目的商户单号 48 | func (c *ApiClient) ExecGetPaymentInfoExternalpay(req ReqGetPaymentInfoExternalpay) (RespGetPaymentInfoExternalpay, error) { 49 | var resp RespGetPaymentInfoExternalpay 50 | err := c.executeWXApiPost("/cgi-bin/externalpay/get_payment_info", req, &resp, true) 51 | if err != nil { 52 | return RespGetPaymentInfoExternalpay{}, err 53 | } 54 | if bizErr := resp.TryIntoErr(); bizErr != nil { 55 | return RespGetPaymentInfoExternalpay{}, bizErr 56 | } 57 | return resp, nil 58 | } 59 | -------------------------------------------------------------------------------- /apis/发送应用消息-撤回应用消息.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqRecallMessage 撤回应用消息请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/94947#撤回应用消息 12 | type ReqRecallMessage struct { 13 | // Msgid 消息ID。从应用发送消息接口处获得。,必填 14 | Msgid string `json:"msgid"` 15 | } 16 | 17 | var _ bodyer = ReqRecallMessage{} 18 | 19 | func (x ReqRecallMessage) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespRecallMessage 撤回应用消息响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/94947#撤回应用消息 29 | type RespRecallMessage struct { 30 | CommonResp 31 | } 32 | 33 | var _ bodyer = RespRecallMessage{} 34 | 35 | func (x RespRecallMessage) intoBody() ([]byte, error) { 36 | result, err := json.Marshal(x) 37 | if err != nil { 38 | return nil, err 39 | } 40 | return result, nil 41 | } 42 | 43 | // ExecRecallMessage 撤回应用消息 44 | // 文档:https://developer.work.weixin.qq.com/document/path/94947#撤回应用消息 45 | func (c *ApiClient) ExecRecallMessage(req ReqRecallMessage) (RespRecallMessage, error) { 46 | var resp RespRecallMessage 47 | err := c.executeWXApiPost("/cgi-bin/message/recall", req, &resp, true) 48 | if err != nil { 49 | return RespRecallMessage{}, err 50 | } 51 | if bizErr := resp.TryIntoErr(); bizErr != nil { 52 | return RespRecallMessage{}, bizErr 53 | } 54 | return resp, nil 55 | } 56 | -------------------------------------------------------------------------------- /apis/客户管理-获取客户列表.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "net/url" 7 | ) 8 | 9 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 10 | // 修改生成的文件,以满足开发需求 11 | 12 | // ReqListExternalcontact 获取客户列表请求 13 | // 文档:https://developer.work.weixin.qq.com/document/path/92264#获取客户列表 14 | type ReqListExternalcontact struct { 15 | // Userid 企业成员的userid,必填 16 | Userid string `json:"userid"` 17 | } 18 | 19 | var _ urlValuer = ReqListExternalcontact{} 20 | 21 | func (x ReqListExternalcontact) intoURLValues() url.Values { 22 | var vals map[string]interface{} 23 | jsonBytes, _ := json.Marshal(x) 24 | _ = json.Unmarshal(jsonBytes, &vals) 25 | 26 | var ret url.Values = make(map[string][]string) 27 | for k, v := range vals { 28 | ret.Add(k, StrVal(v)) 29 | } 30 | return ret 31 | } 32 | 33 | // RespListExternalcontact 获取客户列表响应 34 | // 文档:https://developer.work.weixin.qq.com/document/path/92264#获取客户列表 35 | type RespListExternalcontact struct { 36 | CommonResp 37 | ExternalUserid []string `json:"external_userid"` 38 | } 39 | 40 | var _ bodyer = RespListExternalcontact{} 41 | 42 | func (x RespListExternalcontact) intoBody() ([]byte, error) { 43 | result, err := json.Marshal(x) 44 | if err != nil { 45 | return nil, err 46 | } 47 | return result, nil 48 | } 49 | 50 | // ExecListExternalcontact 获取客户列表 51 | // 文档:https://developer.work.weixin.qq.com/document/path/92264#获取客户列表 52 | func (c *ApiClient) ExecListExternalcontact(req ReqListExternalcontact) (RespListExternalcontact, error) { 53 | var resp RespListExternalcontact 54 | err := c.executeWXApiGet("/cgi-bin/externalcontact/list", req, &resp, true) 55 | if err != nil { 56 | return RespListExternalcontact{}, err 57 | } 58 | if bizErr := resp.TryIntoErr(); bizErr != nil { 59 | return RespListExternalcontact{}, bizErr 60 | } 61 | return resp, nil 62 | } 63 | -------------------------------------------------------------------------------- /apis/应用授权-获取应用权限详情.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 修改生成的文件,以满足开发需求 9 | 10 | // 文档:https://developer.work.weixin.qq.com/document/path/99052#获取应用权限详情 11 | type ReqGetPermissionsAgent struct{} 12 | 13 | var _ bodyer = ReqGetPermissionsAgent{} 14 | 15 | func (x ReqGetPermissionsAgent) intoBody() ([]byte, error) { 16 | result, err := json.Marshal(x) 17 | if err != nil { 18 | return nil, err 19 | } 20 | return result, nil 21 | } 22 | 23 | // 文档:https://developer.work.weixin.qq.com/document/path/99052#获取应用权限详情 24 | type RespGetPermissionsAgent struct { 25 | CommonResp 26 | AppPermissions []string `json:"app_permissions"` 27 | } 28 | 29 | var _ bodyer = RespGetPermissionsAgent{} 30 | 31 | func (x RespGetPermissionsAgent) intoBody() ([]byte, error) { 32 | result, err := json.Marshal(x) 33 | if err != nil { 34 | return nil, err 35 | } 36 | return result, nil 37 | } 38 | 39 | // 文档:https://developer.work.weixin.qq.com/document/path/99052#获取应用权限详情 40 | func (c *ApiClient) ExecGetPermissionsAgent(req ReqGetPermissionsAgent) (RespGetPermissionsAgent, error) { 41 | var resp RespGetPermissionsAgent 42 | err := c.executeWXApiPost("/cgi-bin/agent/get_permissions", req, &resp, true) 43 | if err != nil { 44 | return RespGetPermissionsAgent{}, err 45 | } 46 | if bizErr := resp.TryIntoErr(); bizErr != nil { 47 | return RespGetPermissionsAgent{}, bizErr 48 | } 49 | return resp, nil 50 | } 51 | -------------------------------------------------------------------------------- /apis/应用授权-获取应用的管理员列表.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqGetAdminListService 获取应用的管理员列表请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/90606#获取应用的管理员列表 12 | type ReqGetAdminListService struct { 13 | // Agentid 授权方安装的应用agentid,必填 14 | Agentid int `json:"agentid"` 15 | // AuthCorpid 授权方corpid,必填 16 | AuthCorpid string `json:"auth_corpid"` 17 | } 18 | 19 | var _ bodyer = ReqGetAdminListService{} 20 | 21 | func (x ReqGetAdminListService) intoBody() ([]byte, error) { 22 | result, err := json.Marshal(x) 23 | if err != nil { 24 | return nil, err 25 | } 26 | return result, nil 27 | } 28 | 29 | // RespGetAdminListService 获取应用的管理员列表响应 30 | // 文档:https://developer.work.weixin.qq.com/document/path/90606#获取应用的管理员列表 31 | type RespGetAdminListService struct { 32 | Admin []struct { 33 | AuthType int `json:"auth_type"` 34 | OpenUserid string `json:"open_userid"` 35 | Userid string `json:"userid"` 36 | } `json:"admin"` 37 | CommonResp 38 | } 39 | 40 | var _ bodyer = RespGetAdminListService{} 41 | 42 | func (x RespGetAdminListService) intoBody() ([]byte, error) { 43 | result, err := json.Marshal(x) 44 | if err != nil { 45 | return nil, err 46 | } 47 | return result, nil 48 | } 49 | 50 | // ExecGetAdminListService 获取应用的管理员列表 51 | // 文档:https://developer.work.weixin.qq.com/document/path/90606#获取应用的管理员列表 52 | func (c *ApiClient) ExecGetAdminListService(req ReqGetAdminListService) (RespGetAdminListService, error) { 53 | var resp RespGetAdminListService 54 | err := c.executeWXApiPost("/cgi-bin/service/get_admin_list", req, &resp, true) 55 | if err != nil { 56 | return RespGetAdminListService{}, err 57 | } 58 | if bizErr := resp.TryIntoErr(); bizErr != nil { 59 | return RespGetAdminListService{}, bizErr 60 | } 61 | return resp, nil 62 | } 63 | -------------------------------------------------------------------------------- /apis/应用授权-获取预授权码.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "net/url" 7 | ) 8 | 9 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 10 | // 可自行修改生成的文件,以满足开发需求 11 | 12 | // ReqGetPreAuthCodeService 获取预授权码请求 13 | // 文档:https://developer.work.weixin.qq.com/document/path/90601#获取预授权码 14 | type ReqGetPreAuthCodeService struct{} 15 | 16 | var _ urlValuer = ReqGetPreAuthCodeService{} 17 | 18 | func (x ReqGetPreAuthCodeService) intoURLValues() url.Values { 19 | var vals map[string]interface{} 20 | jsonBytes, _ := json.Marshal(x) 21 | _ = json.Unmarshal(jsonBytes, &vals) 22 | 23 | var ret url.Values = make(map[string][]string) 24 | for k, v := range vals { 25 | ret.Add(k, StrVal(v)) 26 | } 27 | return ret 28 | } 29 | 30 | // RespGetPreAuthCodeService 获取预授权码响应 31 | // 文档:https://developer.work.weixin.qq.com/document/path/90601#获取预授权码 32 | type RespGetPreAuthCodeService struct { 33 | CommonResp 34 | // ExpiresIn 有效期(秒) 35 | ExpiresIn int `json:"expires_in"` 36 | // PreAuthCode 预授权码,最长为512字节 37 | PreAuthCode string `json:"pre_auth_code"` 38 | } 39 | 40 | var _ bodyer = RespGetPreAuthCodeService{} 41 | 42 | func (x RespGetPreAuthCodeService) intoBody() ([]byte, error) { 43 | result, err := json.Marshal(x) 44 | if err != nil { 45 | return nil, err 46 | } 47 | return result, nil 48 | } 49 | 50 | // ExecGetPreAuthCodeService 获取预授权码 51 | // 文档:https://developer.work.weixin.qq.com/document/path/90601#获取预授权码 52 | func (c *ApiClient) ExecGetPreAuthCodeService(req ReqGetPreAuthCodeService) (RespGetPreAuthCodeService, error) { 53 | var resp RespGetPreAuthCodeService 54 | err := c.executeWXApiGet("/cgi-bin/service/get_pre_auth_code", req, &resp, true) 55 | if err != nil { 56 | return RespGetPreAuthCodeService{}, err 57 | } 58 | if bizErr := resp.TryIntoErr(); bizErr != nil { 59 | return RespGetPreAuthCodeService{}, bizErr 60 | } 61 | return resp, nil 62 | } 63 | -------------------------------------------------------------------------------- /apis/成员管理-二次验证.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "net/url" 7 | ) 8 | 9 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 10 | // 可自行修改生成的文件,以满足开发需求 11 | 12 | // ReqAuthsuccUser 成二次验证请求 13 | // 文档:https://developer.work.weixin.qq.com/document/path/90339#二次验证 14 | type ReqAuthsuccUser struct { 15 | // Userid 成员UserID。对应管理端的帐号,必填 16 | Userid string `json:"userid"` 17 | } 18 | 19 | var _ urlValuer = ReqAuthsuccUser{} 20 | 21 | func (x ReqAuthsuccUser) intoURLValues() url.Values { 22 | var vals map[string]interface{} 23 | jsonBytes, _ := json.Marshal(x) 24 | _ = json.Unmarshal(jsonBytes, &vals) 25 | 26 | var ret url.Values = make(map[string][]string) 27 | for k, v := range vals { 28 | ret.Add(k, StrVal(v)) 29 | } 30 | return ret 31 | } 32 | 33 | // RespAuthsuccUser 成二次验证响应 34 | // 文档:https://developer.work.weixin.qq.com/document/path/90339#成二次验证 35 | type RespAuthsuccUser struct { 36 | CommonResp 37 | } 38 | 39 | var _ bodyer = RespAuthsuccUser{} 40 | 41 | func (x RespAuthsuccUser) intoBody() ([]byte, error) { 42 | result, err := json.Marshal(x) 43 | if err != nil { 44 | return nil, err 45 | } 46 | return result, nil 47 | } 48 | 49 | // ExecAuthsuccUser 成二次验证 50 | // 文档:https://developer.work.weixin.qq.com/document/path/90339#成二次验证 51 | func (c *ApiClient) ExecAuthsuccUser(req ReqAuthsuccUser) (RespAuthsuccUser, error) { 52 | var resp RespAuthsuccUser 53 | err := c.executeWXApiGet("/cgi-bin/user/authsucc", req, &resp, true) 54 | if err != nil { 55 | return RespAuthsuccUser{}, err 56 | } 57 | if bizErr := resp.TryIntoErr(); bizErr != nil { 58 | return RespAuthsuccUser{}, bizErr 59 | } 60 | return resp, nil 61 | } 62 | -------------------------------------------------------------------------------- /apis/成员管理-删除成员.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | "net/url" 6 | ) 7 | 8 | type ReqDeleteUser struct { 9 | Userid string `json:"userid"` 10 | } 11 | 12 | var _ urlValuer = ReqDeleteUser{} 13 | 14 | func (x ReqDeleteUser) intoURLValues() url.Values { 15 | var vals map[string]interface{} 16 | jsonBytes, _ := json.Marshal(x) 17 | _ = json.Unmarshal(jsonBytes, &vals) 18 | 19 | var ret url.Values = make(map[string][]string) 20 | for k, v := range vals { 21 | ret.Add(k, StrVal(v)) 22 | } 23 | return ret 24 | } 25 | 26 | type RespDeleteUser struct { 27 | CommonResp 28 | } 29 | 30 | var _ bodyer = RespDeleteUser{} 31 | 32 | func (x RespDeleteUser) intoBody() ([]byte, error) { 33 | result, err := json.Marshal(x) 34 | if err != nil { 35 | return nil, err 36 | } 37 | return result, nil 38 | } 39 | 40 | func (c *ApiClient) ExecDeleteUser(req ReqDeleteUser) (RespDeleteUser, error) { 41 | var resp RespDeleteUser 42 | err := c.executeWXApiGet("/cgi-bin/user/delete", req, &resp, true) 43 | if err != nil { 44 | return RespDeleteUser{}, err 45 | } 46 | if bizErr := resp.TryIntoErr(); bizErr != nil { 47 | return RespDeleteUser{}, bizErr 48 | } 49 | return resp, nil 50 | } 51 | -------------------------------------------------------------------------------- /apis/成员管理-手机号获取userid.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqGetuseridUser 手机号获取userid请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/91693#手机号获取userid 12 | type ReqGetuseridUser struct { 13 | // Mobile 用户在企业微信通讯录中的手机号码。长度为5~32个字节,必填 14 | Mobile string `json:"mobile"` 15 | } 16 | 17 | var _ bodyer = ReqGetuseridUser{} 18 | 19 | func (x ReqGetuseridUser) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespGetuseridUser 手机号获取userid响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/91693#手机号获取userid 29 | type RespGetuseridUser struct { 30 | CommonResp 31 | // Userid 成员UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为1~64个字节。注意:第三方应用获取的值是密文的userid 32 | Userid string `json:"userid"` 33 | } 34 | 35 | var _ bodyer = RespGetuseridUser{} 36 | 37 | func (x RespGetuseridUser) intoBody() ([]byte, error) { 38 | result, err := json.Marshal(x) 39 | if err != nil { 40 | return nil, err 41 | } 42 | return result, nil 43 | } 44 | 45 | // ExecGetuseridUser 手机号获取userid 46 | // 文档:https://developer.work.weixin.qq.com/document/path/91693#手机号获取userid 47 | func (c *ApiClient) ExecGetuseridUser(req ReqGetuseridUser) (RespGetuseridUser, error) { 48 | var resp RespGetuseridUser 49 | err := c.executeWXApiPost("/cgi-bin/user/getuserid", req, &resp, true) 50 | if err != nil { 51 | return RespGetuseridUser{}, err 52 | } 53 | if bizErr := resp.TryIntoErr(); bizErr != nil { 54 | return RespGetuseridUser{}, bizErr 55 | } 56 | return resp, nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/成员管理-查询成员用户是否已授权.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqCheckMemberAuthUser 查询成员用户是否已授权请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/94514#查询成员用户是否已授权 12 | type ReqCheckMemberAuthUser struct { 13 | // OpenUserid   14 | OpenUserid string `json:"open_userid,omitempty"` 15 | } 16 | 17 | var _ bodyer = ReqCheckMemberAuthUser{} 18 | 19 | func (x ReqCheckMemberAuthUser) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespCheckMemberAuthUser 查询成员用户是否已授权响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/94514#查询成员用户是否已授权 29 | type RespCheckMemberAuthUser struct { 30 | CommonResp 31 | // IsMemberAuth 成员授权模式下,该成员已授权 32 | IsMemberAuth bool `json:"is_member_auth"` 33 | } 34 | 35 | var _ bodyer = RespCheckMemberAuthUser{} 36 | 37 | func (x RespCheckMemberAuthUser) intoBody() ([]byte, error) { 38 | result, err := json.Marshal(x) 39 | if err != nil { 40 | return nil, err 41 | } 42 | return result, nil 43 | } 44 | 45 | // ExecCheckMemberAuthUser 查询成员用户是否已授权 46 | // 文档:https://developer.work.weixin.qq.com/document/path/94514#查询成员用户是否已授权 47 | func (c *ApiClient) ExecCheckMemberAuthUser(req ReqCheckMemberAuthUser) (RespCheckMemberAuthUser, error) { 48 | var resp RespCheckMemberAuthUser 49 | err := c.executeWXApiPost("/cgi-bin/user/check_member_auth", req, &resp, true) 50 | if err != nil { 51 | return RespCheckMemberAuthUser{}, err 52 | } 53 | if bizErr := resp.TryIntoErr(); bizErr != nil { 54 | return RespCheckMemberAuthUser{}, bizErr 55 | } 56 | return resp, nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/成员管理-获取成员ID列表.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqListIdUser 获取成员ID列表请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/96021#获取成员ID列表 12 | type ReqListIdUser struct { 13 | // Cursor 用于分页查询的游标,字符串类型,由上一次调用返回,首次调用不填 14 | Cursor string `json:"cursor,omitempty"` 15 | // Limit 分页,预期请求的数据量,取值范围 1 ~ 10000 16 | Limit int `json:"limit,omitempty"` 17 | } 18 | 19 | var _ bodyer = ReqListIdUser{} 20 | 21 | func (x ReqListIdUser) intoBody() ([]byte, error) { 22 | result, err := json.Marshal(x) 23 | if err != nil { 24 | return nil, err 25 | } 26 | return result, nil 27 | } 28 | 29 | // RespListIdUser 获取成员ID列表响应 30 | // 文档:https://developer.work.weixin.qq.com/document/path/96021#获取成员ID列表 31 | type RespListIdUser struct { 32 | CommonResp 33 | NextCursor string `json:"next_cursor"` 34 | DeptUser []struct { 35 | OpenUserid string `json:"open_userid"` 36 | Department int `json:"department"` 37 | } `json:"dept_user"` 38 | } 39 | 40 | var _ bodyer = RespListIdUser{} 41 | 42 | func (x RespListIdUser) intoBody() ([]byte, error) { 43 | result, err := json.Marshal(x) 44 | if err != nil { 45 | return nil, err 46 | } 47 | return result, nil 48 | } 49 | 50 | // ExecListIdUser 获取成员ID列表 51 | // 文档:https://developer.work.weixin.qq.com/document/path/96021#获取成员ID列表 52 | func (c *ApiClient) ExecListIdUser(req ReqListIdUser) (RespListIdUser, error) { 53 | var resp RespListIdUser 54 | err := c.executeWXApiPost("/cgi-bin/user/list_id", req, &resp, true) 55 | if err != nil { 56 | return RespListIdUser{}, err 57 | } 58 | if bizErr := resp.TryIntoErr(); bizErr != nil { 59 | return RespListIdUser{}, bizErr 60 | } 61 | return resp, nil 62 | } 63 | -------------------------------------------------------------------------------- /apis/成员管理-邀请成员.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqInviteBatch 成邀请成员请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/91127#成邀请成员 12 | type ReqInviteBatch struct { 13 | User []string `json:"user"` 14 | Party []int `json:"party"` 15 | Tag []int `json:"tag"` 16 | } 17 | 18 | var _ bodyer = ReqInviteBatch{} 19 | 20 | func (x ReqInviteBatch) intoBody() ([]byte, error) { 21 | result, err := json.Marshal(x) 22 | if err != nil { 23 | return nil, err 24 | } 25 | return result, nil 26 | } 27 | 28 | // RespInviteBatch 成邀请成员响应 29 | // 文档:https://developer.work.weixin.qq.com/document/path/91127#成邀请成员 30 | type RespInviteBatch struct { 31 | CommonResp 32 | // 非法成员列表 33 | InvalidUser []string `json:"invaliduser"` 34 | // 非法部门列表 35 | InvalidParty []int `json:"invalidparty"` 36 | // 非法标签列表 37 | InvalidTag []int `json:"invalidtag"` 38 | } 39 | 40 | var _ bodyer = RespInviteBatch{} 41 | 42 | func (x RespInviteBatch) intoBody() ([]byte, error) { 43 | result, err := json.Marshal(x) 44 | if err != nil { 45 | return nil, err 46 | } 47 | return result, nil 48 | } 49 | 50 | // ExecInviteBatch 成邀请成员 51 | // 文档:https://developer.work.weixin.qq.com/document/path/91127#成邀请成员 52 | func (c *ApiClient) ExecInviteBatch(req ReqInviteBatch) (RespInviteBatch, error) { 53 | var resp RespInviteBatch 54 | err := c.executeWXApiPost("/cgi-bin/batch/invite", req, &resp, true) 55 | if err != nil { 56 | return RespInviteBatch{}, err 57 | } 58 | if bizErr := resp.TryIntoErr(); bizErr != nil { 59 | return RespInviteBatch{}, bizErr 60 | } 61 | return resp, nil 62 | } 63 | -------------------------------------------------------------------------------- /apis/成员管理-邮箱获取userid.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqGetUseridByEmailUser 邮箱获取userid请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/95892#邮箱获取userid 12 | type ReqGetUseridByEmailUser struct { 13 | // Email 邮箱,必填 14 | Email string `json:"email"` 15 | // EmailType 邮箱类型:1-企业邮箱(默认);2-个人邮箱 16 | EmailType int `json:"email_type,omitempty"` 17 | } 18 | 19 | var _ bodyer = ReqGetUseridByEmailUser{} 20 | 21 | func (x ReqGetUseridByEmailUser) intoBody() ([]byte, error) { 22 | result, err := json.Marshal(x) 23 | if err != nil { 24 | return nil, err 25 | } 26 | return result, nil 27 | } 28 | 29 | // RespGetUseridByEmailUser 邮箱获取userid响应 30 | // 文档:https://developer.work.weixin.qq.com/document/path/95892#邮箱获取userid 31 | type RespGetUseridByEmailUser struct { 32 | CommonResp 33 | // Userid 成员UserID。注意:已升级openid的代开发或第三方,获取的是密文userid 34 | Userid string `json:"userid"` 35 | } 36 | 37 | var _ bodyer = RespGetUseridByEmailUser{} 38 | 39 | func (x RespGetUseridByEmailUser) intoBody() ([]byte, error) { 40 | result, err := json.Marshal(x) 41 | if err != nil { 42 | return nil, err 43 | } 44 | return result, nil 45 | } 46 | 47 | // ExecGetUseridByEmailUser 邮箱获取userid 48 | // 文档:https://developer.work.weixin.qq.com/document/path/95892#邮箱获取userid 49 | func (c *ApiClient) ExecGetUseridByEmailUser(req ReqGetUseridByEmailUser) (RespGetUseridByEmailUser, error) { 50 | var resp RespGetUseridByEmailUser 51 | err := c.executeWXApiPost("/cgi-bin/user/get_userid_by_email", req, &resp, true) 52 | if err != nil { 53 | return RespGetUseridByEmailUser{}, err 54 | } 55 | if bizErr := resp.TryIntoErr(); bizErr != nil { 56 | return RespGetUseridByEmailUser{}, bizErr 57 | } 58 | return resp, nil 59 | } 60 | -------------------------------------------------------------------------------- /apis/打卡-为打卡人员排班.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | type ( 8 | ReqSetCheckInSchedulist struct { 9 | Groupid int `json:"groupid"` 10 | Items []ReqSetCheckInSchedulistItems `json:"items"` 11 | Yearmonth int `json:"yearmonth"` 12 | } 13 | 14 | ReqSetCheckInSchedulistItems struct { 15 | Userid string `json:"userid"` 16 | Day int `json:"day"` 17 | ScheduleId int `json:"schedule_id"` 18 | } 19 | ) 20 | 21 | var _ bodyer = ReqSetCheckInSchedulist{} 22 | 23 | func (x ReqSetCheckInSchedulist) intoBody() ([]byte, error) { 24 | result, err := json.Marshal(x) 25 | if err != nil { 26 | return nil, err 27 | } 28 | return result, nil 29 | } 30 | 31 | type RespSetCheckInSchedulist struct { 32 | CommonResp 33 | } 34 | 35 | var _ bodyer = RespSetCheckInSchedulist{} 36 | 37 | func (x RespSetCheckInSchedulist) intoBody() ([]byte, error) { 38 | result, err := json.Marshal(x) 39 | if err != nil { 40 | return nil, err 41 | } 42 | return result, nil 43 | } 44 | 45 | func (c *ApiClient) ExecSetCheckInSchedulist(req ReqSetCheckInSchedulist) (RespSetCheckInSchedulist, error) { 46 | var resp RespSetCheckInSchedulist 47 | err := c.executeWXApiPost("/cgi-bin/checkin/setcheckinschedulist", req, &resp, true) 48 | if err != nil { 49 | return RespSetCheckInSchedulist{}, err 50 | } 51 | if bizErr := resp.TryIntoErr(); bizErr != nil { 52 | return RespSetCheckInSchedulist{}, bizErr 53 | } 54 | return resp, nil 55 | } 56 | -------------------------------------------------------------------------------- /apis/打卡-获取设备打卡数据.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | type ReqGetHardwareCheckInData struct { 8 | FilterType int `json:"filter_type"` 9 | Starttime int `json:"starttime"` 10 | Endtime int `json:"endtime"` 11 | Useridlist []string `json:"useridlist"` 12 | } 13 | 14 | var _ bodyer = ReqGetHardwareCheckInData{} 15 | 16 | func (x ReqGetHardwareCheckInData) intoBody() ([]byte, error) { 17 | result, err := json.Marshal(x) 18 | if err != nil { 19 | return nil, err 20 | } 21 | return result, nil 22 | } 23 | 24 | type RespGetHardwareCheckInData struct { 25 | CommonResp 26 | Checkindata []struct { 27 | Userid string `json:"userid"` 28 | CheckinTime int `json:"checkin_time"` 29 | DeviceSn string `json:"device_sn"` 30 | DeviceName string `json:"device_name"` 31 | } `json:"checkindata"` 32 | } 33 | 34 | var _ bodyer = RespGetHardwareCheckInData{} 35 | 36 | func (x RespGetHardwareCheckInData) intoBody() ([]byte, error) { 37 | result, err := json.Marshal(x) 38 | if err != nil { 39 | return nil, err 40 | } 41 | return result, nil 42 | } 43 | 44 | func (c *ApiClient) ExecGetHardwareCheckInData(req ReqGetHardwareCheckInData) (RespGetHardwareCheckInData, error) { 45 | var resp RespGetHardwareCheckInData 46 | err := c.executeWXApiPost("/cgi-bin/checkin/get_hardware_checkin_data", req, &resp, true) 47 | if err != nil { 48 | return RespGetHardwareCheckInData{}, err 49 | } 50 | if bizErr := resp.TryIntoErr(); bizErr != nil { 51 | return RespGetHardwareCheckInData{}, bizErr 52 | } 53 | return resp, nil 54 | } 55 | -------------------------------------------------------------------------------- /apis/接口调用许可-取消订单.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqCancelOrderLicense 取消订单请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/96106#取消订单 12 | type ReqCancelOrderLicense struct { 13 | Corpid string `json:"corpid"` 14 | OrderID string `json:"order_id"` 15 | } 16 | 17 | var _ bodyer = ReqCancelOrderLicense{} 18 | 19 | func (x ReqCancelOrderLicense) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespCancelOrderLicense 取消订单响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/96106#取消订单 29 | type RespCancelOrderLicense struct { 30 | CommonResp 31 | } 32 | 33 | var _ bodyer = RespCancelOrderLicense{} 34 | 35 | func (x RespCancelOrderLicense) intoBody() ([]byte, error) { 36 | result, err := json.Marshal(x) 37 | if err != nil { 38 | return nil, err 39 | } 40 | return result, nil 41 | } 42 | 43 | // ExecCancelOrderLicense 取消订单 44 | // 文档:https://developer.work.weixin.qq.com/document/path/96106#取消订单 45 | func (c *ApiClient) ExecCancelOrderLicense(req ReqCancelOrderLicense) (RespCancelOrderLicense, error) { 46 | var resp RespCancelOrderLicense 47 | err := c.executeWXApiPost("/cgi-bin/license/cancel_order", req, &resp, true) 48 | if err != nil { 49 | return RespCancelOrderLicense{}, err 50 | } 51 | if bizErr := resp.TryIntoErr(); bizErr != nil { 52 | return RespCancelOrderLicense{}, bizErr 53 | } 54 | return resp, nil 55 | } 56 | -------------------------------------------------------------------------------- /apis/接口调用许可-查询企业的许可自动激活状态.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqGetAutoActiveStatusLicense 查询企业的许可自动激活状态请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/95874#查询企业的许可自动激活状态 12 | type ReqGetAutoActiveStatusLicense struct { 13 | // Corpid 查询的企业corpid。要求服务商为企业购买过接口许可才有查询结果。,必填 14 | Corpid string `json:"corpid"` 15 | } 16 | 17 | var _ bodyer = ReqGetAutoActiveStatusLicense{} 18 | 19 | func (x ReqGetAutoActiveStatusLicense) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespGetAutoActiveStatusLicense 查询企业的许可自动激活状态响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/95874#查询企业的许可自动激活状态 29 | type RespGetAutoActiveStatusLicense struct { 30 | // AutoActiveStatus 许可自动激活状态。0:关闭,1:打开 31 | AutoActiveStatus int `json:"auto_active_status"` 32 | CommonResp 33 | } 34 | 35 | var _ bodyer = RespGetAutoActiveStatusLicense{} 36 | 37 | func (x RespGetAutoActiveStatusLicense) intoBody() ([]byte, error) { 38 | result, err := json.Marshal(x) 39 | if err != nil { 40 | return nil, err 41 | } 42 | return result, nil 43 | } 44 | 45 | // ExecGetAutoActiveStatusLicense 查询企业的许可自动激活状态 46 | // 文档:https://developer.work.weixin.qq.com/document/path/95874#查询企业的许可自动激活状态 47 | func (c *ApiClient) ExecGetAutoActiveStatusLicense(req ReqGetAutoActiveStatusLicense) (RespGetAutoActiveStatusLicense, error) { 48 | var resp RespGetAutoActiveStatusLicense 49 | err := c.executeWXApiPost("/cgi-bin/license/get_auto_active_status", req, &resp, true) 50 | if err != nil { 51 | return RespGetAutoActiveStatusLicense{}, err 52 | } 53 | if bizErr := resp.TryIntoErr(); bizErr != nil { 54 | return RespGetAutoActiveStatusLicense{}, bizErr 55 | } 56 | return resp, nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/推广二维码-获取应用安装链接.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | // 推广二维码方式安装应用:获取应用安装链接 4 | // 文档:https://developer.work.weixin.qq.com/document/path/90578 5 | func (c *ApiClient) ExecGetRegisterUrl(registerCode string) string { 6 | return "https://open.work.weixin.qq.com/3rdservice/wework/register?register_code=" + registerCode 7 | } 8 | -------------------------------------------------------------------------------- /apis/收银台-取消收款订单.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqCloseOrderPaytool 取消收款订单请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/98046#取消收款订单 12 | type ReqCloseOrderPaytool struct { 13 | // NonceStr 随机字符串,长度要求在32字节以内,用于保证签名不可预测及防重放攻击。
需保证15分钟内不能重复,推荐随机字符串生成算法 14 | NonceStr string `json:"nonce_str,omitempty"` 15 | // OrderID 收款订单号
不多于64字节 16 | OrderID string `json:"order_id,omitempty"` 17 | // Sig 数字签名 18 | Sig string `json:"sig,omitempty"` 19 | // Ts unix时间戳(中国时区),精确到秒。
注意业务系统的机器时间与腾讯的时间相差不能超过15分钟 20 | Ts int `json:"ts,omitempty"` 21 | } 22 | 23 | var _ bodyer = ReqCloseOrderPaytool{} 24 | 25 | func (x ReqCloseOrderPaytool) intoBody() ([]byte, error) { 26 | result, err := json.Marshal(x) 27 | if err != nil { 28 | return nil, err 29 | } 30 | return result, nil 31 | } 32 | 33 | // RespCloseOrderPaytool 取消收款订单响应 34 | // 文档:https://developer.work.weixin.qq.com/document/path/98046#取消收款订单 35 | type RespCloseOrderPaytool struct { 36 | CommonResp 37 | } 38 | 39 | var _ bodyer = RespCloseOrderPaytool{} 40 | 41 | func (x RespCloseOrderPaytool) intoBody() ([]byte, error) { 42 | result, err := json.Marshal(x) 43 | if err != nil { 44 | return nil, err 45 | } 46 | return result, nil 47 | } 48 | 49 | // ExecCloseOrderPaytool 取消收款订单 50 | // 文档:https://developer.work.weixin.qq.com/document/path/98046#取消收款订单 51 | func (c *ApiClient) ExecCloseOrderPaytool(req ReqCloseOrderPaytool) (RespCloseOrderPaytool, error) { 52 | var resp RespCloseOrderPaytool 53 | err := c.executeWXApiPost("/cgi-bin/paytool/close_order", req, &resp, true) 54 | if err != nil { 55 | return RespCloseOrderPaytool{}, err 56 | } 57 | if bizErr := resp.TryIntoErr(); bizErr != nil { 58 | return RespCloseOrderPaytool{}, bizErr 59 | } 60 | return resp, nil 61 | } 62 | -------------------------------------------------------------------------------- /apis/收银台-延长试用期.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqProlongTryService 延长试用期请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/91913#延长试用期 12 | type ReqProlongTryService struct { 13 | // Appid 仅旧套件需要填此参数 14 | Appid int `json:"appid,omitempty"` 15 | // BuyerCorpid 购买方corpid,必填 16 | BuyerCorpid string `json:"buyer_corpid"` 17 | // ProlongDays 延长天数,必填 18 | ProlongDays int `json:"prolong_days"` 19 | } 20 | 21 | var _ bodyer = ReqProlongTryService{} 22 | 23 | func (x ReqProlongTryService) intoBody() ([]byte, error) { 24 | result, err := json.Marshal(x) 25 | if err != nil { 26 | return nil, err 27 | } 28 | return result, nil 29 | } 30 | 31 | // RespProlongTryService 延长试用期响应 32 | // 文档:https://developer.work.weixin.qq.com/document/path/91913#延长试用期 33 | type RespProlongTryService struct { 34 | CommonResp 35 | // TryEndTime 延长后的试用到期时间(UNIX时间戳) 36 | TryEndTime int `json:"try_end_time"` 37 | } 38 | 39 | var _ bodyer = RespProlongTryService{} 40 | 41 | func (x RespProlongTryService) intoBody() ([]byte, error) { 42 | result, err := json.Marshal(x) 43 | if err != nil { 44 | return nil, err 45 | } 46 | return result, nil 47 | } 48 | 49 | // ExecProlongTryService 延长试用期 50 | // 文档:https://developer.work.weixin.qq.com/document/path/91913#延长试用期 51 | func (c *ApiClient) ExecProlongTryService(req ReqProlongTryService) (RespProlongTryService, error) { 52 | var resp RespProlongTryService 53 | err := c.executeWXApiPost("/cgi-bin/service/prolong_try", req, &resp, true) 54 | if err != nil { 55 | return RespProlongTryService{}, err 56 | } 57 | if bizErr := resp.TryIntoErr(); bizErr != nil { 58 | return RespProlongTryService{}, bizErr 59 | } 60 | return resp, nil 61 | } 62 | -------------------------------------------------------------------------------- /apis/标签管理-创建标签.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqCreateTag 创建标签请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/90346#创建标签 12 | type ReqCreateTag struct { 13 | // Tagid 标签id,非负整型,指定此参数时新增的标签会生成对应的标签id,不指定时则以目前最大的id自增。 14 | Tagid int `json:"tagid,omitempty"` 15 | // Tagname 标签名称,长度限制为32个字以内(汉字或英文字母),标签名不可与其他标签重名。,必填 16 | Tagname string `json:"tagname"` 17 | } 18 | 19 | var _ bodyer = ReqCreateTag{} 20 | 21 | func (x ReqCreateTag) intoBody() ([]byte, error) { 22 | result, err := json.Marshal(x) 23 | if err != nil { 24 | return nil, err 25 | } 26 | return result, nil 27 | } 28 | 29 | // RespCreateTag 创建标签响应 30 | // 文档:https://developer.work.weixin.qq.com/document/path/90346#创建标签 31 | type RespCreateTag struct { 32 | CommonResp 33 | // Tagid 标签id 34 | Tagid int `json:"tagid"` 35 | } 36 | 37 | var _ bodyer = RespCreateTag{} 38 | 39 | func (x RespCreateTag) intoBody() ([]byte, error) { 40 | result, err := json.Marshal(x) 41 | if err != nil { 42 | return nil, err 43 | } 44 | return result, nil 45 | } 46 | 47 | // ExecCreateTag 创建标签 48 | // 文档:https://developer.work.weixin.qq.com/document/path/90346#创建标签 49 | func (c *ApiClient) ExecCreateTag(req ReqCreateTag) (RespCreateTag, error) { 50 | var resp RespCreateTag 51 | err := c.executeWXApiPost("/cgi-bin/tag/create", req, &resp, true) 52 | if err != nil { 53 | return RespCreateTag{}, err 54 | } 55 | if bizErr := resp.TryIntoErr(); bizErr != nil { 56 | return RespCreateTag{}, bizErr 57 | } 58 | return resp, nil 59 | } 60 | -------------------------------------------------------------------------------- /apis/标签管理-删除标签.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "net/url" 7 | ) 8 | 9 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 10 | // 可自行修改生成的文件,以满足开发需求 11 | 12 | // ReqDeleteTag 删除标签请求 13 | // 文档:https://developer.work.weixin.qq.com/document/path/90348#删除标签 14 | type ReqDeleteTag struct { 15 | // Tagid 标签ID,必填 16 | Tagid int `json:"tagid"` 17 | } 18 | 19 | var _ urlValuer = ReqDeleteTag{} 20 | 21 | func (x ReqDeleteTag) intoURLValues() url.Values { 22 | var vals map[string]interface{} 23 | jsonBytes, _ := json.Marshal(x) 24 | _ = json.Unmarshal(jsonBytes, &vals) 25 | 26 | var ret url.Values = make(map[string][]string) 27 | for k, v := range vals { 28 | ret.Add(k, StrVal(v)) 29 | } 30 | return ret 31 | } 32 | 33 | // RespDeleteTag 删除标签响应 34 | // 文档:https://developer.work.weixin.qq.com/document/path/90348#删除标签 35 | type RespDeleteTag struct { 36 | CommonResp 37 | } 38 | 39 | var _ bodyer = RespDeleteTag{} 40 | 41 | func (x RespDeleteTag) intoBody() ([]byte, error) { 42 | result, err := json.Marshal(x) 43 | if err != nil { 44 | return nil, err 45 | } 46 | return result, nil 47 | } 48 | 49 | // ExecDeleteTag 删除标签 50 | // 文档:https://developer.work.weixin.qq.com/document/path/90348#删除标签 51 | func (c *ApiClient) ExecDeleteTag(req ReqDeleteTag) (RespDeleteTag, error) { 52 | var resp RespDeleteTag 53 | err := c.executeWXApiGet("/cgi-bin/tag/delete", req, &resp, true) 54 | if err != nil { 55 | return RespDeleteTag{}, err 56 | } 57 | if bizErr := resp.TryIntoErr(); bizErr != nil { 58 | return RespDeleteTag{}, bizErr 59 | } 60 | return resp, nil 61 | } 62 | -------------------------------------------------------------------------------- /apis/标签管理-删除标签成员.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqDeltagusersTag 删除标签成员请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/90351#删除标签成员 12 | type ReqDeltagusersTag struct { 13 | // Partylist 企业部门ID列表,注意:userlist、partylist不能同时为空,单次请求长度不超过100 14 | Partylist []int `json:"partylist,omitempty"` 15 | // Tagid 标签ID,必填 16 | Tagid int `json:"tagid"` 17 | // Userlist 企业成员ID列表,注意:userlist、partylist不能同时为空,单次请求长度不超过1000 18 | Userlist []string `json:"userlist,omitempty"` 19 | } 20 | 21 | var _ bodyer = ReqDeltagusersTag{} 22 | 23 | func (x ReqDeltagusersTag) intoBody() ([]byte, error) { 24 | result, err := json.Marshal(x) 25 | if err != nil { 26 | return nil, err 27 | } 28 | return result, nil 29 | } 30 | 31 | // RespDeltagusersTag 删除标签成员响应 32 | // 文档:https://developer.work.weixin.qq.com/document/path/90351#删除标签成员 33 | type RespDeltagusersTag struct { 34 | CommonResp 35 | } 36 | 37 | var _ bodyer = RespDeltagusersTag{} 38 | 39 | func (x RespDeltagusersTag) intoBody() ([]byte, error) { 40 | result, err := json.Marshal(x) 41 | if err != nil { 42 | return nil, err 43 | } 44 | return result, nil 45 | } 46 | 47 | // ExecDeltagusersTag 删除标签成员 48 | // 文档:https://developer.work.weixin.qq.com/document/path/90351#删除标签成员 49 | func (c *ApiClient) ExecDeltagusersTag(req ReqDeltagusersTag) (RespDeltagusersTag, error) { 50 | var resp RespDeltagusersTag 51 | err := c.executeWXApiPost("/cgi-bin/tag/deltagusers", req, &resp, true) 52 | if err != nil { 53 | return RespDeltagusersTag{}, err 54 | } 55 | if bizErr := resp.TryIntoErr(); bizErr != nil { 56 | return RespDeltagusersTag{}, bizErr 57 | } 58 | return resp, nil 59 | } 60 | -------------------------------------------------------------------------------- /apis/标签管理-增加标签成员.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqAddtagusersTag 增加标签成员请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/90350#增加标签成员 12 | type ReqAddtagusersTag struct { 13 | // Partylist 企业部门ID列表,注意:userlist、partylist不能同时为空,单次请求个数不超过100 14 | Partylist []int `json:"partylist,omitempty"` 15 | // Tagid 标签ID,必填 16 | Tagid int `json:"tagid"` 17 | // Userlist 企业成员ID列表,注意:userlist、partylist不能同时为空,单次请求个数不超过1000 18 | Userlist []string `json:"userlist,omitempty"` 19 | } 20 | 21 | var _ bodyer = ReqAddtagusersTag{} 22 | 23 | func (x ReqAddtagusersTag) intoBody() ([]byte, error) { 24 | result, err := json.Marshal(x) 25 | if err != nil { 26 | return nil, err 27 | } 28 | return result, nil 29 | } 30 | 31 | // RespAddtagusersTag 增加标签成员响应 32 | // 文档:https://developer.work.weixin.qq.com/document/path/90350#增加标签成员 33 | type RespAddtagusersTag struct { 34 | CommonResp 35 | } 36 | 37 | var _ bodyer = RespAddtagusersTag{} 38 | 39 | func (x RespAddtagusersTag) intoBody() ([]byte, error) { 40 | result, err := json.Marshal(x) 41 | if err != nil { 42 | return nil, err 43 | } 44 | return result, nil 45 | } 46 | 47 | // ExecAddtagusersTag 增加标签成员 48 | // 文档:https://developer.work.weixin.qq.com/document/path/90350#增加标签成员 49 | func (c *ApiClient) ExecAddtagusersTag(req ReqAddtagusersTag) (RespAddtagusersTag, error) { 50 | var resp RespAddtagusersTag 51 | err := c.executeWXApiPost("/cgi-bin/tag/addtagusers", req, &resp, true) 52 | if err != nil { 53 | return RespAddtagusersTag{}, err 54 | } 55 | if bizErr := resp.TryIntoErr(); bizErr != nil { 56 | return RespAddtagusersTag{}, bizErr 57 | } 58 | return resp, nil 59 | } 60 | -------------------------------------------------------------------------------- /apis/标签管理-更新标签名字.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqUpdateTag 更新标签名字请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/90347#更新标签名字 12 | type ReqUpdateTag struct { 13 | // Tagid 标签ID,必填 14 | Tagid int `json:"tagid"` 15 | // Tagname 标签名称,长度限制为32个字(汉字或英文字母),标签不可与其他标签重名。,必填 16 | Tagname string `json:"tagname"` 17 | } 18 | 19 | var _ bodyer = ReqUpdateTag{} 20 | 21 | func (x ReqUpdateTag) intoBody() ([]byte, error) { 22 | result, err := json.Marshal(x) 23 | if err != nil { 24 | return nil, err 25 | } 26 | return result, nil 27 | } 28 | 29 | // RespUpdateTag 更新标签名字响应 30 | // 文档:https://developer.work.weixin.qq.com/document/path/90347#更新标签名字 31 | type RespUpdateTag struct { 32 | CommonResp 33 | } 34 | 35 | var _ bodyer = RespUpdateTag{} 36 | 37 | func (x RespUpdateTag) intoBody() ([]byte, error) { 38 | result, err := json.Marshal(x) 39 | if err != nil { 40 | return nil, err 41 | } 42 | return result, nil 43 | } 44 | 45 | // ExecUpdateTag 更新标签名字 46 | // 文档:https://developer.work.weixin.qq.com/document/path/90347#更新标签名字 47 | func (c *ApiClient) ExecUpdateTag(req ReqUpdateTag) (RespUpdateTag, error) { 48 | var resp RespUpdateTag 49 | err := c.executeWXApiPost("/cgi-bin/tag/update", req, &resp, true) 50 | if err != nil { 51 | return RespUpdateTag{}, err 52 | } 53 | if bizErr := resp.TryIntoErr(); bizErr != nil { 54 | return RespUpdateTag{}, bizErr 55 | } 56 | return resp, nil 57 | } 58 | -------------------------------------------------------------------------------- /apis/标签管理-获取标签列表.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | 6 | "net/url" 7 | ) 8 | 9 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 10 | // 可自行修改生成的文件,以满足开发需求 11 | 12 | // ReqListTag 获取标签列表请求 13 | // 文档:https://developer.work.weixin.qq.com/document/path/90352#获取标签列表 14 | type ReqListTag struct{} 15 | 16 | var _ urlValuer = ReqListTag{} 17 | 18 | func (x ReqListTag) intoURLValues() url.Values { 19 | var vals map[string]interface{} 20 | jsonBytes, _ := json.Marshal(x) 21 | _ = json.Unmarshal(jsonBytes, &vals) 22 | 23 | var ret url.Values = make(map[string][]string) 24 | for k, v := range vals { 25 | ret.Add(k, StrVal(v)) 26 | } 27 | return ret 28 | } 29 | 30 | // RespListTag 获取标签列表响应 31 | // 文档:https://developer.work.weixin.qq.com/document/path/90352#获取标签列表 32 | type RespListTag struct { 33 | CommonResp 34 | Taglist []struct { 35 | // Tagid 标签id 36 | Tagid int `json:"tagid"` 37 | // Tagname 标签名 38 | Tagname string `json:"tagname"` 39 | } `json:"taglist"` // 标签列表 40 | } 41 | 42 | var _ bodyer = RespListTag{} 43 | 44 | func (x RespListTag) intoBody() ([]byte, error) { 45 | result, err := json.Marshal(x) 46 | if err != nil { 47 | return nil, err 48 | } 49 | return result, nil 50 | } 51 | 52 | // ExecListTag 获取标签列表 53 | // 文档:https://developer.work.weixin.qq.com/document/path/90352#获取标签列表 54 | func (c *ApiClient) ExecListTag(req ReqListTag) (RespListTag, error) { 55 | var resp RespListTag 56 | err := c.executeWXApiGet("/cgi-bin/tag/list", req, &resp, true) 57 | if err != nil { 58 | return RespListTag{}, err 59 | } 60 | if bizErr := resp.TryIntoErr(); bizErr != nil { 61 | return RespListTag{}, bizErr 62 | } 63 | return resp, nil 64 | } 65 | -------------------------------------------------------------------------------- /apis/消息推送-提醒成员群发.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqRemindGroupmsgSendExternalcontact 提醒成员群发请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/97610#提醒成员群发 12 | type ReqRemindGroupmsgSendExternalcontact struct { 13 | // Msgid 群发消息的id,通过获取群发记录列表接口返回,必填 14 | Msgid string `json:"msgid"` 15 | } 16 | 17 | var _ bodyer = ReqRemindGroupmsgSendExternalcontact{} 18 | 19 | func (x ReqRemindGroupmsgSendExternalcontact) intoBody() ([]byte, error) { 20 | result, err := json.Marshal(x) 21 | if err != nil { 22 | return nil, err 23 | } 24 | return result, nil 25 | } 26 | 27 | // RespRemindGroupmsgSendExternalcontact 提醒成员群发响应 28 | // 文档:https://developer.work.weixin.qq.com/document/path/97610#提醒成员群发 29 | type RespRemindGroupmsgSendExternalcontact struct { 30 | CommonResp 31 | } 32 | 33 | var _ bodyer = RespRemindGroupmsgSendExternalcontact{} 34 | 35 | func (x RespRemindGroupmsgSendExternalcontact) intoBody() ([]byte, error) { 36 | result, err := json.Marshal(x) 37 | if err != nil { 38 | return nil, err 39 | } 40 | return result, nil 41 | } 42 | 43 | // ExecRemindGroupmsgSendExternalcontact 提醒成员群发 44 | // 文档:https://developer.work.weixin.qq.com/document/path/97610#提醒成员群发 45 | func (c *ApiClient) ExecRemindGroupmsgSendExternalcontact(req ReqRemindGroupmsgSendExternalcontact) (RespRemindGroupmsgSendExternalcontact, error) { 46 | var resp RespRemindGroupmsgSendExternalcontact 47 | err := c.executeWXApiPost("/cgi-bin/externalcontact/remind_groupmsg_send", req, &resp, true) 48 | if err != nil { 49 | return RespRemindGroupmsgSendExternalcontact{}, err 50 | } 51 | if bizErr := resp.TryIntoErr(); bizErr != nil { 52 | return RespRemindGroupmsgSendExternalcontact{}, bizErr 53 | } 54 | return resp, nil 55 | } 56 | -------------------------------------------------------------------------------- /apis/获取企业的jsapi_ticket.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import "net/url" 4 | 5 | // 文档:https://developer.work.weixin.qq.com/document/path/90539#获取企业的jsapi_ticket 6 | 7 | type JsAPITicketReq struct{} 8 | 9 | var _ urlValuer = JsAPITicketReq{} 10 | 11 | func (x JsAPITicketReq) intoURLValues() url.Values { 12 | return url.Values{} 13 | } 14 | 15 | type JsAPITicketResp struct { 16 | CommonResp 17 | 18 | Ticket string `json:"ticket"` 19 | ExpiresInSecs int64 `json:"expires_in"` 20 | } 21 | 22 | // ExecGetJSAPITicket 获取企业的jsapi_ticket 23 | func (c *ApiClient) ExecGetJSAPITicket(req JsAPITicketReq) (JsAPITicketResp, error) { 24 | var resp JsAPITicketResp 25 | err := c.executeWXApiGet("/cgi-bin/get_jsapi_ticket", req, &resp, true) 26 | if err != nil { 27 | return JsAPITicketResp{}, err 28 | } 29 | if bizErr := resp.TryIntoErr(); bizErr != nil { 30 | return JsAPITicketResp{}, bizErr 31 | } 32 | return resp, nil 33 | } 34 | -------------------------------------------------------------------------------- /apis/获取应用的jsapi_ticket.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import "net/url" 4 | 5 | // 文档:https://developer.work.weixin.qq.com/document/path/90539#获取应用的jsapi_ticket 6 | 7 | type JsAPITicketAgentConfigReq struct{} 8 | 9 | var _ urlValuer = JsAPITicketAgentConfigReq{} 10 | 11 | func (x JsAPITicketAgentConfigReq) intoURLValues() url.Values { 12 | return url.Values{ 13 | "type": {"agent_config"}, 14 | } 15 | } 16 | 17 | // ExecGetJSAPITicketAgentConfig 获取应用的jsapi_ticket 18 | func (c *ApiClient) ExecGetJSAPITicketAgentConfig(req JsAPITicketAgentConfigReq) (JsAPITicketResp, error) { 19 | var resp JsAPITicketResp 20 | err := c.executeWXApiGet("/cgi-bin/ticket/get", req, &resp, true) 21 | if err != nil { 22 | return JsAPITicketResp{}, err 23 | } 24 | if bizErr := resp.TryIntoErr(); bizErr != nil { 25 | return JsAPITicketResp{}, bizErr 26 | } 27 | return resp, nil 28 | } 29 | -------------------------------------------------------------------------------- /apis/获取服务商凭证.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 自动生成的文件, 生成方式: make api doc=微信文档地址url 8 | // 可自行修改生成的文件,以满足开发需求 9 | 10 | // ReqGetProviderTokenService 获取服务商凭证请求 11 | // 文档:https://developer.work.weixin.qq.com/document/path/91200#获取服务商凭证 12 | type ReqGetProviderTokenService struct { 13 | // Corpid 服务商的corpid,必填 14 | Corpid string `json:"corpid"` 15 | // ProviderSecret 服务商的secret,在服务商管理后台可见,必填 16 | ProviderSecret string `json:"provider_secret"` 17 | } 18 | 19 | var _ bodyer = ReqGetProviderTokenService{} 20 | 21 | func (x ReqGetProviderTokenService) intoBody() ([]byte, error) { 22 | result, err := json.Marshal(x) 23 | if err != nil { 24 | return nil, err 25 | } 26 | return result, nil 27 | } 28 | 29 | // RespGetProviderTokenService 获取服务商凭证响应 30 | // 文档:https://developer.work.weixin.qq.com/document/path/91200#获取服务商凭证 31 | type RespGetProviderTokenService struct { 32 | CommonResp 33 | 34 | ExpiresIn int `json:"expires_in"` 35 | ProviderAccessToken string `json:"provider_access_token"` 36 | } 37 | 38 | var _ bodyer = RespGetProviderTokenService{} 39 | 40 | func (x RespGetProviderTokenService) intoBody() ([]byte, error) { 41 | result, err := json.Marshal(x) 42 | if err != nil { 43 | return nil, err 44 | } 45 | return result, nil 46 | } 47 | 48 | // ExecGetProviderTokenService 获取服务商凭证 49 | // 文档:https://developer.work.weixin.qq.com/document/path/91200#获取服务商凭证 50 | func (c *ApiClient) ExecGetProviderTokenService(req ReqGetProviderTokenService) (RespGetProviderTokenService, error) { 51 | var resp RespGetProviderTokenService 52 | err := c.executeWXApiPost("/cgi-bin/service/get_provider_token", req, &resp, false) 53 | if err != nil { 54 | return RespGetProviderTokenService{}, err 55 | } 56 | if bizErr := resp.TryIntoErr(); bizErr != nil { 57 | return RespGetProviderTokenService{}, bizErr 58 | } 59 | return resp, nil 60 | } 61 | -------------------------------------------------------------------------------- /apis/获取视频号绑定状态.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | // 文档:https://developer.work.weixin.qq.com/document/path/95153 8 | 9 | type ReqGetCorpQualification struct{} 10 | 11 | var _ bodyer = ReqGetCorpQualification{} 12 | 13 | func (x ReqGetCorpQualification) intoBody() ([]byte, error) { 14 | result, err := json.Marshal(x) 15 | if err != nil { 16 | return nil, err 17 | } 18 | return result, nil 19 | } 20 | 21 | type RespGetCorpQualification struct { 22 | CommonResp 23 | WechatChannelsBinding bool `json:"wechat_channels_binding"` // 当企业具有绑定成功的视频号时,返回true,否则返回false。 24 | } 25 | 26 | var _ bodyer = RespGetCorpQualification{} 27 | 28 | func (x RespGetCorpQualification) intoBody() ([]byte, error) { 29 | result, err := json.Marshal(x) 30 | if err != nil { 31 | return nil, err 32 | } 33 | return result, nil 34 | } 35 | 36 | func (c *ApiClient) GetCorpQualification(req ReqGetCorpQualification) (RespGetCorpQualification, error) { 37 | var resp RespGetCorpQualification 38 | err := c.executeWXApiPost("/cgi-bin/kf/get_corp_qualification", req, &resp, true) 39 | if err != nil { 40 | return RespGetCorpQualification{}, err 41 | } 42 | if bizErr := resp.TryIntoErr(); bizErr != nil { 43 | return RespGetCorpQualification{}, bizErr 44 | } 45 | return resp, nil 46 | } 47 | -------------------------------------------------------------------------------- /callback_generate/callback.tmpl: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: {{ .DocUrl }} 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback({{ .StructName }}{}) 11 | } 12 | 13 | {{ .StructStr }} 14 | 15 | func ({{ .StructName }}) GetMessageType() string { 16 | return "{{ .MsgType }}" 17 | } 18 | 19 | func ({{ .StructName }}) GetEventType() string { 20 | return "{{ .EventType }}" 21 | } 22 | 23 | func ({{ .StructName }}) GetChangeType() string { 24 | return "{{ .ChangeType }}" 25 | } 26 | 27 | func (m {{ .StructName }}) GetTypeKey() string { 28 | return m.GetMessageType() + ":" + m.GetEventType() + ":" +m.GetChangeType() 29 | } 30 | 31 | func ({{ .StructName }}) ParseFromXml(data []byte) (CallBackExtraInfoInterface,error) { 32 | var temp {{ .StructName }} 33 | err := xml.Unmarshal(data, &temp) 34 | return temp, err 35 | } 36 | -------------------------------------------------------------------------------- /callbacks/callback_interface.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | var callBackParseExtraInfoMap = make(map[string]CallBackExtraInfoInterface) 4 | 5 | type CallBackExtraInfoInterface interface { 6 | GetMessageType() string 7 | GetEventType() string 8 | GetChangeType() string 9 | GetTypeKey() string 10 | ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) 11 | } 12 | 13 | func supportCallback(item CallBackExtraInfoInterface) { 14 | callBackParseExtraInfoMap[item.GetTypeKey()] = item 15 | } 16 | -------------------------------------------------------------------------------- /callbacks/event上下游共享应用事件回调.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#上下游共享应用事件回调 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventShareChainChange{}) 11 | } 12 | 13 | type EventShareChainChange struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AgentID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AgentID"` 34 | } 35 | 36 | func (EventShareChainChange) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventShareChainChange) GetEventType() string { 41 | return "share_chain_change" 42 | } 43 | 44 | func (EventShareChainChange) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventShareChainChange) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventShareChainChange) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventShareChainChange 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event上报地理位置.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#上报地理位置 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventLOCATION{}) 11 | } 12 | 13 | type EventLOCATION struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | Latitude struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Latitude"` 34 | Longitude struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Longitude"` 37 | Precision struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"Precision"` 40 | AgentID struct { 41 | Text string `xml:",chardata"` 42 | } `xml:"AgentID"` 43 | AppType struct { 44 | Text string `xml:",chardata"` 45 | } `xml:"AppType"` 46 | } 47 | 48 | func (EventLOCATION) GetMessageType() string { 49 | return "event" 50 | } 51 | 52 | func (EventLOCATION) GetEventType() string { 53 | return "LOCATION" 54 | } 55 | 56 | func (EventLOCATION) GetChangeType() string { 57 | return "" 58 | } 59 | 60 | func (m EventLOCATION) GetTypeKey() string { 61 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 62 | } 63 | 64 | func (EventLOCATION) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 65 | var temp EventLOCATION 66 | err := xml.Unmarshal(data, &temp) 67 | return temp, err 68 | } 69 | -------------------------------------------------------------------------------- /callbacks/event任务卡片事件推送.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#任务卡片事件推送 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventTaskcardClick{}) 11 | } 12 | 13 | type EventTaskcardClick struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | EventKey struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"EventKey"` 34 | TaskId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"TaskId"` 37 | AgentId struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"AgentId"` 40 | } 41 | 42 | func (EventTaskcardClick) GetMessageType() string { 43 | return "event" 44 | } 45 | 46 | func (EventTaskcardClick) GetEventType() string { 47 | return "taskcard_click" 48 | } 49 | 50 | func (EventTaskcardClick) GetChangeType() string { 51 | return "" 52 | } 53 | 54 | func (m EventTaskcardClick) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (EventTaskcardClick) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp EventTaskcardClick 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /callbacks/event企业互联共享应用事件回调.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#企业互联共享应用事件回调 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventShareAgentChange{}) 11 | } 12 | 13 | type EventShareAgentChange struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AgentID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AgentID"` 34 | } 35 | 36 | func (EventShareAgentChange) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventShareAgentChange) GetEventType() string { 41 | return "share_agent_change" 42 | } 43 | 44 | func (EventShareAgentChange) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventShareAgentChange) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventShareAgentChange) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventShareAgentChange 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event企业客户标签创建事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92130#企业客户标签创建事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(EventChangeExternalTagCreate{}) 12 | } 13 | 14 | type EventChangeExternalTagCreate struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | ToUserName struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"ToUserName"` 20 | FromUserName struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"FromUserName"` 23 | CreateTime struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"CreateTime"` 26 | MsgType struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"MsgType"` 29 | Event struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Event"` 32 | ID struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"Id"` 35 | TagType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"TagType"` 38 | ChangeType struct { 39 | Text string `xml:",chardata"` 40 | } `xml:"ChangeType"` 41 | } 42 | 43 | func (EventChangeExternalTagCreate) GetMessageType() string { 44 | return "event" 45 | } 46 | 47 | func (EventChangeExternalTagCreate) GetEventType() string { 48 | return "change_external_tag" 49 | } 50 | 51 | func (EventChangeExternalTagCreate) GetChangeType() string { 52 | return "create" 53 | } 54 | 55 | func (m EventChangeExternalTagCreate) GetTypeKey() string { 56 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 57 | } 58 | 59 | func (EventChangeExternalTagCreate) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 60 | var temp EventChangeExternalTagCreate 61 | err := xml.Unmarshal(data, &temp) 62 | return temp, err 63 | } 64 | -------------------------------------------------------------------------------- /callbacks/event企业客户标签删除事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92130#企业客户标签删除事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(EventChangeExternalTagDelete{}) 12 | } 13 | 14 | type EventChangeExternalTagDelete struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | ToUserName struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"ToUserName"` 20 | FromUserName struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"FromUserName"` 23 | CreateTime struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"CreateTime"` 26 | MsgType struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"MsgType"` 29 | Event struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Event"` 32 | ID struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"Id"` 35 | TagType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"TagType"` 38 | ChangeType struct { 39 | Text string `xml:",chardata"` 40 | } `xml:"ChangeType"` 41 | } 42 | 43 | func (EventChangeExternalTagDelete) GetMessageType() string { 44 | return "event" 45 | } 46 | 47 | func (EventChangeExternalTagDelete) GetEventType() string { 48 | return "change_external_tag" 49 | } 50 | 51 | func (EventChangeExternalTagDelete) GetChangeType() string { 52 | return "delete" 53 | } 54 | 55 | func (m EventChangeExternalTagDelete) GetTypeKey() string { 56 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 57 | } 58 | 59 | func (EventChangeExternalTagDelete) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 60 | var temp EventChangeExternalTagDelete 61 | err := xml.Unmarshal(data, &temp) 62 | return temp, err 63 | } 64 | -------------------------------------------------------------------------------- /callbacks/event企业客户标签变更事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92130#企业客户标签变更事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(EventChangeExternalTagUpdate{}) 12 | } 13 | 14 | type EventChangeExternalTagUpdate struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | ToUserName struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"ToUserName"` 20 | FromUserName struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"FromUserName"` 23 | CreateTime struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"CreateTime"` 26 | MsgType struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"MsgType"` 29 | Event struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Event"` 32 | ID struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"Id"` 35 | TagType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"TagType"` 38 | ChangeType struct { 39 | Text string `xml:",chardata"` 40 | } `xml:"ChangeType"` 41 | } 42 | 43 | func (EventChangeExternalTagUpdate) GetMessageType() string { 44 | return "event" 45 | } 46 | 47 | func (EventChangeExternalTagUpdate) GetEventType() string { 48 | return "change_external_tag" 49 | } 50 | 51 | func (EventChangeExternalTagUpdate) GetChangeType() string { 52 | return "update" 53 | } 54 | 55 | func (m EventChangeExternalTagUpdate) GetTypeKey() string { 56 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 57 | } 58 | 59 | func (EventChangeExternalTagUpdate) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 60 | var temp EventChangeExternalTagUpdate 61 | err := xml.Unmarshal(data, &temp) 62 | return temp, err 63 | } 64 | -------------------------------------------------------------------------------- /callbacks/event企业客户标签重排事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92130#企业客户标签重排事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(EventChangeExternalTagShuffle{}) 12 | } 13 | 14 | type EventChangeExternalTagShuffle struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | ToUserName struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"ToUserName"` 20 | FromUserName struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"FromUserName"` 23 | CreateTime struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"CreateTime"` 26 | MsgType struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"MsgType"` 29 | Event struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Event"` 32 | ID struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"Id"` 35 | StrategyId struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"StrategyId"` 38 | ChangeType struct { 39 | Text string `xml:",chardata"` 40 | } `xml:"ChangeType"` 41 | } 42 | 43 | func (EventChangeExternalTagShuffle) GetMessageType() string { 44 | return "event" 45 | } 46 | 47 | func (EventChangeExternalTagShuffle) GetEventType() string { 48 | return "change_external_tag" 49 | } 50 | 51 | func (EventChangeExternalTagShuffle) GetChangeType() string { 52 | return "shuffle" 53 | } 54 | 55 | func (m EventChangeExternalTagShuffle) GetTypeKey() string { 56 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 57 | } 58 | 59 | func (EventChangeExternalTagShuffle) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 60 | var temp EventChangeExternalTagShuffle 61 | err := xml.Unmarshal(data, &temp) 62 | return temp, err 63 | } 64 | -------------------------------------------------------------------------------- /callbacks/event会话存档-产生会话回调事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95039#产生会话回调事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventMsgauditNotify{}) 11 | } 12 | 13 | type EventMsgauditNotify struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | AgentID struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"AgentID"` 31 | Event struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Event"` 34 | } 35 | 36 | func (EventMsgauditNotify) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventMsgauditNotify) GetEventType() string { 41 | return "msgaudit_notify" 42 | } 43 | 44 | func (EventMsgauditNotify) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventMsgauditNotify) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventMsgauditNotify) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventMsgauditNotify 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event使用量已经耗尽事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97299#使用量已经耗尽事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventCustomerAcquisitionBalanceExhausted{}) 11 | } 12 | 13 | type EventCustomerAcquisitionBalanceExhausted struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | } 35 | 36 | func (EventCustomerAcquisitionBalanceExhausted) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventCustomerAcquisitionBalanceExhausted) GetEventType() string { 41 | return "customer_acquisition" 42 | } 43 | 44 | func (EventCustomerAcquisitionBalanceExhausted) GetChangeType() string { 45 | return "balance_exhausted" 46 | } 47 | 48 | func (m EventCustomerAcquisitionBalanceExhausted) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventCustomerAcquisitionBalanceExhausted) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventCustomerAcquisitionBalanceExhausted 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event修改设置工作台自定义开关事件推送.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/94620#修改设置工作台自定义开关事件推送 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventSwitchWorkbenchMode{}) 11 | } 12 | 13 | type EventSwitchWorkbenchMode struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | Mode struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Mode"` 34 | AgentID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"AgentID"` 37 | } 38 | 39 | func (EventSwitchWorkbenchMode) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventSwitchWorkbenchMode) GetEventType() string { 44 | return "switch_workbench_mode" 45 | } 46 | 47 | func (EventSwitchWorkbenchMode) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventSwitchWorkbenchMode) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventSwitchWorkbenchMode) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventSwitchWorkbenchMode 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event删除成员事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90970#删除成员事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventChangeContactDeleteUser{}) 11 | } 12 | 13 | type EventChangeContactDeleteUser struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | UserID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"UserID"` 37 | } 38 | 39 | func (EventChangeContactDeleteUser) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventChangeContactDeleteUser) GetEventType() string { 44 | return "change_contact" 45 | } 46 | 47 | func (EventChangeContactDeleteUser) GetChangeType() string { 48 | return "delete_user" 49 | } 50 | 51 | func (m EventChangeContactDeleteUser) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventChangeContactDeleteUser) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventChangeContactDeleteUser 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event删除获客链接事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97299#删除获客链接事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventCustomerAcquisitionDeleteLink{}) 11 | } 12 | 13 | type EventCustomerAcquisitionDeleteLink struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | LinkId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"LinkId"` 37 | } 38 | 39 | func (EventCustomerAcquisitionDeleteLink) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventCustomerAcquisitionDeleteLink) GetEventType() string { 44 | return "customer_acquisition" 45 | } 46 | 47 | func (EventCustomerAcquisitionDeleteLink) GetChangeType() string { 48 | return "delete_link" 49 | } 50 | 51 | func (m EventCustomerAcquisitionDeleteLink) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventCustomerAcquisitionDeleteLink) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventCustomerAcquisitionDeleteLink 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event删除部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#删除部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventChangeContactDeleteParty{}) 11 | } 12 | 13 | type EventChangeContactDeleteParty struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | ID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Id"` 37 | } 38 | 39 | func (EventChangeContactDeleteParty) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventChangeContactDeleteParty) GetEventType() string { 44 | return "change_contact" 45 | } 46 | 47 | func (EventChangeContactDeleteParty) GetChangeType() string { 48 | return "delete_party" 49 | } 50 | 51 | func (m EventChangeContactDeleteParty) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventChangeContactDeleteParty) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventChangeContactDeleteParty 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event回调事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/94699#回调事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventKfMsgOrEvent{}) 11 | } 12 | 13 | type EventKfMsgOrEvent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | CreateTime struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"CreateTime"` 22 | MsgType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"MsgType"` 25 | Event struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"Event"` 28 | Token struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Token"` 31 | OpenKfId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"OpenKfId"` 34 | } 35 | 36 | func (EventKfMsgOrEvent) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventKfMsgOrEvent) GetEventType() string { 41 | return "kf_msg_or_event" 42 | } 43 | 44 | func (EventKfMsgOrEvent) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventKfMsgOrEvent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventKfMsgOrEvent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventKfMsgOrEvent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event回调异步任务结果.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/96219#回调异步任务结果 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventUploadMediaJobFinish{}) 11 | } 12 | 13 | type EventUploadMediaJobFinish struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | JobId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"JobId"` 34 | } 35 | 36 | func (EventUploadMediaJobFinish) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventUploadMediaJobFinish) GetEventType() string { 41 | return "upload_media_job_finish" 42 | } 43 | 44 | func (EventUploadMediaJobFinish) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventUploadMediaJobFinish) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventUploadMediaJobFinish) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventUploadMediaJobFinish 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event客户群创建事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92130#客户群创建事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(EventChangeExternalChatCreate{}) 12 | } 13 | 14 | type EventChangeExternalChatCreate struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | ToUserName struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"ToUserName"` 20 | FromUserName struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"FromUserName"` 23 | CreateTime struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"CreateTime"` 26 | MsgType struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"MsgType"` 29 | Event struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Event"` 32 | ChatId struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"ChatId"` 35 | ChangeType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ChangeType"` 38 | } 39 | 40 | func (EventChangeExternalChatCreate) GetMessageType() string { 41 | return "event" 42 | } 43 | 44 | func (EventChangeExternalChatCreate) GetEventType() string { 45 | return "change_external_chat" 46 | } 47 | 48 | func (EventChangeExternalChatCreate) GetChangeType() string { 49 | return "create" 50 | } 51 | 52 | func (m EventChangeExternalChatCreate) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (EventChangeExternalChatCreate) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp EventChangeExternalChatCreate 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/event客户群解散事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92130#客户群解散事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(EventChangeExternalChatDismiss{}) 12 | } 13 | 14 | type EventChangeExternalChatDismiss struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | ToUserName struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"ToUserName"` 20 | FromUserName struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"FromUserName"` 23 | CreateTime struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"CreateTime"` 26 | MsgType struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"MsgType"` 29 | Event struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Event"` 32 | ChatId struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"ChatId"` 35 | ChangeType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ChangeType"` 38 | } 39 | 40 | func (EventChangeExternalChatDismiss) GetMessageType() string { 41 | return "event" 42 | } 43 | 44 | func (EventChangeExternalChatDismiss) GetEventType() string { 45 | return "change_external_chat" 46 | } 47 | 48 | func (EventChangeExternalChatDismiss) GetChangeType() string { 49 | return "dismiss" 50 | } 51 | 52 | func (m EventChangeExternalChatDismiss) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (EventChangeExternalChatDismiss) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp EventChangeExternalChatDismiss 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/event客服账号授权变更事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97712#客服账号授权变更事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventKfAccountAuthChange{}) 11 | } 12 | 13 | type EventKfAccountAuthChange struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AuthAddOpenKfId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AuthAddOpenKfId"` 34 | AuthDelOpenKfId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"AuthDelOpenKfId"` 37 | } 38 | 39 | func (EventKfAccountAuthChange) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventKfAccountAuthChange) GetEventType() string { 44 | return "kf_account_auth_change" 45 | } 46 | 47 | func (EventKfAccountAuthChange) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventKfAccountAuthChange) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventKfAccountAuthChange) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventKfAccountAuthChange 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event应用管理员变更通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95038#应用管理员变更通知 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventChangeAppAdmin{}) 11 | } 12 | 13 | type EventChangeAppAdmin struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AgentID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AgentID"` 34 | } 35 | 36 | func (EventChangeAppAdmin) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventChangeAppAdmin) GetEventType() string { 41 | return "change_app_admin" 42 | } 43 | 44 | func (EventChangeAppAdmin) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventChangeAppAdmin) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventChangeAppAdmin) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventChangeAppAdmin 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event应用邮箱接收邮件事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97495#应用邮箱接收邮件事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventAppEmailChangeReceiveEmail{}) 11 | } 12 | 13 | type EventAppEmailChangeReceiveEmail struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | Amount struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Amount"` 37 | } 38 | 39 | func (EventAppEmailChangeReceiveEmail) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventAppEmailChangeReceiveEmail) GetEventType() string { 44 | return "app_email_change" 45 | } 46 | 47 | func (EventAppEmailChangeReceiveEmail) GetChangeType() string { 48 | return "receive_email" 49 | } 50 | 51 | func (m EventAppEmailChangeReceiveEmail) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventAppEmailChangeReceiveEmail) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventAppEmailChangeReceiveEmail 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event微盘容量不足事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95846#微盘容量不足事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventWedriveInsufficientCapacity{}) 11 | } 12 | 13 | type EventWedriveInsufficientCapacity struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | } 32 | 33 | func (EventWedriveInsufficientCapacity) GetMessageType() string { 34 | return "event" 35 | } 36 | 37 | func (EventWedriveInsufficientCapacity) GetEventType() string { 38 | return "wedrive_insufficient_capacity" 39 | } 40 | 41 | func (EventWedriveInsufficientCapacity) GetChangeType() string { 42 | return "" 43 | } 44 | 45 | func (m EventWedriveInsufficientCapacity) GetTypeKey() string { 46 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 47 | } 48 | 49 | func (EventWedriveInsufficientCapacity) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 50 | var temp EventWedriveInsufficientCapacity 51 | err := xml.Unmarshal(data, &temp) 52 | return temp, err 53 | } 54 | -------------------------------------------------------------------------------- /callbacks/event成员关注事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#成员关注及取消关注事件 6 | 7 | func init() { 8 | // 添加可解析的回调事件 9 | supportCallback(EventSubscribe{}) 10 | } 11 | 12 | type EventSubscribe struct { 13 | XMLName xml.Name `xml:"xml"` 14 | Text string `xml:",chardata"` 15 | ToUserName struct { 16 | Text string `xml:",chardata"` 17 | } `xml:"ToUserName"` 18 | FromUserName struct { 19 | Text string `xml:",chardata"` 20 | } `xml:"FromUserName"` 21 | CreateTime struct { 22 | Text string `xml:",chardata"` 23 | } `xml:"CreateTime"` 24 | MsgType struct { 25 | Text string `xml:",chardata"` 26 | } `xml:"MsgType"` 27 | Event struct { 28 | Text string `xml:",chardata"` 29 | } `xml:"Event"` 30 | AgentID struct { 31 | Text string `xml:",chardata"` 32 | } `xml:"AgentID"` 33 | } 34 | 35 | func (EventSubscribe) GetMessageType() string { 36 | return "event" 37 | } 38 | 39 | func (EventSubscribe) GetEventType() string { 40 | return "subscribe" 41 | } 42 | 43 | func (EventSubscribe) GetChangeType() string { 44 | return "" 45 | } 46 | 47 | func (m EventSubscribe) GetTypeKey() string { 48 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 49 | } 50 | 51 | func (EventSubscribe) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 52 | var temp EventSubscribe 53 | err := xml.Unmarshal(data, &temp) 54 | return temp, err 55 | } 56 | -------------------------------------------------------------------------------- /callbacks/event成员取消关注事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#成员关注及取消关注事件 6 | 7 | func init() { 8 | // 添加可解析的回调事件 9 | supportCallback(EventUnsubscribe{}) 10 | } 11 | 12 | type EventUnsubscribe struct { 13 | XMLName xml.Name `xml:"xml"` 14 | Text string `xml:",chardata"` 15 | ToUserName struct { 16 | Text string `xml:",chardata"` 17 | } `xml:"ToUserName"` 18 | FromUserName struct { 19 | Text string `xml:",chardata"` 20 | } `xml:"FromUserName"` 21 | CreateTime struct { 22 | Text string `xml:",chardata"` 23 | } `xml:"CreateTime"` 24 | MsgType struct { 25 | Text string `xml:",chardata"` 26 | } `xml:"MsgType"` 27 | Event struct { 28 | Text string `xml:",chardata"` 29 | } `xml:"Event"` 30 | AgentID struct { 31 | Text string `xml:",chardata"` 32 | } `xml:"AgentID"` 33 | } 34 | 35 | func (EventUnsubscribe) GetMessageType() string { 36 | return "event" 37 | } 38 | 39 | func (EventUnsubscribe) GetEventType() string { 40 | return "unsubscribe" 41 | } 42 | 43 | func (EventUnsubscribe) GetChangeType() string { 44 | return "" 45 | } 46 | 47 | func (m EventUnsubscribe) GetTypeKey() string { 48 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 49 | } 50 | 51 | func (EventUnsubscribe) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 52 | var temp EventUnsubscribe 53 | err := xml.Unmarshal(data, &temp) 54 | return temp, err 55 | } 56 | -------------------------------------------------------------------------------- /callbacks/event接口调用许可-接口许可失效通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95716#接口许可失效通知 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventUnlicensedNotify{}) 11 | } 12 | 13 | type EventUnlicensedNotify struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AgentID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AgentID"` 34 | } 35 | 36 | func (EventUnlicensedNotify) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventUnlicensedNotify) GetEventType() string { 41 | return "unlicensed_notify" 42 | } 43 | 44 | func (EventUnlicensedNotify) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventUnlicensedNotify) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventUnlicensedNotify) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventUnlicensedNotify 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event日程-修改日历事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/93704#修改日历事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventModifyCalendar{}) 11 | } 12 | 13 | type EventModifyCalendar struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | CalId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"CalId"` 34 | } 35 | 36 | func (EventModifyCalendar) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventModifyCalendar) GetEventType() string { 41 | return "modify_calendar" 42 | } 43 | 44 | func (EventModifyCalendar) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventModifyCalendar) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventModifyCalendar) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventModifyCalendar 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event日程-修改日程事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/93704#修改日程事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventModifySchedule{}) 11 | } 12 | 13 | type EventModifySchedule struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | CalId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"CalId"` 34 | ScheduleId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"ScheduleId"` 37 | } 38 | 39 | func (EventModifySchedule) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventModifySchedule) GetEventType() string { 44 | return "modify_schedule" 45 | } 46 | 47 | func (EventModifySchedule) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventModifySchedule) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventModifySchedule) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventModifySchedule 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event日程-删除日历事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/93704#删除日历事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventDeleteCalendar{}) 11 | } 12 | 13 | type EventDeleteCalendar struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | CalId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"CalId"` 34 | } 35 | 36 | func (EventDeleteCalendar) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventDeleteCalendar) GetEventType() string { 41 | return "delete_calendar" 42 | } 43 | 44 | func (EventDeleteCalendar) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventDeleteCalendar) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventDeleteCalendar) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventDeleteCalendar 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event日程-删除日程事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/93704#删除日程事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventDeleteSchedule{}) 11 | } 12 | 13 | type EventDeleteSchedule struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | CalId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"CalId"` 34 | ScheduleId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"ScheduleId"` 37 | } 38 | 39 | func (EventDeleteSchedule) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventDeleteSchedule) GetEventType() string { 44 | return "delete_schedule" 45 | } 46 | 47 | func (EventDeleteSchedule) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventDeleteSchedule) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventDeleteSchedule) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventDeleteSchedule 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event日程-添加日程事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/93704#添加日程事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventAddSchedule{}) 11 | } 12 | 13 | type EventAddSchedule struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | CalId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"CalId"` 34 | ScheduleId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"ScheduleId"` 37 | } 38 | 39 | func (EventAddSchedule) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventAddSchedule) GetEventType() string { 44 | return "add_schedule" 45 | } 46 | 47 | func (EventAddSchedule) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventAddSchedule) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventAddSchedule) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventAddSchedule 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event更新部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#更新部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventChangeContactUpdateParty{}) 11 | } 12 | 13 | type EventChangeContactUpdateParty struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | ID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Id"` 37 | Name struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"Name"` 40 | ParentId struct { 41 | Text string `xml:",chardata"` 42 | } `xml:"ParentId"` 43 | } 44 | 45 | func (EventChangeContactUpdateParty) GetMessageType() string { 46 | return "event" 47 | } 48 | 49 | func (EventChangeContactUpdateParty) GetEventType() string { 50 | return "change_contact" 51 | } 52 | 53 | func (EventChangeContactUpdateParty) GetChangeType() string { 54 | return "update_party" 55 | } 56 | 57 | func (m EventChangeContactUpdateParty) GetTypeKey() string { 58 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 59 | } 60 | 61 | func (EventChangeContactUpdateParty) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 62 | var temp EventChangeContactUpdateParty 63 | err := xml.Unmarshal(data, &temp) 64 | return temp, err 65 | } 66 | -------------------------------------------------------------------------------- /callbacks/event点击菜单拉取消息的事件推送.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#点击菜单拉取消息的事件推送 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventClick{}) 11 | } 12 | 13 | type EventClick struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | EventKey struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"EventKey"` 34 | AgentID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"AgentID"` 37 | } 38 | 39 | func (EventClick) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventClick) GetEventType() string { 44 | return "click" 45 | } 46 | 47 | func (EventClick) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventClick) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventClick) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventClick 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event点击菜单跳转链接的事件推送.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#点击菜单跳转链接的事件推送 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventView{}) 11 | } 12 | 13 | type EventView struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | EventKey struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"EventKey"` 34 | AgentID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"AgentID"` 37 | } 38 | 39 | func (EventView) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventView) GetEventType() string { 44 | return "view" 45 | } 46 | 47 | func (EventView) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventView) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventView) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventView 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event直播回调事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/94308#直播回调事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventLivingStatusChange{}) 11 | } 12 | 13 | type EventLivingStatusChange struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | LivingId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"LivingId"` 34 | Status struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Status"` 37 | AgentID struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"AgentID"` 40 | } 41 | 42 | func (EventLivingStatusChange) GetMessageType() string { 43 | return "event" 44 | } 45 | 46 | func (EventLivingStatusChange) GetEventType() string { 47 | return "living_status_change" 48 | } 49 | 50 | func (EventLivingStatusChange) GetChangeType() string { 51 | return "" 52 | } 53 | 54 | func (m EventLivingStatusChange) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (EventLivingStatusChange) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp EventLivingStatusChange 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /callbacks/event获客链接不可用事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97299#获客链接不可用事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventCustomerAcquisitionLinkUnavailable{}) 11 | } 12 | 13 | type EventCustomerAcquisitionLinkUnavailable struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | LinkId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"LinkId"` 37 | } 38 | 39 | func (EventCustomerAcquisitionLinkUnavailable) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventCustomerAcquisitionLinkUnavailable) GetEventType() string { 44 | return "customer_acquisition" 45 | } 46 | 47 | func (EventCustomerAcquisitionLinkUnavailable) GetChangeType() string { 48 | return "link_unavailable" 49 | } 50 | 51 | func (m EventCustomerAcquisitionLinkUnavailable) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventCustomerAcquisitionLinkUnavailable) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventCustomerAcquisitionLinkUnavailable 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event获客额度即将耗尽事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97299#获客额度即将耗尽事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventCustomerAcquisitionBalanceLow{}) 11 | } 12 | 13 | type EventCustomerAcquisitionBalanceLow struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | } 35 | 36 | func (EventCustomerAcquisitionBalanceLow) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventCustomerAcquisitionBalanceLow) GetEventType() string { 41 | return "customer_acquisition" 42 | } 43 | 44 | func (EventCustomerAcquisitionBalanceLow) GetChangeType() string { 45 | return "balance_low" 46 | } 47 | 48 | func (m EventCustomerAcquisitionBalanceLow) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventCustomerAcquisitionBalanceLow) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventCustomerAcquisitionBalanceLow 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event进入应用.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#进入应用 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventEnterAgent{}) 11 | } 12 | 13 | type EventEnterAgent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | EventKey struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"EventKey"` 34 | AgentID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"AgentID"` 37 | } 38 | 39 | func (EventEnterAgent) GetMessageType() string { 40 | return "event" 41 | } 42 | 43 | func (EventEnterAgent) GetEventType() string { 44 | return "enter_agent" 45 | } 46 | 47 | func (EventEnterAgent) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m EventEnterAgent) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (EventEnterAgent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp EventEnterAgent 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/event通过获客链接申请好友事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97299#通过获客链接申请好友事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(EventCustomerAcquisitionFriendRequest{}) 11 | } 12 | 13 | type EventCustomerAcquisitionFriendRequest struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | ChangeType struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ChangeType"` 34 | LinkId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"LinkId"` 37 | State struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"State"` 40 | } 41 | 42 | func (EventCustomerAcquisitionFriendRequest) GetMessageType() string { 43 | return "event" 44 | } 45 | 46 | func (EventCustomerAcquisitionFriendRequest) GetEventType() string { 47 | return "customer_acquisition" 48 | } 49 | 50 | func (EventCustomerAcquisitionFriendRequest) GetChangeType() string { 51 | return "friend_request" 52 | } 53 | 54 | func (m EventCustomerAcquisitionFriendRequest) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (EventCustomerAcquisitionFriendRequest) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp EventCustomerAcquisitionFriendRequest 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /callbacks/event长期未使用应用临时停用事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#长期未使用应用临时停用事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventCloseInactiveAgent{}) 11 | } 12 | 13 | type EventCloseInactiveAgent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AgentID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AgentID"` 34 | } 35 | 36 | func (EventCloseInactiveAgent) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventCloseInactiveAgent) GetEventType() string { 41 | return "close_inactive_agent" 42 | } 43 | 44 | func (EventCloseInactiveAgent) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventCloseInactiveAgent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventCloseInactiveAgent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventCloseInactiveAgent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/event长期未使用应用重新启用事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90376#长期未使用应用重新启用事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(EventReopenInactiveAgent{}) 11 | } 12 | 13 | type EventReopenInactiveAgent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Event struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Event"` 31 | AgentID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"AgentID"` 34 | } 35 | 36 | func (EventReopenInactiveAgent) GetMessageType() string { 37 | return "event" 38 | } 39 | 40 | func (EventReopenInactiveAgent) GetEventType() string { 41 | return "reopen_inactive_agent" 42 | } 43 | 44 | func (EventReopenInactiveAgent) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m EventReopenInactiveAgent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (EventReopenInactiveAgent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp EventReopenInactiveAgent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/image图片消息.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90375#图片消息 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(Image{}) 11 | } 12 | 13 | type Image struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | PicUrl struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"PicUrl"` 31 | MediaId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"MediaId"` 34 | MsgId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"MsgId"` 37 | AgentID struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"AgentID"` 40 | } 41 | 42 | func (Image) GetMessageType() string { 43 | return "image" 44 | } 45 | 46 | func (Image) GetEventType() string { 47 | return "" 48 | } 49 | 50 | func (Image) GetChangeType() string { 51 | return "" 52 | } 53 | 54 | func (m Image) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (Image) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp Image 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /callbacks/link链接消息.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90375#链接消息 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(Link{}) 11 | } 12 | 13 | type Link struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Title struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Title"` 31 | Description struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Description"` 34 | URL struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Url"` 37 | PicUrl struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"PicUrl"` 40 | MsgId struct { 41 | Text string `xml:",chardata"` 42 | } `xml:"MsgId"` 43 | AgentID struct { 44 | Text string `xml:",chardata"` 45 | } `xml:"AgentID"` 46 | } 47 | 48 | func (Link) GetMessageType() string { 49 | return "link" 50 | } 51 | 52 | func (Link) GetEventType() string { 53 | return "" 54 | } 55 | 56 | func (Link) GetChangeType() string { 57 | return "" 58 | } 59 | 60 | func (m Link) GetTypeKey() string { 61 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 62 | } 63 | 64 | func (Link) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 65 | var temp Link 66 | err := xml.Unmarshal(data, &temp) 67 | return temp, err 68 | } 69 | -------------------------------------------------------------------------------- /callbacks/location位置消息.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90375#位置消息 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(Location{}) 11 | } 12 | 13 | type Location struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | LocationX struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Location_X"` 31 | LocationY struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Location_Y"` 34 | Scale struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Scale"` 37 | Label struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"Label"` 40 | MsgId struct { 41 | Text string `xml:",chardata"` 42 | } `xml:"MsgId"` 43 | AgentID struct { 44 | Text string `xml:",chardata"` 45 | } `xml:"AgentID"` 46 | AppType struct { 47 | Text string `xml:",chardata"` 48 | } `xml:"AppType"` 49 | } 50 | 51 | func (Location) GetMessageType() string { 52 | return "location" 53 | } 54 | 55 | func (Location) GetEventType() string { 56 | return "" 57 | } 58 | 59 | func (Location) GetChangeType() string { 60 | return "" 61 | } 62 | 63 | func (m Location) GetTypeKey() string { 64 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 65 | } 66 | 67 | func (Location) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 68 | var temp Location 69 | err := xml.Unmarshal(data, &temp) 70 | return temp, err 71 | } 72 | -------------------------------------------------------------------------------- /callbacks/text文本消息.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90375#文本消息 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(Text{}) 11 | } 12 | 13 | type Text struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | Content struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"Content"` 31 | MsgId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"MsgId"` 34 | AgentID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"AgentID"` 37 | } 38 | 39 | func (Text) GetMessageType() string { 40 | return "text" 41 | } 42 | 43 | func (Text) GetEventType() string { 44 | return "" 45 | } 46 | 47 | func (Text) GetChangeType() string { 48 | return "" 49 | } 50 | 51 | func (m Text) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (Text) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp Text 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/third企业客户标签创建事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#企业客户标签创建事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalTagCreate{}) 12 | } 13 | 14 | type ThirdChangeExternalTagCreate struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ID struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Id"` 32 | TagType struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"TagType"` 35 | ChangeType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ChangeType"` 38 | } 39 | 40 | func (ThirdChangeExternalTagCreate) GetMessageType() string { 41 | return "third" 42 | } 43 | 44 | func (ThirdChangeExternalTagCreate) GetEventType() string { 45 | return "change_external_tag" 46 | } 47 | 48 | func (ThirdChangeExternalTagCreate) GetChangeType() string { 49 | return "create" 50 | } 51 | 52 | func (m ThirdChangeExternalTagCreate) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (ThirdChangeExternalTagCreate) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp ThirdChangeExternalTagCreate 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/third企业客户标签删除事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#企业客户标签删除事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalTagDelete{}) 12 | } 13 | 14 | type ThirdChangeExternalTagDelete struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ID struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Id"` 32 | TagType struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"TagType"` 35 | ChangeType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ChangeType"` 38 | } 39 | 40 | func (ThirdChangeExternalTagDelete) GetMessageType() string { 41 | return "third" 42 | } 43 | 44 | func (ThirdChangeExternalTagDelete) GetEventType() string { 45 | return "change_external_tag" 46 | } 47 | 48 | func (ThirdChangeExternalTagDelete) GetChangeType() string { 49 | return "delete" 50 | } 51 | 52 | func (m ThirdChangeExternalTagDelete) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (ThirdChangeExternalTagDelete) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp ThirdChangeExternalTagDelete 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/third企业客户标签变更事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#企业客户标签变更事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalTagUpdate{}) 12 | } 13 | 14 | type ThirdChangeExternalTagUpdate struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ID struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Id"` 32 | TagType struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"TagType"` 35 | ChangeType struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ChangeType"` 38 | } 39 | 40 | func (ThirdChangeExternalTagUpdate) GetMessageType() string { 41 | return "third" 42 | } 43 | 44 | func (ThirdChangeExternalTagUpdate) GetEventType() string { 45 | return "change_external_tag" 46 | } 47 | 48 | func (ThirdChangeExternalTagUpdate) GetChangeType() string { 49 | return "update" 50 | } 51 | 52 | func (m ThirdChangeExternalTagUpdate) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (ThirdChangeExternalTagUpdate) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp ThirdChangeExternalTagUpdate 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/third企业客户标签重排事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#企业客户标签重排事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalTagShuffle{}) 12 | } 13 | 14 | type ThirdChangeExternalTagShuffle struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ID struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"Id"` 32 | ChangeType struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"ChangeType"` 35 | } 36 | 37 | func (ThirdChangeExternalTagShuffle) GetMessageType() string { 38 | return "third" 39 | } 40 | 41 | func (ThirdChangeExternalTagShuffle) GetEventType() string { 42 | return "change_external_tag" 43 | } 44 | 45 | func (ThirdChangeExternalTagShuffle) GetChangeType() string { 46 | return "shuffle" 47 | } 48 | 49 | func (m ThirdChangeExternalTagShuffle) GetTypeKey() string { 50 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 51 | } 52 | 53 | func (ThirdChangeExternalTagShuffle) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 54 | var temp ThirdChangeExternalTagShuffle 55 | err := xml.Unmarshal(data, &temp) 56 | return temp, err 57 | } 58 | -------------------------------------------------------------------------------- /callbacks/third会话存档-产生会话回调事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95039#产生会话回调事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdMsgauditNotify{}) 11 | } 12 | 13 | type ThirdMsgauditNotify struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | AgentID struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"AgentID"` 31 | Event struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Event"` 34 | } 35 | 36 | func (ThirdMsgauditNotify) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdMsgauditNotify) GetEventType() string { 41 | return "msgaudit_notify" 42 | } 43 | 44 | func (ThirdMsgauditNotify) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m ThirdMsgauditNotify) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdMsgauditNotify) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdMsgauditNotify 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third删除成员事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92654#删除成员事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeContactDeleteUser{}) 11 | } 12 | 13 | type ThirdChangeContactDeleteUser struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | UserID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"UserID"` 34 | OpenUserID struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"OpenUserID"` 37 | } 38 | 39 | func (ThirdChangeContactDeleteUser) GetMessageType() string { 40 | return "third" 41 | } 42 | 43 | func (ThirdChangeContactDeleteUser) GetEventType() string { 44 | return "change_contact" 45 | } 46 | 47 | func (ThirdChangeContactDeleteUser) GetChangeType() string { 48 | return "delete_user" 49 | } 50 | 51 | func (m ThirdChangeContactDeleteUser) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (ThirdChangeContactDeleteUser) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp ThirdChangeContactDeleteUser 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/third删除跟进成员事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#删除跟进成员事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalContactDelFollowUser{}) 12 | } 13 | 14 | type ThirdChangeExternalContactDelFollowUser struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ChangeType struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"ChangeType"` 32 | UserID struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"UserID"` 35 | ExternalUserID struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ExternalUserID"` 38 | } 39 | 40 | func (ThirdChangeExternalContactDelFollowUser) GetMessageType() string { 41 | return "third" 42 | } 43 | 44 | func (ThirdChangeExternalContactDelFollowUser) GetEventType() string { 45 | return "change_external_contact" 46 | } 47 | 48 | func (ThirdChangeExternalContactDelFollowUser) GetChangeType() string { 49 | return "del_follow_user" 50 | } 51 | 52 | func (m ThirdChangeExternalContactDelFollowUser) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (ThirdChangeExternalContactDelFollowUser) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp ThirdChangeExternalContactDelFollowUser 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/third删除部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92655#删除部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeContactDeleteParty{}) 11 | } 12 | 13 | type ThirdChangeContactDeleteParty struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeContactDeleteParty) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeContactDeleteParty) GetEventType() string { 41 | return "change_contact" 42 | } 43 | 44 | func (ThirdChangeContactDeleteParty) GetChangeType() string { 45 | return "delete_party" 46 | } 47 | 48 | func (m ThirdChangeContactDeleteParty) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeContactDeleteParty) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeContactDeleteParty 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third取消授权通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/90642#取消授权通知 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdCancelAuth{}) 12 | } 13 | 14 | type ThirdCancelAuth struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | InfoType struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"InfoType"` 23 | TimeStamp struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"TimeStamp"` 26 | AuthCorpId struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"AuthCorpId"` 29 | } 30 | 31 | func (ThirdCancelAuth) GetMessageType() string { 32 | return "third" 33 | } 34 | 35 | func (ThirdCancelAuth) GetEventType() string { 36 | return "cancel_auth" 37 | } 38 | 39 | func (ThirdCancelAuth) GetChangeType() string { 40 | return "" 41 | } 42 | 43 | func (m ThirdCancelAuth) GetTypeKey() string { 44 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 45 | } 46 | 47 | func (ThirdCancelAuth) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 48 | var temp ThirdCancelAuth 49 | err := xml.Unmarshal(data, &temp) 50 | return temp, err 51 | } 52 | -------------------------------------------------------------------------------- /callbacks/third变更授权通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/90642#变更授权通知 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeAuth{}) 12 | } 13 | 14 | type ThirdChangeAuth struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | InfoType struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"InfoType"` 23 | TimeStamp struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"TimeStamp"` 26 | AuthCorpId struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"AuthCorpId"` 29 | } 30 | 31 | func (ThirdChangeAuth) GetMessageType() string { 32 | return "third" 33 | } 34 | 35 | func (ThirdChangeAuth) GetEventType() string { 36 | return "change_auth" 37 | } 38 | 39 | func (ThirdChangeAuth) GetChangeType() string { 40 | return "" 41 | } 42 | 43 | func (m ThirdChangeAuth) GetTypeKey() string { 44 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 45 | } 46 | 47 | func (ThirdChangeAuth) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 48 | var temp ThirdChangeAuth 49 | err := xml.Unmarshal(data, &temp) 50 | return temp, err 51 | } 52 | -------------------------------------------------------------------------------- /callbacks/third同意授权转换external_userid事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 文档地址 6 | // https://open.work.weixin.qq.com/api/doc/35747#%E5%90%8C%E6%84%8F%E6%8E%88%E6%9D%83%E8%BD%AC%E6%8D%A2external_userid%E4%BA%8B%E4%BB%B6 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdAgreeExternalUseridMigration{}) 11 | } 12 | 13 | type ThirdAgreeExternalUseridMigration struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | AuthCorpId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"AuthCorpId"` 19 | InfoType struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"InfoType"` 22 | ServiceCorpId struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"ServiceCorpId"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | } 29 | 30 | func (ThirdAgreeExternalUseridMigration) GetMessageType() string { 31 | return "third" 32 | } 33 | 34 | func (ThirdAgreeExternalUseridMigration) GetEventType() string { 35 | return "agree_external_userid_migration" 36 | } 37 | 38 | func (ThirdAgreeExternalUseridMigration) GetChangeType() string { 39 | return "" 40 | } 41 | 42 | func (m ThirdAgreeExternalUseridMigration) GetTypeKey() string { 43 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 44 | } 45 | 46 | func (ThirdAgreeExternalUseridMigration) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 47 | var temp ThirdAgreeExternalUseridMigration 48 | err := xml.Unmarshal(data, &temp) 49 | return temp, err 50 | } 51 | -------------------------------------------------------------------------------- /callbacks/third客户接替失败事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#客户接替失败事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalContactTransferFail{}) 12 | } 13 | 14 | type ThirdChangeExternalContactTransferFail struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ChangeType struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"ChangeType"` 32 | FailReason struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"FailReason"` 35 | UserID struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"UserID"` 38 | ExternalUserID struct { 39 | Text string `xml:",chardata"` 40 | } `xml:"ExternalUserID"` 41 | } 42 | 43 | func (ThirdChangeExternalContactTransferFail) GetMessageType() string { 44 | return "third" 45 | } 46 | 47 | func (ThirdChangeExternalContactTransferFail) GetEventType() string { 48 | return "change_external_contact" 49 | } 50 | 51 | func (ThirdChangeExternalContactTransferFail) GetChangeType() string { 52 | return "transfer_fail" 53 | } 54 | 55 | func (m ThirdChangeExternalContactTransferFail) GetTypeKey() string { 56 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 57 | } 58 | 59 | func (ThirdChangeExternalContactTransferFail) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 60 | var temp ThirdChangeExternalContactTransferFail 61 | err := xml.Unmarshal(data, &temp) 62 | return temp, err 63 | } 64 | -------------------------------------------------------------------------------- /callbacks/third客户群创建事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#客户群创建事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalChatCreate{}) 12 | } 13 | 14 | type ThirdChangeExternalChatCreate struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ChatId struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"ChatId"` 32 | ChangeType struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"ChangeType"` 35 | } 36 | 37 | func (ThirdChangeExternalChatCreate) GetMessageType() string { 38 | return "third" 39 | } 40 | 41 | func (ThirdChangeExternalChatCreate) GetEventType() string { 42 | return "change_external_chat" 43 | } 44 | 45 | func (ThirdChangeExternalChatCreate) GetChangeType() string { 46 | return "create" 47 | } 48 | 49 | func (m ThirdChangeExternalChatCreate) GetTypeKey() string { 50 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 51 | } 52 | 53 | func (ThirdChangeExternalChatCreate) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 54 | var temp ThirdChangeExternalChatCreate 55 | err := xml.Unmarshal(data, &temp) 56 | return temp, err 57 | } 58 | -------------------------------------------------------------------------------- /callbacks/third客户群解散事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#客户群解散事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalChatDismiss{}) 12 | } 13 | 14 | type ThirdChangeExternalChatDismiss struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ChatId struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"ChatId"` 32 | ChangeType struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"ChangeType"` 35 | } 36 | 37 | func (ThirdChangeExternalChatDismiss) GetMessageType() string { 38 | return "third" 39 | } 40 | 41 | func (ThirdChangeExternalChatDismiss) GetEventType() string { 42 | return "change_external_chat" 43 | } 44 | 45 | func (ThirdChangeExternalChatDismiss) GetChangeType() string { 46 | return "dismiss" 47 | } 48 | 49 | func (m ThirdChangeExternalChatDismiss) GetTypeKey() string { 50 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 51 | } 52 | 53 | func (ThirdChangeExternalChatDismiss) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 54 | var temp ThirdChangeExternalChatDismiss 55 | err := xml.Unmarshal(data, &temp) 56 | return temp, err 57 | } 58 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-创建部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92050#创建部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactCreateDepartment{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactCreateDepartment struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactCreateDepartment) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactCreateDepartment) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactCreateDepartment) GetChangeType() string { 45 | return "create_department" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactCreateDepartment) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactCreateDepartment) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactCreateDepartment 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-删除学生事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#删除学生事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactDeleteStudent{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactDeleteStudent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactDeleteStudent) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactDeleteStudent) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactDeleteStudent) GetChangeType() string { 45 | return "delete_student" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactDeleteStudent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactDeleteStudent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactDeleteStudent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-删除家长事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#删除家长事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactDeleteParent{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactDeleteParent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactDeleteParent) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactDeleteParent) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactDeleteParent) GetChangeType() string { 45 | return "delete_parent" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactDeleteParent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactDeleteParent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactDeleteParent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-删除部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92050#删除部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactDeleteDepartment{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactDeleteDepartment struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactDeleteDepartment) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactDeleteDepartment) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactDeleteDepartment) GetChangeType() string { 45 | return "delete_department" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactDeleteDepartment) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactDeleteDepartment) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactDeleteDepartment 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-家长关注事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#家长关注事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactSubscribe{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactSubscribe struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactSubscribe) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactSubscribe) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactSubscribe) GetChangeType() string { 45 | return "subscribe" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactSubscribe) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactSubscribe) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactSubscribe 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-家长取消关注事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#家长取消关注事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactUnsubscribe{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactUnsubscribe struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactUnsubscribe) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactUnsubscribe) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactUnsubscribe) GetChangeType() string { 45 | return "unsubscribe" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactUnsubscribe) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactUnsubscribe) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactUnsubscribe 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-新增学生事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#新增学生事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactCreateStudent{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactCreateStudent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactCreateStudent) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactCreateStudent) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactCreateStudent) GetChangeType() string { 45 | return "create_student" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactCreateStudent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactCreateStudent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactCreateStudent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-新增家长事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#新增家长事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactCreateParent{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactCreateParent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactCreateParent) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactCreateParent) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactCreateParent) GetChangeType() string { 45 | return "create_parent" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactCreateParent) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactCreateParent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactCreateParent 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-更新部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92050#更新部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactUpdateDepartment{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactUpdateDepartment struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | } 35 | 36 | func (ThirdChangeSchoolContactUpdateDepartment) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeSchoolContactUpdateDepartment) GetEventType() string { 41 | return "change_school_contact" 42 | } 43 | 44 | func (ThirdChangeSchoolContactUpdateDepartment) GetChangeType() string { 45 | return "update_department" 46 | } 47 | 48 | func (m ThirdChangeSchoolContactUpdateDepartment) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeSchoolContactUpdateDepartment) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeSchoolContactUpdateDepartment 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-编辑学生事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#编辑学生事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactUpdateStudent{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactUpdateStudent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | NewId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"NewId"` 37 | } 38 | 39 | func (ThirdChangeSchoolContactUpdateStudent) GetMessageType() string { 40 | return "third" 41 | } 42 | 43 | func (ThirdChangeSchoolContactUpdateStudent) GetEventType() string { 44 | return "change_school_contact" 45 | } 46 | 47 | func (ThirdChangeSchoolContactUpdateStudent) GetChangeType() string { 48 | return "update_student" 49 | } 50 | 51 | func (m ThirdChangeSchoolContactUpdateStudent) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (ThirdChangeSchoolContactUpdateStudent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp ThirdChangeSchoolContactUpdateStudent 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/third家校沟通-编辑家长事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92051#编辑家长事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeSchoolContactUpdateParent{}) 11 | } 12 | 13 | type ThirdChangeSchoolContactUpdateParent struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | NewId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"NewId"` 37 | } 38 | 39 | func (ThirdChangeSchoolContactUpdateParent) GetMessageType() string { 40 | return "third" 41 | } 42 | 43 | func (ThirdChangeSchoolContactUpdateParent) GetEventType() string { 44 | return "change_school_contact" 45 | } 46 | 47 | func (ThirdChangeSchoolContactUpdateParent) GetChangeType() string { 48 | return "update_parent" 49 | } 50 | 51 | func (m ThirdChangeSchoolContactUpdateParent) GetTypeKey() string { 52 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 53 | } 54 | 55 | func (ThirdChangeSchoolContactUpdateParent) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 56 | var temp ThirdChangeSchoolContactUpdateParent 57 | err := xml.Unmarshal(data, &temp) 58 | return temp, err 59 | } 60 | -------------------------------------------------------------------------------- /callbacks/third授权成功通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/90642#授权成功通知 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdCreateAuth{}) 12 | } 13 | 14 | type ThirdCreateAuth struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCode struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCode"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | State struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"State"` 32 | } 33 | 34 | func (ThirdCreateAuth) GetMessageType() string { 35 | return "third" 36 | } 37 | 38 | func (ThirdCreateAuth) GetEventType() string { 39 | return "create_auth" 40 | } 41 | 42 | func (ThirdCreateAuth) GetChangeType() string { 43 | return "" 44 | } 45 | 46 | func (m ThirdCreateAuth) GetTypeKey() string { 47 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 48 | } 49 | 50 | func (ThirdCreateAuth) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 51 | var temp ThirdCreateAuth 52 | err := xml.Unmarshal(data, &temp) 53 | return temp, err 54 | } 55 | -------------------------------------------------------------------------------- /callbacks/third授权组织架构权限通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/97378#授权组织架构权限通知 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdCorpArchAuth{}) 11 | } 12 | 13 | type ThirdCorpArchAuth struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | } 29 | 30 | func (ThirdCorpArchAuth) GetMessageType() string { 31 | return "third" 32 | } 33 | 34 | func (ThirdCorpArchAuth) GetEventType() string { 35 | return "corp_arch_auth" 36 | } 37 | 38 | func (ThirdCorpArchAuth) GetChangeType() string { 39 | return "" 40 | } 41 | 42 | func (m ThirdCorpArchAuth) GetTypeKey() string { 43 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 44 | } 45 | 46 | func (ThirdCorpArchAuth) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 47 | var temp ThirdCorpArchAuth 48 | err := xml.Unmarshal(data, &temp) 49 | return temp, err 50 | } 51 | -------------------------------------------------------------------------------- /callbacks/third接口调用许可-支付成功通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95804#支付成功通知 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdLicensePaySuccess{}) 11 | } 12 | 13 | type ThirdLicensePaySuccess struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ServiceCorpId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ServiceCorpId"` 19 | InfoType struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"InfoType"` 22 | AuthCorpId struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"AuthCorpId"` 25 | OrderId struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"OrderId"` 28 | BuyerUserId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"BuyerUserId"` 31 | TimeStamp struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"TimeStamp"` 34 | } 35 | 36 | func (ThirdLicensePaySuccess) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdLicensePaySuccess) GetEventType() string { 41 | return "license_pay_success" 42 | } 43 | 44 | func (ThirdLicensePaySuccess) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m ThirdLicensePaySuccess) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdLicensePaySuccess) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdLicensePaySuccess 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third接口调用许可-退款结果通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/95805#退款结果通知 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdLicenseRefund{}) 11 | } 12 | 13 | type ThirdLicenseRefund struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ServiceCorpId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ServiceCorpId"` 19 | InfoType struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"InfoType"` 22 | AuthCorpId struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"AuthCorpId"` 25 | OrderId struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"OrderId"` 28 | OrderStatus struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"OrderStatus"` 31 | TimeStamp struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"TimeStamp"` 34 | } 35 | 36 | func (ThirdLicenseRefund) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdLicenseRefund) GetEventType() string { 41 | return "license_refund" 42 | } 43 | 44 | func (ThirdLicenseRefund) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m ThirdLicenseRefund) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdLicenseRefund) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdLicenseRefund 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third推送suite_ticket.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/90628#推送suite_ticket 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdSuiteTicket{}) 12 | } 13 | 14 | type ThirdSuiteTicket struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | InfoType struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"InfoType"` 23 | TimeStamp struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"TimeStamp"` 26 | SuiteTicket struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"SuiteTicket"` 29 | } 30 | 31 | func (ThirdSuiteTicket) GetMessageType() string { 32 | return "third" 33 | } 34 | 35 | func (ThirdSuiteTicket) GetEventType() string { 36 | return "suite_ticket" 37 | } 38 | 39 | func (ThirdSuiteTicket) GetChangeType() string { 40 | return "" 41 | } 42 | 43 | func (m ThirdSuiteTicket) GetTypeKey() string { 44 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 45 | } 46 | 47 | func (ThirdSuiteTicket) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 48 | var temp ThirdSuiteTicket 49 | err := xml.Unmarshal(data, &temp) 50 | return temp, err 51 | } 52 | -------------------------------------------------------------------------------- /callbacks/third收银台-下单成功通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/91929#下单成功通知 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdOpenOrder{}) 11 | } 12 | 13 | type ThirdOpenOrder struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | PaidCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"PaidCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | OrderId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"OrderId"` 31 | OperatorId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"OperatorId"` 34 | } 35 | 36 | func (ThirdOpenOrder) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdOpenOrder) GetEventType() string { 41 | return "open_order" 42 | } 43 | 44 | func (ThirdOpenOrder) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m ThirdOpenOrder) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdOpenOrder) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdOpenOrder 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third收银台-应用版本变更通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/91933#应用版本变更通知 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdChangeEditon{}) 11 | } 12 | 13 | type ThirdChangeEditon struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | PaidCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"PaidCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | } 29 | 30 | func (ThirdChangeEditon) GetMessageType() string { 31 | return "third" 32 | } 33 | 34 | func (ThirdChangeEditon) GetEventType() string { 35 | return "change_editon" 36 | } 37 | 38 | func (ThirdChangeEditon) GetChangeType() string { 39 | return "" 40 | } 41 | 42 | func (m ThirdChangeEditon) GetTypeKey() string { 43 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 44 | } 45 | 46 | func (ThirdChangeEditon) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 47 | var temp ThirdChangeEditon 48 | err := xml.Unmarshal(data, &temp) 49 | return temp, err 50 | } 51 | -------------------------------------------------------------------------------- /callbacks/third收银台-支付成功通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/91931#支付成功通知 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdPayForAppSuccess{}) 11 | } 12 | 13 | type ThirdPayForAppSuccess struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | PaidCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"PaidCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | OrderId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"OrderId"` 31 | } 32 | 33 | func (ThirdPayForAppSuccess) GetMessageType() string { 34 | return "third" 35 | } 36 | 37 | func (ThirdPayForAppSuccess) GetEventType() string { 38 | return "pay_for_app_success" 39 | } 40 | 41 | func (ThirdPayForAppSuccess) GetChangeType() string { 42 | return "" 43 | } 44 | 45 | func (m ThirdPayForAppSuccess) GetTypeKey() string { 46 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 47 | } 48 | 49 | func (ThirdPayForAppSuccess) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 50 | var temp ThirdPayForAppSuccess 51 | err := xml.Unmarshal(data, &temp) 52 | return temp, err 53 | } 54 | -------------------------------------------------------------------------------- /callbacks/third收银台-改单通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/91930#改单通知 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdChangeOrder{}) 11 | } 12 | 13 | type ThirdChangeOrder struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | PaidCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"PaidCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | OldOrderId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"OldOrderId"` 31 | NewOrderId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"NewOrderId"` 34 | } 35 | 36 | func (ThirdChangeOrder) GetMessageType() string { 37 | return "third" 38 | } 39 | 40 | func (ThirdChangeOrder) GetEventType() string { 41 | return "change_order" 42 | } 43 | 44 | func (ThirdChangeOrder) GetChangeType() string { 45 | return "" 46 | } 47 | 48 | func (m ThirdChangeOrder) GetTypeKey() string { 49 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 50 | } 51 | 52 | func (ThirdChangeOrder) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 53 | var temp ThirdChangeOrder 54 | err := xml.Unmarshal(data, &temp) 55 | return temp, err 56 | } 57 | -------------------------------------------------------------------------------- /callbacks/third收银台-退款通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/91932#退款通知 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdRefund{}) 11 | } 12 | 13 | type ThirdRefund struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | PaidCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"PaidCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | OrderId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"OrderId"` 31 | } 32 | 33 | func (ThirdRefund) GetMessageType() string { 34 | return "third" 35 | } 36 | 37 | func (ThirdRefund) GetEventType() string { 38 | return "refund" 39 | } 40 | 41 | func (ThirdRefund) GetChangeType() string { 42 | return "" 43 | } 44 | 45 | func (m ThirdRefund) GetTypeKey() string { 46 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 47 | } 48 | 49 | func (ThirdRefund) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 50 | var temp ThirdRefund 51 | err := xml.Unmarshal(data, &temp) 52 | return temp, err 53 | } 54 | -------------------------------------------------------------------------------- /callbacks/third新增部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92655#新增部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeContactCreateParty{}) 11 | } 12 | 13 | type ThirdChangeContactCreateParty struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | Name struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Name"` 37 | ParentId struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"ParentId"` 40 | Order struct { 41 | Text string `xml:",chardata"` 42 | } `xml:"Order"` 43 | } 44 | 45 | func (ThirdChangeContactCreateParty) GetMessageType() string { 46 | return "third" 47 | } 48 | 49 | func (ThirdChangeContactCreateParty) GetEventType() string { 50 | return "change_contact" 51 | } 52 | 53 | func (ThirdChangeContactCreateParty) GetChangeType() string { 54 | return "create_party" 55 | } 56 | 57 | func (m ThirdChangeContactCreateParty) GetTypeKey() string { 58 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 59 | } 60 | 61 | func (ThirdChangeContactCreateParty) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 62 | var temp ThirdChangeContactCreateParty 63 | err := xml.Unmarshal(data, &temp) 64 | return temp, err 65 | } 66 | -------------------------------------------------------------------------------- /callbacks/third更新部门事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/92655#更新部门事件 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdChangeContactUpdateParty{}) 11 | } 12 | 13 | type ThirdChangeContactUpdateParty struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | ChangeType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"ChangeType"` 31 | ID struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Id"` 34 | Name struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"Name"` 37 | ParentId struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"ParentId"` 40 | } 41 | 42 | func (ThirdChangeContactUpdateParty) GetMessageType() string { 43 | return "third" 44 | } 45 | 46 | func (ThirdChangeContactUpdateParty) GetEventType() string { 47 | return "change_contact" 48 | } 49 | 50 | func (ThirdChangeContactUpdateParty) GetChangeType() string { 51 | return "update_party" 52 | } 53 | 54 | func (m ThirdChangeContactUpdateParty) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (ThirdChangeContactUpdateParty) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp ThirdChangeContactUpdateParty 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /callbacks/third编辑企业客户事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改 6 | // 文档地址 7 | // https://developer.work.weixin.qq.com/document/path/92277#编辑企业客户事件 8 | 9 | func init() { 10 | // 添加可解析的回调事件 11 | supportCallback(ThirdChangeExternalContactEditExternalContact{}) 12 | } 13 | 14 | type ThirdChangeExternalContactEditExternalContact struct { 15 | XMLName xml.Name `xml:"xml"` 16 | Text string `xml:",chardata"` 17 | SuiteId struct { 18 | Text string `xml:",chardata"` 19 | } `xml:"SuiteId"` 20 | AuthCorpId struct { 21 | Text string `xml:",chardata"` 22 | } `xml:"AuthCorpId"` 23 | InfoType struct { 24 | Text string `xml:",chardata"` 25 | } `xml:"InfoType"` 26 | TimeStamp struct { 27 | Text string `xml:",chardata"` 28 | } `xml:"TimeStamp"` 29 | ChangeType struct { 30 | Text string `xml:",chardata"` 31 | } `xml:"ChangeType"` 32 | UserID struct { 33 | Text string `xml:",chardata"` 34 | } `xml:"UserID"` 35 | ExternalUserID struct { 36 | Text string `xml:",chardata"` 37 | } `xml:"ExternalUserID"` 38 | } 39 | 40 | func (ThirdChangeExternalContactEditExternalContact) GetMessageType() string { 41 | return "third" 42 | } 43 | 44 | func (ThirdChangeExternalContactEditExternalContact) GetEventType() string { 45 | return "change_external_contact" 46 | } 47 | 48 | func (ThirdChangeExternalContactEditExternalContact) GetChangeType() string { 49 | return "edit_external_contact" 50 | } 51 | 52 | func (m ThirdChangeExternalContactEditExternalContact) GetTypeKey() string { 53 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 54 | } 55 | 56 | func (ThirdChangeExternalContactEditExternalContact) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 57 | var temp ThirdChangeExternalContactEditExternalContact 58 | err := xml.Unmarshal(data, &temp) 59 | return temp, err 60 | } 61 | -------------------------------------------------------------------------------- /callbacks/third获客助手权限取消事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/98959#获客助手权限取消事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdCancelSpecialAuth{}) 11 | } 12 | 13 | type ThirdCancelSpecialAuth struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | AuthType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"AuthType"` 31 | } 32 | 33 | func (ThirdCancelSpecialAuth) GetMessageType() string { 34 | return "third" 35 | } 36 | 37 | func (ThirdCancelSpecialAuth) GetEventType() string { 38 | return "cancel_special_auth" 39 | } 40 | 41 | func (ThirdCancelSpecialAuth) GetChangeType() string { 42 | return "" 43 | } 44 | 45 | func (m ThirdCancelSpecialAuth) GetTypeKey() string { 46 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 47 | } 48 | 49 | func (ThirdCancelSpecialAuth) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 50 | var temp ThirdCancelSpecialAuth 51 | err := xml.Unmarshal(data, &temp) 52 | return temp, err 53 | } 54 | -------------------------------------------------------------------------------- /callbacks/third获客助手权限确认事件.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/98959#获客助手权限确认事件 7 | 8 | func init() { 9 | //添加可解析的回调事件 10 | supportCallback(ThirdApproveSpecialAuth{}) 11 | } 12 | 13 | type ThirdApproveSpecialAuth struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | AuthType struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"AuthType"` 31 | } 32 | 33 | func (ThirdApproveSpecialAuth) GetMessageType() string { 34 | return "third" 35 | } 36 | 37 | func (ThirdApproveSpecialAuth) GetEventType() string { 38 | return "approve_special_auth" 39 | } 40 | 41 | func (ThirdApproveSpecialAuth) GetChangeType() string { 42 | return "" 43 | } 44 | 45 | func (m ThirdApproveSpecialAuth) GetTypeKey() string { 46 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 47 | } 48 | 49 | func (ThirdApproveSpecialAuth) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 50 | var temp ThirdApproveSpecialAuth 51 | err := xml.Unmarshal(data, &temp) 52 | return temp, err 53 | } 54 | -------------------------------------------------------------------------------- /callbacks/third设备数据授权变更回调.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/96103#设备数据授权变更回调 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdDeviceDataAuthChange{}) 11 | } 12 | 13 | type ThirdDeviceDataAuthChange struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCorpId struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCorpId"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | AgentID struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"AgentID"` 31 | } 32 | 33 | func (ThirdDeviceDataAuthChange) GetMessageType() string { 34 | return "third" 35 | } 36 | 37 | func (ThirdDeviceDataAuthChange) GetEventType() string { 38 | return "device_data_auth_change" 39 | } 40 | 41 | func (ThirdDeviceDataAuthChange) GetChangeType() string { 42 | return "" 43 | } 44 | 45 | func (m ThirdDeviceDataAuthChange) GetTypeKey() string { 46 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 47 | } 48 | 49 | func (ThirdDeviceDataAuthChange) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 50 | var temp ThirdDeviceDataAuthChange 51 | err := xml.Unmarshal(data, &temp) 52 | return temp, err 53 | } 54 | -------------------------------------------------------------------------------- /callbacks/third重置永久授权码通知.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/94758#重置永久授权码通知 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(ThirdResetPermanentCode{}) 11 | } 12 | 13 | type ThirdResetPermanentCode struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | SuiteId struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"SuiteId"` 19 | AuthCode struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"AuthCode"` 22 | InfoType struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"InfoType"` 25 | TimeStamp struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"TimeStamp"` 28 | } 29 | 30 | func (ThirdResetPermanentCode) GetMessageType() string { 31 | return "third" 32 | } 33 | 34 | func (ThirdResetPermanentCode) GetEventType() string { 35 | return "reset_permanent_code" 36 | } 37 | 38 | func (ThirdResetPermanentCode) GetChangeType() string { 39 | return "" 40 | } 41 | 42 | func (m ThirdResetPermanentCode) GetTypeKey() string { 43 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 44 | } 45 | 46 | func (ThirdResetPermanentCode) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 47 | var temp ThirdResetPermanentCode 48 | err := xml.Unmarshal(data, &temp) 49 | return temp, err 50 | } 51 | -------------------------------------------------------------------------------- /callbacks/video视频消息.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90375#视频消息 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(Video{}) 11 | } 12 | 13 | type Video struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | MediaId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"MediaId"` 31 | ThumbMediaId struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"ThumbMediaId"` 34 | MsgId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"MsgId"` 37 | AgentID struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"AgentID"` 40 | } 41 | 42 | func (Video) GetMessageType() string { 43 | return "video" 44 | } 45 | 46 | func (Video) GetEventType() string { 47 | return "" 48 | } 49 | 50 | func (Video) GetChangeType() string { 51 | return "" 52 | } 53 | 54 | func (m Video) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (Video) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp Video 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /callbacks/voice语音消息.go: -------------------------------------------------------------------------------- 1 | package callbacks 2 | 3 | import "encoding/xml" 4 | 5 | // 自动生成的回调结构,按需修改, 生成方式: make callback doc=微信文档地址url 6 | // 文档: https://developer.work.weixin.qq.com/document/path/90375#语音消息 7 | 8 | func init() { 9 | // 添加可解析的回调事件 10 | supportCallback(Voice{}) 11 | } 12 | 13 | type Voice struct { 14 | XMLName xml.Name `xml:"xml"` 15 | Text string `xml:",chardata"` 16 | ToUserName struct { 17 | Text string `xml:",chardata"` 18 | } `xml:"ToUserName"` 19 | FromUserName struct { 20 | Text string `xml:",chardata"` 21 | } `xml:"FromUserName"` 22 | CreateTime struct { 23 | Text string `xml:",chardata"` 24 | } `xml:"CreateTime"` 25 | MsgType struct { 26 | Text string `xml:",chardata"` 27 | } `xml:"MsgType"` 28 | MediaId struct { 29 | Text string `xml:",chardata"` 30 | } `xml:"MediaId"` 31 | Format struct { 32 | Text string `xml:",chardata"` 33 | } `xml:"Format"` 34 | MsgId struct { 35 | Text string `xml:",chardata"` 36 | } `xml:"MsgId"` 37 | AgentID struct { 38 | Text string `xml:",chardata"` 39 | } `xml:"AgentID"` 40 | } 41 | 42 | func (Voice) GetMessageType() string { 43 | return "voice" 44 | } 45 | 46 | func (Voice) GetEventType() string { 47 | return "" 48 | } 49 | 50 | func (Voice) GetChangeType() string { 51 | return "" 52 | } 53 | 54 | func (m Voice) GetTypeKey() string { 55 | return m.GetMessageType() + ":" + m.GetEventType() + ":" + m.GetChangeType() 56 | } 57 | 58 | func (Voice) ParseFromXml(data []byte) (CallBackExtraInfoInterface, error) { 59 | var temp Voice 60 | err := xml.Unmarshal(data, &temp) 61 | return temp, err 62 | } 63 | -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | ## sdk调用示例 2 | 3 | 1. 请先配置下 demo/config.go 的相关参数 4 | 2. 运行测试用例 5 | 6 | ```sh 7 | # 进入demo文件夹 8 | cd ./demo 9 | 10 | # 测试接收回调事件的相关代码 11 | go test -v -run=TestCallbackMain 12 | 13 | # 测试企微API调用的相关代码 14 | go test -v -run=TestApiMain 15 | ``` -------------------------------------------------------------------------------- /demo/api.go: -------------------------------------------------------------------------------- 1 | package demo 2 | 3 | import ( 4 | "fmt" 5 | "github.com/zsmhub/workweixin" 6 | "github.com/zsmhub/workweixin/apis" 7 | ) 8 | 9 | // 调用企微sdk示例 10 | func ApiMain() { 11 | if err := initApiHandler(); err != nil { 12 | fmt.Println(err) 13 | } 14 | 15 | // 调用企业授权信息sdk 16 | resp, err := workweixin.Sdk.ThirdAppClient.ExecGetAuthInfoService(apis.ReqGetAuthInfoService{ 17 | AuthCorpid: TestAuthCorpId, 18 | PermanentCode: TestAuthCorpPermanentCode, 19 | }) 20 | if err != nil { 21 | fmt.Println(err) 22 | return 23 | } 24 | fmt.Println(resp) 25 | } 26 | 27 | // 企微API客户端初始化 28 | func initApiHandler() error { 29 | // 初始化企微sdk参数 30 | workweixin.Sdk.InitOptions(apis.Options{ 31 | DcsToken: DcsTokenByRedis{}, 32 | DcsAppSuiteTicket: DcsAppSuiteTicketByRedis{}, 33 | // GetThirdAppAuthCorpFunc: GetThirdAppAuthCorpToSdk, 34 | // GetCustomizedAppAuthCorpFunc: GetCustomizedAppAuthCorpToSdk, 35 | Logger: Logger{}, 36 | }) 37 | 38 | // 服务商API客户端初始化 39 | workweixin.Sdk.NewProviderApiClient(CorpId, CorpProviderSecret) 40 | 41 | // 第三方应用API客户端初始化 42 | suiteTicket := TestSuiteTicket 43 | workweixin.Sdk.NewThirdAppApiClient(CorpId, AppSuiteId, AppSuiteSecret, suiteTicket) 44 | 45 | // 自建应用代开发API客户端初始化 46 | // customizedTicket := "xxx" 47 | // workweixin.Sdk.NewCustomizedApiClient(CorpId, CustomizedAppSuiteId, CustomizedAppSuiteSecret, customizedTicket) 48 | 49 | return nil 50 | } -------------------------------------------------------------------------------- /demo/api_test.go: -------------------------------------------------------------------------------- 1 | package demo 2 | 3 | import "testing" 4 | 5 | func TestApiMain(t *testing.T) { 6 | ApiMain() 7 | } 8 | -------------------------------------------------------------------------------- /demo/callback_test.go: -------------------------------------------------------------------------------- 1 | package demo 2 | 3 | import "testing" 4 | 5 | func TestCallbackMain(t *testing.T) { 6 | CallbackMain() 7 | } 8 | -------------------------------------------------------------------------------- /demo/config.go: -------------------------------------------------------------------------------- 1 | package demo 2 | 3 | // 企微配置文件 4 | 5 | // 企业微信服务商信息 6 | var ( 7 | CorpId = "xxx" // 通用开发参数 >> CorpId 8 | CorpProviderSecret = "xxx" // 通用开发参数 >> ProviderSecret 9 | CorpCallbackToken = "xxx" // 通用开发参数 >> Token 10 | CorpCallbackEncodingAESKey = "xxx" // 通用开发参数 >> EncodingAESKey 11 | ) 12 | 13 | // 企业微信第三方应用配置 14 | var ( 15 | AppSuiteId = "xxx" // 唯一身份标识 16 | AppSuiteSecret = "xxx" // 调用身份密钥 17 | AppSuiteCallbackToken = "xxx" // 回调 token 18 | AppSuiteCallbackEncodingAESKey = "xxx" // 回调加解密 AES KEY 19 | ) 20 | 21 | // 企业微信第三方小程序配置 22 | var ( 23 | MiniSuiteId = "xxx" // 唯一身份标识 24 | MiniSuiteSecret = "xxx" // 调用身份密钥 25 | MiniSuiteCallbackToken = "xxx" // 回调 token 26 | MiniSuiteCallbackEncodingAESKey = "xxx" // 回调加解密 AES KEY 27 | ) 28 | 29 | // 企业微信代开发配置 30 | var ( 31 | CustomizedAppSuiteId = "xxx" // 代开发唯一身份标识 32 | CustomizedAppSuiteSecret = "xxx" // 代开发调用身份密钥 33 | CustomizedCallbackToken = "xxx" // 代开发回调 token 34 | CustomizedCallbackEncodingAESKey = "xxx" // 代开发回调加解密 AES KEY 35 | ) 36 | 37 | // 调试数据配置 38 | var ( 39 | TestSuiteTicket = "xxx" // suite_ticket,每10分钟刷新一次 40 | TestAuthCorpId = "xxx" // 授权企业corpid 41 | TestAuthCorpPermanentCode = "xxx" // 授权企业永久授权码 42 | TestAuthCorpAgentId = 1000001 // 授权企业agentid 43 | ) 44 | -------------------------------------------------------------------------------- /docs/代开发应用服务商操作流程.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/代开发应用服务商操作流程.docx -------------------------------------------------------------------------------- /docs/企业微信使用教程_1634259824876.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/企业微信使用教程_1634259824876.pdf -------------------------------------------------------------------------------- /docs/企业微信员工使用手册_1634259832138.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/企业微信员工使用手册_1634259832138.pdf -------------------------------------------------------------------------------- /docs/企业微信基础玩法_1635478371902.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/企业微信基础玩法_1635478371902.pptx -------------------------------------------------------------------------------- /docs/企业微信封号问题汇总.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/企业微信封号问题汇总.docx -------------------------------------------------------------------------------- /docs/企微接口调用许可.md: -------------------------------------------------------------------------------- 1 | # 企微平台接口调用许可官方说明 2 | https://open.work.weixin.qq.com/wwopen/policyDocument?uuid=hQH47EXznwhv9Nv7umThrb 3 | 4 | # 测试企业配置指引 5 | https://open.work.weixin.qq.com/wwopen/common/readDocument/38729 6 | 7 | # 以下是我梳理的一些内容 8 | 9 | ## 平台接口调用许可付费流程 10 | 1. 购买新激活账号流程:begin->下单购买账号API->管理员去服务商管理端发起支付(没有API)->获取订单中的帐号列表API->激活帐号API->end 11 | 2. 续费流程:begin->创建续期任务API->提交续期任务API->end【接口许可到期后,许可将失效,此时可调用API进行续期或重新为企业员工购买并激活新的许可帐号】 12 | 13 | ## 平台接口调用许可常见问题 14 | 1. 收费模式:对于新购买和扩容许可帐号,是按企业维度累进阶梯计费,即进行基础(互通)帐号新购和扩容时的阶梯起始帐号数为企业客户已激活的帐号中当前剩余使用时长≥购买时长的基础(互通)帐号数。对于续期接口许可,是按订单维度累计阶梯计费,每次续期时阶梯的计算不与其他已有订单累计。 15 | 2. 所有企业新授权的服务商应用,可免费调用企业微信接口90天。到期前7天,企业成员打开应用时,会在应用内进行相应提示;到期后,若应用无接口调用许可,则应用不可调用企业微信接口(不可调用说明),同时企业成员打开应用时也将展示对应的提示页面。 16 | 3. 历史授权第三方应用的企业,接口调用许可生效时间为 2022年10月8日0:00,在生效时间前企业可按照应用的试用策略继续试用;2022年5月16日0:00后授权的企业只有90天的接口免费调用期。 17 | 4. 上下游场景,服务商按上游企业主体购买接口调用许可,购买的接口许可帐号可同时在上游企业和下游企业使用。「todo 待确认流程」 18 | 5. 已激活的接口许可支持进行成员间的继承,支持在职继承和离职继承两种方式,其中在职继承30天后才可再次进行转接继承,离职继承不限制下次转接继承的时间间隔。 19 | 6. 企业安装了服务商的多个应用,需要为同一个成员购买多个接口调用许可吗?答:不需要,无论安装多少个应用,一个成员都只需要购买一个接口调用许可。 20 | 7. 未来待定功能:企微那边有计划做订单合并支付的能力,和预存预付的功能,上线时间待定。 -------------------------------------------------------------------------------- /docs/常见问题汇总.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/常见问题汇总.docx -------------------------------------------------------------------------------- /docs/管理端操作手册_1634259834379.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/管理端操作手册_1634259834379.pdf -------------------------------------------------------------------------------- /docs/通过企业微信经营私域流量.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zsmhub/workweixin/d1defb0ddc6dd5950a42875117de1a52c53f90dd/docs/通过企业微信经营私域流量.docx -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/zsmhub/workweixin 2 | 3 | go 1.18 4 | 5 | require ( 6 | github.com/ChimeraCoder/gojson v1.1.0 7 | github.com/PuerkitoBio/goquery v1.7.1 8 | github.com/cenkalti/backoff/v4 v4.1.1 9 | github.com/go-redis/redis/v8 v8.10.0 10 | github.com/google/uuid v1.3.0 11 | github.com/iancoleman/strcase v0.2.0 12 | github.com/labstack/echo/v4 v4.1.16 13 | github.com/miku/zek v0.1.11 14 | github.com/pkg/errors v0.9.1 15 | github.com/valyala/fasthttp v1.26.0 16 | ) 17 | 18 | require ( 19 | github.com/andybalholm/brotli v1.0.2 // indirect 20 | github.com/andybalholm/cascadia v1.2.0 // indirect 21 | github.com/cespare/xxhash/v2 v2.1.1 // indirect 22 | github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect 23 | github.com/klauspost/compress v1.12.2 // indirect 24 | github.com/labstack/gommon v0.3.0 // indirect 25 | github.com/mattn/go-colorable v0.1.6 // indirect 26 | github.com/mattn/go-isatty v0.0.12 // indirect 27 | github.com/valyala/bytebufferpool v1.0.0 // indirect 28 | github.com/valyala/fasttemplate v1.1.0 // indirect 29 | go.opentelemetry.io/otel v0.20.0 // indirect 30 | go.opentelemetry.io/otel/metric v0.20.0 // indirect 31 | go.opentelemetry.io/otel/trace v0.20.0 // indirect 32 | golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect 33 | golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect 34 | golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 // indirect 35 | golang.org/x/text v0.3.6 // indirect 36 | gopkg.in/yaml.v2 v2.3.0 // indirect 37 | ) 38 | -------------------------------------------------------------------------------- /internal/README.md: -------------------------------------------------------------------------------- 1 | ### 消息加解密库 -------------------------------------------------------------------------------- /internal/encryptor/pkcs7/mod.go: -------------------------------------------------------------------------------- 1 | package pkcs7 2 | 3 | func Pad(x []byte) []byte { 4 | numPadBytes := 32 - len(x)%32 5 | padByte := byte(numPadBytes) 6 | tmp := make([]byte, len(x)+numPadBytes) 7 | copy(tmp, x) 8 | for i := 0; i < numPadBytes; i++ { 9 | tmp[len(x)+i] = padByte 10 | } 11 | return tmp 12 | } 13 | 14 | func Unpad(x []byte) []byte { 15 | // last byte is number of suffix bytes to remove 16 | n := int(x[len(x)-1]) 17 | return x[:len(x)-n] 18 | } 19 | -------------------------------------------------------------------------------- /internal/envelope/ctor_options.go: -------------------------------------------------------------------------------- 1 | package envelope 2 | 3 | import ( 4 | "io" 5 | ) 6 | 7 | type ProcessorOption interface { 8 | applyTo(x *Processor) 9 | } 10 | 11 | type customEntropySource struct { 12 | inner io.Reader 13 | } 14 | 15 | func WithEntropySource(e io.Reader) ProcessorOption { 16 | return &customEntropySource{inner: e} 17 | } 18 | 19 | func (o *customEntropySource) applyTo(x *Processor) { 20 | x.entropySource = o.inner 21 | } 22 | 23 | type customTimeSource struct { 24 | inner TimeSource 25 | } 26 | 27 | func WithTimeSource(t TimeSource) ProcessorOption { 28 | return &customTimeSource{inner: t} 29 | } 30 | 31 | func (o *customTimeSource) applyTo(x *Processor) { 32 | x.timeSource = o.inner 33 | } 34 | -------------------------------------------------------------------------------- /internal/envelope/models.go: -------------------------------------------------------------------------------- 1 | package envelope 2 | 3 | import ( 4 | "encoding/xml" 5 | ) 6 | 7 | type xmlRxEnvelope struct { 8 | ToUserName string `xml:"ToUserName"` 9 | AgentID string `xml:"AppAgentId"` 10 | Encrypt string `xml:"Encrypt"` 11 | } 12 | 13 | type cdataNode struct { 14 | CData string `xml:",cdata"` 15 | } 16 | 17 | type xmlTxEnvelope struct { 18 | XMLName xml.Name `xml:"xml"` 19 | Encrypt cdataNode `xml:"Encrypt"` 20 | MsgSignature cdataNode `xml:"MsgSignature"` 21 | Timestamp int64 `xml:"Timestamp"` 22 | Nonce cdataNode `xml:"Nonce"` 23 | } 24 | 25 | type Envelope struct { 26 | ToUserName string 27 | AgentID string 28 | Msg []byte 29 | ReceiveID []byte 30 | } 31 | -------------------------------------------------------------------------------- /internal/envelope/time_source.go: -------------------------------------------------------------------------------- 1 | package envelope 2 | 3 | import ( 4 | "time" 5 | ) 6 | 7 | type TimeSource interface { 8 | GetCurrentTimestamp() time.Time 9 | } 10 | 11 | type DefaultTimeSource struct{} 12 | 13 | var _ TimeSource = DefaultTimeSource{} 14 | 15 | func (DefaultTimeSource) GetCurrentTimestamp() time.Time { 16 | return time.Now() 17 | } 18 | --------------------------------------------------------------------------------