forked from royalrick/weapp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
url_scheme.go
56 lines (45 loc) · 1.74 KB
/
url_scheme.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package weapp
import "github.com/ericnts/weapp/v3/request"
const (
apiURLScheme = "/wxa/generatescheme"
)
type URLSchemeRequest struct {
// 跳转到的目标小程序信息。
SchemedInfo *SchemedInfo `json:"jump_wxa,omitempty"`
// 成的scheme码类型,到期失效:true,永久有效:false。
IsExpire bool `json:"is_expire,omitempty"`
// 到期失效的scheme码的失效时间,为Unix时间戳。生成的到期失效scheme码在该时间前有效。最长有效期为1年。生成到期失效的scheme时必填。
ExpireTime int64 `json:"expire_time,omitempty"`
}
type SchemedInfo struct {
// 通过scheme码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带query。path为空时会跳转小程序主页。
Path string `json:"path"`
// 通过scheme码进入小程序时的query,最大128个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~
Query string `json:"query"`
}
type URLSchemeResponse struct {
request.CommonError
// 生成的小程序scheme码
Openlink string `json:"openlink"`
}
// 获取小程序scheme码,适用于短信、邮件、外部网页等拉起小程序的业务场景。
func (cli *Client) GenerateURLScheme(scheme *URLSchemeRequest) (*URLSchemeResponse, error) {
api := baseURL + apiURLScheme
token, err := cli.AccessToken()
if err != nil {
return nil, err
}
return cli.generateURLScheme(api, token, scheme)
}
func (cli *Client) generateURLScheme(api, token string, scheme *URLSchemeRequest) (*URLSchemeResponse, error) {
uri, err := tokenAPI(api, token)
if err != nil {
return nil, err
}
res := new(URLSchemeResponse)
err = cli.request.Post(uri, scheme, res)
if err != nil {
return nil, err
}
return res, nil
}