mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
feat:获取小程序链接URLScheme (#551)
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
|||||||
"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/urllink"
|
||||||
|
"github.com/silenceper/wechat/v2/miniprogram/urlscheme"
|
||||||
"github.com/silenceper/wechat/v2/miniprogram/werun"
|
"github.com/silenceper/wechat/v2/miniprogram/werun"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -102,3 +103,8 @@ func (miniProgram *MiniProgram) GetURLLink() *urllink.URLLink {
|
|||||||
func (miniProgram *MiniProgram) GetShortLink() *shortlink.ShortLink {
|
func (miniProgram *MiniProgram) GetShortLink() *shortlink.ShortLink {
|
||||||
return shortlink.NewShortLink(miniProgram.ctx)
|
return shortlink.NewShortLink(miniProgram.ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetSURLScheme 小程序URL Scheme接口
|
||||||
|
func (miniProgram *MiniProgram) GetSURLScheme() *urlscheme.URLScheme {
|
||||||
|
return urlscheme.NewURLScheme(miniProgram.ctx)
|
||||||
|
}
|
||||||
|
|||||||
76
miniprogram/urlscheme/urlscheme.go
Normal file
76
miniprogram/urlscheme/urlscheme.go
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
package urlscheme
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/silenceper/wechat/v2/miniprogram/context"
|
||||||
|
"github.com/silenceper/wechat/v2/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
// URLScheme 小程序 URL Scheme
|
||||||
|
type URLScheme struct {
|
||||||
|
*context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewURLScheme 实例化
|
||||||
|
func NewURLScheme(ctx *context.Context) *URLScheme {
|
||||||
|
return &URLScheme{Context: ctx}
|
||||||
|
}
|
||||||
|
|
||||||
|
const generateURL = "https://api.weixin.qq.com/wxa/generatescheme"
|
||||||
|
|
||||||
|
// TExpireType 失效类型 (指定时间戳/指定间隔)
|
||||||
|
type TExpireType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ExpireTypeTime 指定时间戳后失效
|
||||||
|
ExpireTypeTime TExpireType = 0
|
||||||
|
|
||||||
|
// ExpireTypeInterval 间隔指定天数后失效
|
||||||
|
ExpireTypeInterval TExpireType = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
// JumpWxa 跳转到的目标小程序信息
|
||||||
|
type JumpWxa struct {
|
||||||
|
Path string `json:"path"`
|
||||||
|
Query string `json:"query"`
|
||||||
|
// envVersion 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"
|
||||||
|
EnvVersion string `json:"env_version,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// USParams 请求参数
|
||||||
|
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.generate.html#请求参数
|
||||||
|
type USParams struct {
|
||||||
|
JumpWxa *JumpWxa `json:"jump_wxa"`
|
||||||
|
ExpireType TExpireType `json:"expire_type"`
|
||||||
|
ExpireTime int64 `json:"expire_time"`
|
||||||
|
ExpireInterval int `json:"expire_interval"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// USResult 返回的结果
|
||||||
|
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.generate.html#返回值
|
||||||
|
type USResult struct {
|
||||||
|
util.CommonError
|
||||||
|
|
||||||
|
OpenLink string `json:"openlink"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate 生成url link
|
||||||
|
func (u *URLScheme) Generate(params *USParams) (string, error) {
|
||||||
|
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 USResult
|
||||||
|
err = util.DecodeWithError(response, &resp, "URLScheme.Generate")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return resp.OpenLink, nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user