diff --git a/platformapi/mtwmapi/callback.go b/platformapi/mtwmapi/callback.go index 861bddff..0449bc90 100644 --- a/platformapi/mtwmapi/callback.go +++ b/platformapi/mtwmapi/callback.go @@ -5,6 +5,7 @@ import ( "net/url" "strings" + "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/utils" ) @@ -51,19 +52,23 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse { func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) { data := utils.URLValues2Map(request.PostForm) - fullURL := strings.TrimRight(a.callbackURL+request.URL.Path, "/") - sign := a.signParams(fullURL+"?", data) - if sign != data[signKey] { - return nil, SignatureIsNotOk + if dataSign, ok := data[signKey]; ok { + fullURL := strings.TrimRight(a.callbackURL+request.URL.Path, "/") + sign := a.signParams(fullURL+"?", data) + if sign != dataSign.(string) { + baseapi.SugarLogger.Debugf("mtwm GetCallbackMsg my sign:%v, data sign:%v", sign, dataSign.(string)) + return nil, SignatureIsNotOk + } + cmd := strings.Trim(request.URL.EscapedPath(), "/") + cmd = cmd[strings.LastIndex(cmd, "/")+1:] + msg = &CallbackMsg{ + Cmd: cmd, + } + msg.Data = make(url.Values) + for k, v := range data { + msg.Data.Set(k, v.(string)) + } + return msg, nil } - cmd := strings.Trim(request.URL.EscapedPath(), "/") - cmd = cmd[strings.LastIndex(cmd, "/")+1:] - msg = &CallbackMsg{ - Cmd: cmd, - } - msg.Data = make(url.Values) - for k, v := range data { - msg.Data.Set(k, v.(string)) - } - return msg, nil + return nil, SuccessResponse } diff --git a/utils/typeconv.go b/utils/typeconv.go index 663759ab..4a65bb79 100644 --- a/utils/typeconv.go +++ b/utils/typeconv.go @@ -106,7 +106,7 @@ func MustInterface2Float64(data interface{}) float64 { } func Interface2FloatWithDefault(data interface{}, defValue float64) (retVal float64) { - if data == nil { + if _, ok := data.(json.Number); !ok { return defValue } return MustInterface2Float64(data)