mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 12:52:27 +08:00
小程序服务商 - 获取 URL Link 及 查询小程序 url_link 配置 (#576)
* 小程序服务商 - 获取 URL Link 及 查询小程序 url_link 配置 * 格式化代码 * 规范调整
This commit is contained in:
52
miniprogram/urllink/query.go
Normal file
52
miniprogram/urllink/query.go
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
package urllink
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/silenceper/wechat/v2/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
const queryURL = "https://api.weixin.qq.com/wxa/query_urllink"
|
||||||
|
|
||||||
|
// ULQueryResult 返回的结果
|
||||||
|
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-link/urllink.query.html 返回值
|
||||||
|
type ULQueryResult struct {
|
||||||
|
util.CommonError
|
||||||
|
|
||||||
|
URLLinkInfo struct {
|
||||||
|
Appid string `json:"appid"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Query string `json:"query"`
|
||||||
|
CreateTime int64 `json:"create_time"`
|
||||||
|
ExpireTime int64 `json:"expire_time"`
|
||||||
|
EnvVersion string `json:"env_version"`
|
||||||
|
CloudBase struct {
|
||||||
|
Env string `json:"env"`
|
||||||
|
Domain string `json:"domain"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
Query string `json:"query"`
|
||||||
|
ResourceAppid string `json:"resource_appid"`
|
||||||
|
} `json:"cloud_base"`
|
||||||
|
} `json:"url_link_info"`
|
||||||
|
VisitOpenid string `json:"visit_openid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Query 查询小程序 url_link 配置。
|
||||||
|
func (u *URLLink) Query(urlLink string) (*ULQueryResult, error) {
|
||||||
|
accessToken, err := u.GetAccessToken()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
uri := fmt.Sprintf("%s?access_token=%s", queryURL, accessToken)
|
||||||
|
response, err := util.PostJSON(uri, map[string]string{"url_link": urlLink})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var resp ULQueryResult
|
||||||
|
err = util.DecodeWithError(response, &resp, "URLLink.Query")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &resp, nil
|
||||||
|
}
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
package miniprogram
|
package miniprogram
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
miniContext "github.com/silenceper/wechat/v2/miniprogram/context"
|
||||||
|
"github.com/silenceper/wechat/v2/miniprogram/urllink"
|
||||||
openContext "github.com/silenceper/wechat/v2/openplatform/context"
|
openContext "github.com/silenceper/wechat/v2/openplatform/context"
|
||||||
"github.com/silenceper/wechat/v2/openplatform/miniprogram/basic"
|
"github.com/silenceper/wechat/v2/openplatform/miniprogram/basic"
|
||||||
"github.com/silenceper/wechat/v2/openplatform/miniprogram/component"
|
"github.com/silenceper/wechat/v2/openplatform/miniprogram/component"
|
||||||
@@ -10,6 +14,30 @@ import (
|
|||||||
type MiniProgram struct {
|
type MiniProgram struct {
|
||||||
AppID string
|
AppID string
|
||||||
openContext *openContext.Context
|
openContext *openContext.Context
|
||||||
|
|
||||||
|
authorizerRefreshToken string
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAccessToken 获取ak
|
||||||
|
func (miniProgram *MiniProgram) GetAccessToken() (string, error) {
|
||||||
|
ak, akErr := miniProgram.openContext.GetAuthrAccessToken(miniProgram.AppID)
|
||||||
|
if akErr == nil {
|
||||||
|
return ak, nil
|
||||||
|
}
|
||||||
|
if miniProgram.authorizerRefreshToken == "" {
|
||||||
|
return "", fmt.Errorf("please set the authorizer_refresh_token first")
|
||||||
|
}
|
||||||
|
akRes, akResErr := miniProgram.GetComponent().RefreshAuthrToken(miniProgram.AppID, miniProgram.authorizerRefreshToken)
|
||||||
|
if akResErr != nil {
|
||||||
|
return "", akResErr
|
||||||
|
}
|
||||||
|
return akRes.AccessToken, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAuthorizerRefreshToken 设置代执操作业务授权账号authorizer_refresh_token
|
||||||
|
func (miniProgram *MiniProgram) SetAuthorizerRefreshToken(authorizerRefreshToken string) *MiniProgram {
|
||||||
|
miniProgram.authorizerRefreshToken = authorizerRefreshToken
|
||||||
|
return miniProgram
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewMiniProgram 实例化
|
// NewMiniProgram 实例化
|
||||||
@@ -30,3 +58,10 @@ func (miniProgram *MiniProgram) GetComponent() *component.Component {
|
|||||||
func (miniProgram *MiniProgram) GetBasic() *basic.Basic {
|
func (miniProgram *MiniProgram) GetBasic() *basic.Basic {
|
||||||
return basic.NewBasic(miniProgram.openContext, miniProgram.AppID)
|
return basic.NewBasic(miniProgram.openContext, miniProgram.AppID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetURLLink 小程序URL Link接口 调用前需确认已调用 SetAuthorizerRefreshToken 避免由于缓存中 authorizer_access_token 过期执行中断
|
||||||
|
func (miniProgram *MiniProgram) GetURLLink() *urllink.URLLink {
|
||||||
|
return urllink.NewURLLink(&miniContext.Context{
|
||||||
|
AccessTokenHandle: miniProgram,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user