附近小店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

plugin.go 4.9 KiB

2 kuukautta sitten
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package weapp
  2. const (
  3. apiPlugin = "/wxa/plugin"
  4. apiDevPlugin = "/wxa/devplugin"
  5. )
  6. // ApplyPlugin 向插件开发者发起使用插件的申请
  7. // accessToken 接口调用凭证
  8. // action string 是 此接口下填写 "apply"
  9. // appID string 是 插件 appId
  10. // reason string 否 申请使用理由
  11. func ApplyPlugin(token, appID, reason string) (*CommonError, error) {
  12. api := baseURL + apiPlugin
  13. return applyPlugin(api, token, appID, reason)
  14. }
  15. func applyPlugin(api, token, appID, reason string) (*CommonError, error) {
  16. url, err := tokenAPI(api, token)
  17. if err != nil {
  18. return nil, err
  19. }
  20. params := requestParams{
  21. "action": "apply",
  22. "plugin_appid": appID,
  23. }
  24. if reason != "" {
  25. params["reason"] = reason
  26. }
  27. res := new(CommonError)
  28. if err := postJSON(url, params, res); err != nil {
  29. return nil, err
  30. }
  31. return res, nil
  32. }
  33. // GetPluginDevApplyListResponse 查询已添加的插件返回数据
  34. type GetPluginDevApplyListResponse struct {
  35. CommonError
  36. ApplyList []struct {
  37. AppID string `json:"appid"` // 插件 appId
  38. Status uint8 `json:"status"` // 插件状态
  39. Nickname string `json:"nickname"` // 插件昵称
  40. HeadImgURL string `json:"headimgurl"` // 插件头像
  41. Categories []struct {
  42. First string `json:"first"`
  43. Second string `json:"second"`
  44. } `json:"categories"` // 使用者的类目
  45. CreateTime string `json:"create_time"` // 使用者的申请时间
  46. ApplyURL string `json:"apply_url"` // 使用者的小程序码
  47. Reason string `json:"reason"` // 使用者的申请说明
  48. } `json:"apply_list"` // 申请或使用中的插件列表
  49. }
  50. // GetPluginDevApplyList 获取当前所有插件使用方
  51. // accessToken 接口调用凭证
  52. // page number 是 要拉取第几页的数据
  53. // num 是 每页的记录数
  54. func GetPluginDevApplyList(token string, page, num uint) (*GetPluginDevApplyListResponse, error) {
  55. api := baseURL + apiDevPlugin
  56. return getPluginDevApplyList(api, token, page, num)
  57. }
  58. func getPluginDevApplyList(api, token string, page, num uint) (*GetPluginDevApplyListResponse, error) {
  59. url, err := tokenAPI(api, token)
  60. if err != nil {
  61. return nil, err
  62. }
  63. params := requestParams{
  64. "num": num,
  65. "page": page,
  66. "action": "dev_apply_list",
  67. }
  68. res := new(GetPluginDevApplyListResponse)
  69. if err := postJSON(url, params, res); err != nil {
  70. return nil, err
  71. }
  72. return res, nil
  73. }
  74. // GetPluginListResponse 查询已添加的插件返回数据
  75. type GetPluginListResponse struct {
  76. CommonError
  77. PluginList []struct {
  78. AppID string `json:"appid"` // 插件 appId
  79. Status int8 `json:"status"` // 插件状态
  80. Nickname string `json:"nickname"` // 插件昵称
  81. HeadImgURL string `json:"headimgurl"` // 插件头像
  82. } `json:"plugin_list"` // 申请或使用中的插件列表
  83. }
  84. // GetPluginList 查询已添加的插件
  85. // accessToken 接口调用凭证
  86. func GetPluginList(token string) (*GetPluginListResponse, error) {
  87. api := baseURL + apiPlugin
  88. return getPluginList(api, token)
  89. }
  90. func getPluginList(api, token string) (*GetPluginListResponse, error) {
  91. url, err := tokenAPI(api, token)
  92. if err != nil {
  93. return nil, err
  94. }
  95. params := requestParams{
  96. "action": "list",
  97. }
  98. res := new(GetPluginListResponse)
  99. if err := postJSON(url, params, res); err != nil {
  100. return nil, err
  101. }
  102. return res, nil
  103. }
  104. // DevAction 修改操作
  105. type DevAction string
  106. // 所有修改操作
  107. const (
  108. DevAgree DevAction = "dev_agree" // 同意申请
  109. DevRefuse DevAction = "dev_refuse" // 拒绝申请
  110. DevDelete DevAction = "dev_refuse" // 删除已拒绝的申请者
  111. )
  112. // SetDevPluginApplyStatus 修改插件使用申请的状态
  113. // accessToken 接口调用凭证
  114. // appID 使用者的 appid。同意申请时填写。
  115. // reason 拒绝理由。拒绝申请时填写。
  116. // action 修改操作
  117. func SetDevPluginApplyStatus(token, appID, reason string, action DevAction) (*CommonError, error) {
  118. api := baseURL + apiDevPlugin
  119. return setDevPluginApplyStatus(api, token, appID, reason, action)
  120. }
  121. func setDevPluginApplyStatus(api, token, appID, reason string, action DevAction) (*CommonError, error) {
  122. url, err := tokenAPI(api, token)
  123. if err != nil {
  124. return nil, err
  125. }
  126. params := requestParams{
  127. "action": action,
  128. "appid": appID,
  129. "reason": reason,
  130. }
  131. res := new(CommonError)
  132. if err := postJSON(url, params, res); err != nil {
  133. return nil, err
  134. }
  135. return res, nil
  136. }
  137. // UnbindPlugin 查询已添加的插件
  138. // accessToken 接口调用凭证
  139. // appID 插件 appId
  140. func UnbindPlugin(token, appID string) (*CommonError, error) {
  141. api := baseURL + apiPlugin
  142. return unbindPlugin(api, token, appID)
  143. }
  144. func unbindPlugin(api, token, appID string) (*CommonError, error) {
  145. url, err := tokenAPI(api, token)
  146. if err != nil {
  147. return nil, err
  148. }
  149. params := requestParams{
  150. "action": "unbind",
  151. "plugin_appid": appID,
  152. }
  153. res := new(CommonError)
  154. if err := postJSON(url, params, res); err != nil {
  155. return nil, err
  156. }
  157. return res, nil
  158. }