package weapp const ( apiPlugin = "/wxa/plugin" apiDevPlugin = "/wxa/devplugin" ) // ApplyPlugin 向插件开发者发起使用插件的申请 // accessToken 接口调用凭证 // action string 是 此接口下填写 "apply" // appID string 是 插件 appId // reason string 否 申请使用理由 func ApplyPlugin(token, appID, reason string) (*CommonError, error) { api := baseURL + apiPlugin return applyPlugin(api, token, appID, reason) } func applyPlugin(api, token, appID, reason string) (*CommonError, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } params := requestParams{ "action": "apply", "plugin_appid": appID, } if reason != "" { params["reason"] = reason } res := new(CommonError) if err := postJSON(url, params, res); err != nil { return nil, err } return res, nil } // GetPluginDevApplyListResponse 查询已添加的插件返回数据 type GetPluginDevApplyListResponse struct { CommonError ApplyList []struct { AppID string `json:"appid"` // 插件 appId Status uint8 `json:"status"` // 插件状态 Nickname string `json:"nickname"` // 插件昵称 HeadImgURL string `json:"headimgurl"` // 插件头像 Categories []struct { First string `json:"first"` Second string `json:"second"` } `json:"categories"` // 使用者的类目 CreateTime string `json:"create_time"` // 使用者的申请时间 ApplyURL string `json:"apply_url"` // 使用者的小程序码 Reason string `json:"reason"` // 使用者的申请说明 } `json:"apply_list"` // 申请或使用中的插件列表 } // GetPluginDevApplyList 获取当前所有插件使用方 // accessToken 接口调用凭证 // page number 是 要拉取第几页的数据 // num 是 每页的记录数 func GetPluginDevApplyList(token string, page, num uint) (*GetPluginDevApplyListResponse, error) { api := baseURL + apiDevPlugin return getPluginDevApplyList(api, token, page, num) } func getPluginDevApplyList(api, token string, page, num uint) (*GetPluginDevApplyListResponse, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } params := requestParams{ "num": num, "page": page, "action": "dev_apply_list", } res := new(GetPluginDevApplyListResponse) if err := postJSON(url, params, res); err != nil { return nil, err } return res, nil } // GetPluginListResponse 查询已添加的插件返回数据 type GetPluginListResponse struct { CommonError PluginList []struct { AppID string `json:"appid"` // 插件 appId Status int8 `json:"status"` // 插件状态 Nickname string `json:"nickname"` // 插件昵称 HeadImgURL string `json:"headimgurl"` // 插件头像 } `json:"plugin_list"` // 申请或使用中的插件列表 } // GetPluginList 查询已添加的插件 // accessToken 接口调用凭证 func GetPluginList(token string) (*GetPluginListResponse, error) { api := baseURL + apiPlugin return getPluginList(api, token) } func getPluginList(api, token string) (*GetPluginListResponse, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } params := requestParams{ "action": "list", } res := new(GetPluginListResponse) if err := postJSON(url, params, res); err != nil { return nil, err } return res, nil } // DevAction 修改操作 type DevAction string // 所有修改操作 const ( DevAgree DevAction = "dev_agree" // 同意申请 DevRefuse DevAction = "dev_refuse" // 拒绝申请 DevDelete DevAction = "dev_refuse" // 删除已拒绝的申请者 ) // SetDevPluginApplyStatus 修改插件使用申请的状态 // accessToken 接口调用凭证 // appID 使用者的 appid。同意申请时填写。 // reason 拒绝理由。拒绝申请时填写。 // action 修改操作 func SetDevPluginApplyStatus(token, appID, reason string, action DevAction) (*CommonError, error) { api := baseURL + apiDevPlugin return setDevPluginApplyStatus(api, token, appID, reason, action) } func setDevPluginApplyStatus(api, token, appID, reason string, action DevAction) (*CommonError, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } params := requestParams{ "action": action, "appid": appID, "reason": reason, } res := new(CommonError) if err := postJSON(url, params, res); err != nil { return nil, err } return res, nil } // UnbindPlugin 查询已添加的插件 // accessToken 接口调用凭证 // appID 插件 appId func UnbindPlugin(token, appID string) (*CommonError, error) { api := baseURL + apiPlugin return unbindPlugin(api, token, appID) } func unbindPlugin(api, token, appID string) (*CommonError, error) { url, err := tokenAPI(api, token) if err != nil { return nil, err } params := requestParams{ "action": "unbind", "plugin_appid": appID, } res := new(CommonError) if err := postJSON(url, params, res); err != nil { return nil, err } return res, nil }