@@ -103,6 +103,27 @@ func (serverGuard *ServerGuard) OverrideNotify() {
103
103
}
104
104
105
105
// 回调配置
106
+ // https://developer.work.weixin.qq.com/document/path/90930
107
+ func (serverGuard * ServerGuard ) VerifyURL (request * http.Request ) (httpRS * http.Response , err error ) {
108
+ logger := (* serverGuard .App ).GetComponent ("Logger" ).(* logger2.Logger )
109
+
110
+ //_, err = serverGuard.Validate(request)
111
+ //if err != nil {
112
+ // return nil, err
113
+ //}
114
+ strEcho := request .URL .Query ().Get ("echostr" )
115
+ decryptedMes , err := serverGuard .decryptEchoStr (request , strEcho )
116
+ bodyData := io .NopCloser (bytes .NewBufferString (decryptedMes ))
117
+ rs := & http.Response {
118
+ Body : bodyData ,
119
+ StatusCode : http .StatusOK ,
120
+ }
121
+
122
+ logger .Info ("Server response created:" , "content" , decryptedMes )
123
+
124
+ return rs , err
125
+ }
126
+
106
127
// https://developer.work.weixin.qq.com/document/path/90930
107
128
func (serverGuard * ServerGuard ) Serve (request * http.Request ) (response * http.Response , err error ) {
108
129
@@ -507,6 +528,24 @@ func (serverGuard *ServerGuard) DecryptEvent(request *http.Request, content stri
507
528
508
529
}
509
530
531
+ func (serverGuard * ServerGuard ) decryptEchoStr (request * http.Request , content string ) (decryptMessage string , err error ) {
532
+
533
+ encryptor := (* serverGuard .App ).GetComponent ("Encryptor" ).(* Encryptor )
534
+ query := request .URL .Query ()
535
+ buf , cryptErr := encryptor .VerifyUrl (
536
+ content ,
537
+ query .Get ("msg_signature" ),
538
+ query .Get ("nonce" ),
539
+ query .Get ("timestamp" ),
540
+ )
541
+ if cryptErr != nil {
542
+ return "" , errors .New (cryptErr .ErrMsg )
543
+ }
544
+
545
+ return string (buf ), err
546
+
547
+ }
548
+
510
549
func (serverGuard * ServerGuard ) decryptMessage (request * http.Request , content string ) (callbackHeader * models.CallbackMessageHeader , decryptMessage interface {}, err error ) {
511
550
512
551
encryptor := (* serverGuard .App ).GetComponent ("Encryptor" ).(* Encryptor )
0 commit comments