cloudfunction.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package tcb
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/util"
  5. )
  6. const (
  7. // 触发云函数
  8. invokeCloudFunctionURL = "https://api.weixin.qq.com/tcb/invokecloudfunction"
  9. )
  10. // InvokeCloudFunctionRes 云函数调用返回结果
  11. type InvokeCloudFunctionRes struct {
  12. util.CommonError
  13. RespData string `json:"resp_data"` // 云函数返回的 buffer
  14. }
  15. // InvokeCloudFunction 云函数调用
  16. //
  17. //reference:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/functions/invokeCloudFunction.html
  18. func (tcb *Tcb) InvokeCloudFunction(env, name, args string) (*InvokeCloudFunctionRes, error) {
  19. accessToken, err := tcb.GetAccessToken()
  20. if err != nil {
  21. return nil, err
  22. }
  23. uri := fmt.Sprintf("%s?access_token=%s&env=%s&name=%s", invokeCloudFunctionURL, accessToken, env, name)
  24. response, err := util.HTTPPost(uri, args)
  25. if err != nil {
  26. return nil, err
  27. }
  28. invokeCloudFunctionRes := &InvokeCloudFunctionRes{}
  29. err = util.DecodeWithError(response, invokeCloudFunctionRes, "InvokeCloudFunction")
  30. return invokeCloudFunctionRes, err
  31. }