From f767b72872afdfcc023c057de5c790332a9004c2 Mon Sep 17 00:00:00 2001 From: George Wang Date: Mon, 6 Sep 2021 20:53:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0urllink=20(#465)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 增加urllink * urllink.Generate返回string作为结果 --- miniprogram/miniprogram.go | 6 +++ miniprogram/urllink/urllink.go | 71 ++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 miniprogram/urllink/urllink.go diff --git a/miniprogram/miniprogram.go b/miniprogram/miniprogram.go index 7222848..ab32996 100644 --- a/miniprogram/miniprogram.go +++ b/miniprogram/miniprogram.go @@ -13,6 +13,7 @@ import ( "github.com/silenceper/wechat/v2/miniprogram/shortlink" "github.com/silenceper/wechat/v2/miniprogram/subscribe" "github.com/silenceper/wechat/v2/miniprogram/tcb" + "github.com/silenceper/wechat/v2/miniprogram/urllink" "github.com/silenceper/wechat/v2/miniprogram/werun" ) @@ -86,6 +87,11 @@ func (miniProgram *MiniProgram) GetContentSecurity() *content.Content { return content.NewContent(miniProgram.ctx) } +// GetURLLink 小程序URL Link接口 +func (miniProgram *MiniProgram) GetURLLink() *urllink.URLLink { + return urllink.NewURLLink(miniProgram.ctx) +} + // GetShortLink 小程序短链接口 func (miniProgram *MiniProgram) GetShortLink() *shortlink.ShortLink { return shortlink.NewShortLink(miniProgram.ctx) diff --git a/miniprogram/urllink/urllink.go b/miniprogram/urllink/urllink.go new file mode 100644 index 0000000..c043ac2 --- /dev/null +++ b/miniprogram/urllink/urllink.go @@ -0,0 +1,71 @@ +package urllink + +import ( + "fmt" + + "github.com/silenceper/wechat/v2/miniprogram/context" + "github.com/silenceper/wechat/v2/util" +) + +// URLLink 小程序 URL Link +type URLLink struct { + *context.Context +} + +// NewURLLink 实例化 +func NewURLLink(ctx *context.Context) *URLLink { + return &URLLink{Context: ctx} +} + +const generateURL = "https://api.weixin.qq.com/wxa/generate_urllink" + +// TExpireType 失效类型 (指定时间戳/指定间隔) +type TExpireType int + +const ( + // ExpireTypeTime 指定时间戳后失效 + ExpireTypeTime TExpireType = 0 + + // ExpireTypeInterval 间隔指定天数后失效 + ExpireTypeInterval TExpireType = 1 +) + +// ULParams 请求参数 +// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-link/urllink.generate.html#请求参数 +type ULParams struct { + Path string `json:"path"` + Query string `json:"query"` + IsExpire bool `json:"is_expire"` + ExpireType TExpireType `json:"expire_type"` + ExpireTime int64 `json:"expire_time"` + ExpireInterval int `json:"expire_interval"` +} + +// ULResult 返回的结果 +// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-link/urllink.generate.html#返回值 +type ULResult struct { + util.CommonError + + URLLink string `json:"url_link"` +} + +// Generate 生成url link +func (u *URLLink) Generate(params *ULParams) (string, error) { + var accessToken string + accessToken, err := u.GetAccessToken() + if err != nil { + return "", err + } + + uri := fmt.Sprintf("%s?access_token=%s", generateURL, accessToken) + response, err := util.PostJSON(uri, params) + if err != nil { + return "", err + } + var resp ULResult + err = util.DecodeWithError(response, &resp, "URLLink.Generate") + if err != nil { + return "", err + } + return resp.URLLink, nil +}