Skip to content

Commit 00a3d9f

Browse files
authored
Merge pull request #618 from ArtisanCloud/develop
feat(stableToken): support stable token mode
2 parents 1d57f15 + d44319f commit 00a3d9f

File tree

11 files changed

+122
-52
lines changed

11 files changed

+122
-52
lines changed

src/basicService/application.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ type Application struct {
2727
}
2828

2929
type UserConfig struct {
30-
AppID string
31-
Secret string
30+
AppID string
31+
Secret string
32+
StableTokenMode bool
33+
ForceRefresh bool
34+
RefreshToken string
3235

3336
ResponseType string
3437
Log Log
@@ -147,8 +150,10 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
147150

148151
config := &object.HashMap{
149152

150-
"app_id": userConfig.AppID,
151-
"secret": userConfig.Secret,
153+
"app_id": userConfig.AppID,
154+
"secret": userConfig.Secret,
155+
"stable_token_mode": userConfig.StableTokenMode,
156+
"refresh_token": userConfig.RefreshToken,
152157

153158
"response_type": userConfig.ResponseType,
154159
"log": &object.HashMap{

src/kernel/accessToken.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ type AccessToken struct {
2626

2727
RequestMethod string
2828
EndpointToGetToken string
29+
StableTokenMode bool
30+
ForceRefresh bool
2931
QueryName string
3032
Token *object.HashMap
3133
TokenKey string
@@ -239,8 +241,13 @@ func (accessToken *AccessToken) ApplyToRequest(request *http.Request, requestOpt
239241

240242
func (accessToken *AccessToken) sendRequest(ctx context.Context, credential *object.StringMap) (*response2.ResponseGetToken, error) {
241243
key := "json"
242-
if accessToken.RequestMethod == http.MethodGet {
243-
key = "query"
244+
if accessToken.StableTokenMode {
245+
accessToken.RequestMethod = http.MethodPost
246+
} else {
247+
if accessToken.RequestMethod == http.MethodGet {
248+
key = "query"
249+
}
250+
244251
}
245252
options := &object.HashMap{
246253
key: credential,
@@ -269,7 +276,14 @@ func (accessToken *AccessToken) sendRequest(ctx context.Context, credential *obj
269276

270277
// set body json
271278
if (*options)["json"] != nil {
272-
df.Json((*options)["json"])
279+
jsonData, _ := object.StructToHashMap((*options)["json"])
280+
281+
// this is for the stable token
282+
if accessToken.StableTokenMode && accessToken.ForceRefresh {
283+
(*jsonData)["force_refresh"] = true
284+
}
285+
286+
df.Json(jsonData)
273287
}
274288
//if (*options)["form_params"] != nil {
275289
// df.Json((*options)["form_params"])

src/miniProgram/application.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ type UserConfig struct {
106106
AppID string
107107
Secret string
108108

109+
StableTokenMode bool
110+
ForceRefresh bool
109111
RefreshToken string
110112
ComponentAppID string
111113
ComponentAppToken string
@@ -515,9 +517,10 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
515517

516518
"token": userConfig.Token,
517519
"aes_key": userConfig.AESKey,
518-
"refresh_token": userConfig.RefreshToken,
519520
"component_app_id": userConfig.ComponentAppID,
520521
"component_app_token": userConfig.ComponentAppToken,
522+
"stable_token_mode": userConfig.StableTokenMode,
523+
"refresh_token": userConfig.RefreshToken,
521524

522525
"response_type": userConfig.ResponseType,
523526
"http": &object.HashMap{

src/miniProgram/auth/accessToken.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,16 @@ func NewAccessToken(app kernel.ApplicationInterface) (*AccessToken, error) {
1818
}
1919

2020
// Override fields and functions
21-
token.EndpointToGetToken = "https://api.weixin.qq.com/cgi-bin/token"
21+
cfg := app.GetConfig()
22+
useStableToken := cfg.GetBool("stable_token_mode", false)
23+
forceRefresh := cfg.GetBool("force_refresh", false)
24+
if useStableToken {
25+
token.EndpointToGetToken = "https://api.weixin.qq.com/cgi-bin/stable_token"
26+
token.StableTokenMode = true
27+
token.ForceRefresh = forceRefresh
28+
} else {
29+
token.EndpointToGetToken = "https://api.weixin.qq.com/cgi-bin/token"
30+
}
2231
token.OverrideGetCredentials()
2332

2433
return token, err

src/officialAccount/application.go

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,13 @@ type OfficialAccount struct {
8989
}
9090

9191
type UserConfig struct {
92-
AppID string
93-
Secret string
94-
Token string
95-
AESKey string
96-
RefreshToken string
92+
AppID string
93+
Secret string
94+
Token string
95+
AESKey string
96+
StableTokenMode bool
97+
ForceRefresh bool
98+
RefreshToken string
9799

98100
ComponentAppID string
99101
ComponentAppToken string
@@ -449,11 +451,13 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
449451
}
450452
config := &object.HashMap{
451453

452-
"app_id": userConfig.AppID,
453-
"secret": userConfig.Secret,
454-
"token": userConfig.Token,
455-
"aes_key": userConfig.AESKey,
456-
"refresh_token": userConfig.RefreshToken,
454+
"app_id": userConfig.AppID,
455+
"secret": userConfig.Secret,
456+
"token": userConfig.Token,
457+
"aes_key": userConfig.AESKey,
458+
"stable_token_mode": userConfig.StableTokenMode,
459+
"force_refresh": userConfig.ForceRefresh,
460+
"refresh_token": userConfig.RefreshToken,
457461

458462
"component_app_id": userConfig.ComponentAppID,
459463
"component_app_token": userConfig.ComponentAppToken,

src/officialAccount/auth/accessToken.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,16 @@ func NewAccessToken(app kernel.ApplicationInterface) (*AccessToken, error) {
2222
}
2323

2424
// Override fields and functions
25-
token.EndpointToGetToken = "https://api.weixin.qq.com/cgi-bin/token"
25+
cfg := app.GetConfig()
26+
useStableToken := cfg.GetBool("stable_token_mode", false)
27+
forceRefresh := cfg.GetBool("force_refresh", false)
28+
if useStableToken {
29+
token.EndpointToGetToken = "https://api.weixin.qq.com/cgi-bin/stable_token"
30+
token.StableTokenMode = true
31+
token.ForceRefresh = forceRefresh
32+
} else {
33+
token.EndpointToGetToken = "https://api.weixin.qq.com/cgi-bin/token"
34+
}
2635
token.OverrideGetCredentials()
2736

2837
return token, nil

src/openPlatform/application.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,14 @@ type OpenPlatform struct {
4343
}
4444

4545
type UserConfig struct {
46-
AppID string
47-
Secret string
48-
AuthCode string
49-
Token string
50-
AESKey string
46+
AppID string
47+
Secret string
48+
AuthCode string
49+
Token string
50+
AESKey string
51+
StableTokenMode bool
52+
ForceRefresh bool
53+
RefreshToken string
5154

5255
ResponseType string
5356
Log Log
@@ -209,11 +212,13 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
209212
}
210213
config := &object.HashMap{
211214

212-
"app_id": userConfig.AppID,
213-
"secret": userConfig.Secret,
214-
"auth_code": userConfig.AuthCode,
215-
"token": userConfig.Token,
216-
"aes_key": userConfig.AESKey,
215+
"app_id": userConfig.AppID,
216+
"secret": userConfig.Secret,
217+
"auth_code": userConfig.AuthCode,
218+
"token": userConfig.Token,
219+
"aes_key": userConfig.AESKey,
220+
"stable_token_mode": userConfig.StableTokenMode,
221+
"refresh_token": userConfig.RefreshToken,
217222

218223
"response_type": userConfig.ResponseType,
219224
"http": &object.HashMap{

src/openWork/application.go

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,17 @@ type OpenWork struct {
3535
}
3636

3737
type UserConfig struct {
38-
AppID string
39-
Secret string
40-
ProviderCorpID string
41-
ProviderSecret string
42-
AuthCode string
43-
Token string
44-
AESKey string
45-
CallbackURL string
38+
AppID string
39+
Secret string
40+
ProviderCorpID string
41+
ProviderSecret string
42+
AuthCode string
43+
Token string
44+
AESKey string
45+
CallbackURL string
46+
StableTokenMode bool
47+
ForceRefresh bool
48+
RefreshToken string
4649

4750
ResponseType string
4851
Log Log
@@ -193,14 +196,16 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
193196
timeout = userConfig.Http.Timeout
194197
}
195198
config := &object.HashMap{
196-
"app_id": userConfig.AppID,
197-
"secret": userConfig.Secret,
198-
"auth_code": userConfig.AuthCode,
199-
"token": userConfig.Token,
200-
"aes_key": userConfig.AESKey,
201-
"provider_corpid": userConfig.ProviderCorpID,
202-
"provider_secret": userConfig.ProviderSecret,
203-
"callback_url": userConfig.CallbackURL,
199+
"app_id": userConfig.AppID,
200+
"secret": userConfig.Secret,
201+
"auth_code": userConfig.AuthCode,
202+
"token": userConfig.Token,
203+
"aes_key": userConfig.AESKey,
204+
"provider_corpid": userConfig.ProviderCorpID,
205+
"provider_secret": userConfig.ProviderSecret,
206+
"callback_url": userConfig.CallbackURL,
207+
"stable_token_mode": userConfig.StableTokenMode,
208+
"refresh_token": userConfig.RefreshToken,
204209

205210
"response_type": userConfig.ResponseType,
206211
"http": &object.HashMap{

src/payment/application.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ type UserConfig struct {
8787
SubMchID string
8888
Http Http
8989

90+
StableTokenMode bool
91+
ForceRefresh bool
92+
RefreshToken string
93+
9094
ResponseType string
9195
Log Log
9296
OAuth OAuth
@@ -411,6 +415,8 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
411415
"wechat_pay_serial": userConfig.WechatPaySerial,
412416
"sub_appid": userConfig.SubAppID,
413417
"sub_mch_id": userConfig.SubMchID,
418+
"stable_token_mode": userConfig.StableTokenMode,
419+
"refresh_token": userConfig.RefreshToken,
414420

415421
"response_type": userConfig.ResponseType,
416422
"log": &object.HashMap{

src/work/application.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ type UserConfig struct {
155155
AESKey string
156156
CallbackURL string
157157

158+
StableTokenMode bool
159+
ForceRefresh bool
160+
RefreshToken string
161+
158162
ResponseType string
159163
Log Log
160164
OAuth OAuth
@@ -527,12 +531,14 @@ func MapUserConfig(userConfig *UserConfig) (*object.HashMap, error) {
527531
timeout = userConfig.Http.Timeout
528532
}
529533
config := &object.HashMap{
530-
"corp_id": userConfig.CorpID,
531-
"agent_id": userConfig.AgentID,
532-
"secret": userConfig.Secret,
533-
"token": userConfig.Token,
534-
"aes_key": userConfig.AESKey,
535-
"callback_url": userConfig.CallbackURL,
534+
"corp_id": userConfig.CorpID,
535+
"agent_id": userConfig.AgentID,
536+
"secret": userConfig.Secret,
537+
"token": userConfig.Token,
538+
"aes_key": userConfig.AESKey,
539+
"callback_url": userConfig.CallbackURL,
540+
"stable_token_mode": userConfig.StableTokenMode,
541+
"refresh_token": userConfig.RefreshToken,
536542

537543
"response_type": userConfig.ResponseType,
538544
"http": &object.HashMap{

src/work/miniProgram/application.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ type UserConfig struct {
2626
AESKey string
2727
CallbackURL string
2828
Http *object.HashMap
29+
30+
StableTokenMode bool
31+
ForceRefresh bool
32+
RefreshToken string
2933
}
3034

3135
func NewApplication(config *UserConfig, extraInfos ...*kernel.ExtraInfo) (*Application, error) {

0 commit comments

Comments
 (0)