Преглед изворни кода

增加urllink (#465)

* 增加urllink

* urllink.Generate返回string作为结果
George Wang пре 4 година
родитељ
комит
f767b72872
2 измењених фајлова са 77 додато и 0 уклоњено
  1. 6 0
      miniprogram/miniprogram.go
  2. 71 0
      miniprogram/urllink/urllink.go

+ 6 - 0
miniprogram/miniprogram.go

@@ -13,6 +13,7 @@ import (
 	"github.com/silenceper/wechat/v2/miniprogram/shortlink"
 	"github.com/silenceper/wechat/v2/miniprogram/shortlink"
 	"github.com/silenceper/wechat/v2/miniprogram/subscribe"
 	"github.com/silenceper/wechat/v2/miniprogram/subscribe"
 	"github.com/silenceper/wechat/v2/miniprogram/tcb"
 	"github.com/silenceper/wechat/v2/miniprogram/tcb"
+	"github.com/silenceper/wechat/v2/miniprogram/urllink"
 	"github.com/silenceper/wechat/v2/miniprogram/werun"
 	"github.com/silenceper/wechat/v2/miniprogram/werun"
 )
 )
 
 
@@ -86,6 +87,11 @@ func (miniProgram *MiniProgram) GetContentSecurity() *content.Content {
 	return content.NewContent(miniProgram.ctx)
 	return content.NewContent(miniProgram.ctx)
 }
 }
 
 
+// GetURLLink 小程序URL Link接口
+func (miniProgram *MiniProgram) GetURLLink() *urllink.URLLink {
+	return urllink.NewURLLink(miniProgram.ctx)
+}
+
 // GetShortLink 小程序短链接口
 // GetShortLink 小程序短链接口
 func (miniProgram *MiniProgram) GetShortLink() *shortlink.ShortLink {
 func (miniProgram *MiniProgram) GetShortLink() *shortlink.ShortLink {
 	return shortlink.NewShortLink(miniProgram.ctx)
 	return shortlink.NewShortLink(miniProgram.ctx)

+ 71 - 0
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
+}