@@ -72,27 +72,43 @@ public function packMessage(
72
72
}
73
73
74
74
75
- public function sendTemplateMessage ($ toUserName , $ template_id , $ content ) {
76
- $ access_token = $ this ->getAccessToken ();
77
- if ($ access_token ) {
75
+ public function twoStepsRequest ($ url , $ get = [], $ post = null ) {
76
+ if (($ get ['access_token ' ] = '2 ' . $ this ->getAccessToken ())) {
78
77
$ result = httpkit::request (
79
- 'https://api.weixin.qq.com/cgi-bin/message/template/send ' , [
80
- 'access_token ' => $ access_token ,
81
- ], [
82
- 'touser ' => $ toUserName ,
83
- 'template_id ' => $ template_id ,
84
- 'data ' => $ content ,
85
- ], false , false , 3 , 3 , 'json ' , true
78
+ $ url , $ get , $ post , false , false , 5 , 3 , 'json ' , true
86
79
);
87
- return $ result
88
- && $ result ['http_code ' ] === 200
89
- && $ result ['json ' ]
90
- && @ (int ) $ result ['json ' ]['errcode ' ] === 0 ;
80
+ if ($ result && $ result ['http_code ' ] === 200 & $ result ['json ' ]) {
81
+ switch ((int ) @$ result ['json ' ]['errcode ' ]) {
82
+ case 0 :
83
+ return $ result ['json ' ];
84
+ case 42001 :
85
+ if (($ get ['access_token ' ] = $ this ->getAccessToken (true ))) {
86
+ $ result = httpkit::request (
87
+ $ url , $ get , $ post , false , false , 3 , 3 , 'json ' , true
88
+ );
89
+ if ($ result && $ result ['http_code ' ] === 200 && $ result ['json ' ]
90
+ && ((int ) @$ result ['json ' ]['errcode ' ] === 0 )) {
91
+ return $ result ['json ' ];
92
+ }
93
+ }
94
+ }
95
+ }
91
96
}
92
97
return null ;
93
98
}
94
99
95
100
101
+ public function sendTemplateMessage ($ toUserName , $ template_id , $ content ) {
102
+ return $ this ->twoStepsRequest (
103
+ 'https://api.weixin.qq.com/cgi-bin/message/template/send ' , [], [
104
+ 'touser ' => $ toUserName ,
105
+ 'template_id ' => $ template_id ,
106
+ 'data ' => $ content ,
107
+ ]
108
+ );
109
+ }
110
+
111
+
96
112
public static function xmlSafeStr ($ str ) {
97
113
return '<![CDATA[ ' . preg_replace (
98
114
"/[ \\x00- \\x08 \\x0b- \\x0c \\x0e- \\x1f]/ " , '' , $ str
@@ -154,16 +170,16 @@ public function xml_encode(
154
170
}
155
171
156
172
157
- public function getAccessToken () {
173
+ public function getAccessToken ($ update = false ) {
158
174
$ token_key = 'wechat_access_token ' ;
159
175
$ access_token = getCache ($ token_key );
160
- if (!$ access_token ) {
176
+ if (!$ access_token || $ update ) {
161
177
$ result = httpkit::request (
162
178
'https://api.weixin.qq.com/cgi-bin/token ' , [
163
179
'grant_type ' => 'client_credential ' ,
164
180
'appid ' => $ this ->appid ,
165
181
'secret ' => $ this ->secret ,
166
- ], null , false , false , 3 , 3 , 'json ' , true
182
+ ], null , false , false , 5 , 3 , 'json ' , true
167
183
);
168
184
if ($ result
169
185
&& $ result ['http_code ' ] === 200
@@ -179,41 +195,18 @@ public function getAccessToken() {
179
195
180
196
181
197
public function getUserInfo ($ openid ) {
182
- $ access_token = $ this ->getAccessToken ();
183
- if ($ access_token ) {
184
- $ result = httpkit::request (
185
- 'https://api.weixin.qq.com/cgi-bin/user/info ' , [
186
- 'access_token ' => $ access_token ,
187
- 'openid ' => $ openid ,
188
- ], null , false , false , 3 , 3 , 'json ' , true
189
- );
190
- if ($ result
191
- && $ result ['http_code ' ] === 200
192
- && $ result ['json ' ]
193
- && @ (int ) $ result ['json ' ]['subscribe ' ] === 1 ) {
194
- return $ result ['json ' ];
195
- }
196
- }
197
- return null ;
198
+ $ result = $ this ->twoStepsRequest (
199
+ 'https://api.weixin.qq.com/cgi-bin/user/info ' , ['openid ' => $ openid ]
200
+ );
201
+ return $ result && ((int ) @$ result ['subscribe ' ] === 1 ) ? $ result : null ;
198
202
}
199
203
200
204
201
205
public function getMenu () {
202
- $ access_token = $ this ->getAccessToken ();
203
- if ($ access_token ) {
204
- $ result = httpkit::request (
205
- 'https://api.weixin.qq.com/cgi-bin/menu/get ' , [
206
- 'access_token ' => $ access_token ,
207
- ], null , false , false , 3 , 3 , 'json ' , true
208
- );
209
- if ($ result
210
- && $ result ['http_code ' ] === 200
211
- && $ result ['json ' ]
212
- && @$ result ['json ' ]['menu ' ]) {
213
- return $ result ['json ' ]['menu ' ];
214
- }
215
- }
216
- return null ;
206
+ $ result = $ this ->twoStepsRequest (
207
+ 'https://api.weixin.qq.com/cgi-bin/menu/get '
208
+ );
209
+ return $ result && @$ result ['menu ' ] ? $ result ['menu ' ] : null ;
217
210
}
218
211
219
212
@@ -228,7 +221,7 @@ public function createMenu($menu) {
228
221
if ($ result
229
222
&& $ result ['http_code ' ] === 200
230
223
&& $ result ['json ' ]
231
- && @ (int ) $ result ['json ' ]['errcode ' ] === 0 ) {
224
+ && (int ) @ $ result ['json ' ]['errcode ' ] === 0 ) {
232
225
return $ this ->getMenu ();
233
226
}
234
227
}
@@ -237,21 +230,9 @@ public function createMenu($menu) {
237
230
238
231
239
232
public function deleteMenu () {
240
- $ access_token = $ this ->getAccessToken ();
241
- if ($ access_token ) {
242
- $ result = httpkit::request (
243
- 'https://api.weixin.qq.com/cgi-bin/menu/delete ' , [
244
- 'access_token ' => $ access_token ,
245
- ], null , false , false , 3 , 3 , 'json ' , true
246
- );
247
- if ($ result
248
- && $ result ['http_code ' ] === 200
249
- && $ result ['json ' ]
250
- && @ (int ) $ result ['json ' ]['errcode ' ] === 0 ) {
251
- return true ;
252
- }
253
- }
254
- return null ;
233
+ return $ this ->twoStepsRequest (
234
+ 'https://api.weixin.qq.com/cgi-bin/menu/delete '
235
+ );
255
236
}
256
237
257
238
}
0 commit comments