- call parseForm explicit for http.Response
This commit is contained in:
@@ -18,7 +18,7 @@ func init() {
|
|||||||
sugarLogger = logger.Sugar()
|
sugarLogger = logger.Sugar()
|
||||||
baseapi.Init(sugarLogger)
|
baseapi.Init(sugarLogger)
|
||||||
|
|
||||||
api = NewWithAgentID(239461075, "ding7ab5687f3784a8db", "ding7iu9cptairtcls0c", "LWrZAFeqUfuVv7n_tc8vPpCAx6PT4CwManx2XCVhJOqGsx2L5XCDuX1sAN_JtvsI")
|
api = NewWithAgentID(241047291, "ding7ab5687f3784a8db", "dingpx4hcf55zb4ubewg", "1zooB4bmEXPesdwb1ElWASVQ1vinOSZM-1XCUFrrSjHsNAId1UuVCT5tmHSmg5_V")
|
||||||
api.RetrieveToken()
|
api.RetrieveToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,15 +84,18 @@ func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) {
|
func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) {
|
||||||
request.ParseForm()
|
err := request.ParseForm()
|
||||||
if callbackResponse = a.CheckCallbackValidation(request); callbackResponse != nil {
|
if err == nil {
|
||||||
return nil, callbackResponse
|
if callbackResponse = a.CheckCallbackValidation(request); callbackResponse != nil {
|
||||||
|
return nil, callbackResponse
|
||||||
|
}
|
||||||
|
msg = new(CallbackMsg)
|
||||||
|
if callbackResponse = a.unmarshalData(request.FormValue("cmd"), []byte(request.FormValue("body")), &msg.Body); callbackResponse != nil {
|
||||||
|
return nil, callbackResponse
|
||||||
|
}
|
||||||
|
msg.Cmd = request.FormValue("cmd")
|
||||||
|
msg.Timestamp = utils.Str2Int64(utils.Interface2String(request.FormValue("timestamp")))
|
||||||
|
return msg, nil
|
||||||
}
|
}
|
||||||
msg = new(CallbackMsg)
|
return nil, a.Err2CallbackResponse("", err, nil)
|
||||||
if callbackResponse = a.unmarshalData(request.FormValue("cmd"), []byte(request.FormValue("body")), &msg.Body); callbackResponse != nil {
|
|
||||||
return nil, callbackResponse
|
|
||||||
}
|
|
||||||
msg.Cmd = request.FormValue("cmd")
|
|
||||||
msg.Timestamp = utils.Str2Int64(utils.Interface2String(request.FormValue("timestamp")))
|
|
||||||
return msg, nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,22 +50,25 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *CallbackResponse) {
|
func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *CallbackResponse) {
|
||||||
request.ParseForm()
|
err := request.ParseForm()
|
||||||
sign := a.signParams(request.PostForm)
|
if err == nil {
|
||||||
if sign != request.FormValue(signKey) {
|
sign := a.signParams(request.PostForm)
|
||||||
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, request.FormValue(signKey))
|
if sign != request.FormValue(signKey) {
|
||||||
return SignatureIsNotOk
|
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, request.FormValue(signKey))
|
||||||
}
|
return SignatureIsNotOk
|
||||||
|
}
|
||||||
|
|
||||||
for _, valueKey := range []string{"delivery_id", "mt_peisong_id", "order_id"} {
|
for _, valueKey := range []string{"delivery_id", "mt_peisong_id", "order_id"} {
|
||||||
if request.FormValue(valueKey) == "" {
|
if request.FormValue(valueKey) == "" {
|
||||||
baseapi.SugarLogger.Errorf("Missing mandatory param PostForm:%v, valueKey:%v", request.PostForm, valueKey)
|
baseapi.SugarLogger.Errorf("Missing mandatory param PostForm:%v, valueKey:%v", request.PostForm, valueKey)
|
||||||
return &CallbackResponse{
|
return &CallbackResponse{
|
||||||
Code: -1,
|
Code: -1,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
return Err2CallbackResponse(err, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) GetOrderCallbackMsg(request *http.Request) (orderMsg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
func (a *API) GetOrderCallbackMsg(request *http.Request) (orderMsg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
|
||||||
|
|||||||
@@ -52,31 +52,39 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) {
|
func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) {
|
||||||
data := utils.URLValues2Map(request.PostForm)
|
err := request.ParseForm()
|
||||||
if dataSign, ok := data[signKey]; ok {
|
if err == nil {
|
||||||
fullURL := strings.TrimRight(a.callbackURL+request.URL.Path, "/")
|
data := utils.URLValues2Map(request.Form)
|
||||||
sign := a.signParams(fullURL+"?", data)
|
if dataSign, ok := data[signKey]; ok {
|
||||||
if sign != dataSign.(string) {
|
fullURL := strings.TrimRight(a.callbackURL+request.URL.Path, "/")
|
||||||
baseapi.SugarLogger.Debugf("mtwm GetCallbackMsg my sign:%v, data sign:%v", sign, dataSign.(string))
|
sign := a.signParams(fullURL+"?", data)
|
||||||
return nil, SignatureIsNotOk
|
if sign != dataSign.(string) {
|
||||||
}
|
baseapi.SugarLogger.Debugf("mtwm GetCallbackMsg my sign:%v, data sign:%v", sign, dataSign.(string))
|
||||||
cmd := strings.Trim(request.URL.EscapedPath(), "/")
|
callbackResponse = SignatureIsNotOk
|
||||||
cmd = cmd[strings.LastIndex(cmd, "/")+1:]
|
} else {
|
||||||
msg = &CallbackMsg{
|
cmd := strings.Trim(request.URL.EscapedPath(), "/")
|
||||||
Cmd: cmd,
|
cmd = cmd[strings.LastIndex(cmd, "/")+1:]
|
||||||
}
|
msg = &CallbackMsg{
|
||||||
msg.Data = make(url.Values)
|
Cmd: cmd,
|
||||||
for k, v := range data {
|
}
|
||||||
// 美团外卖的用户催单信息的timestamp是毫秒(其它的事件是秒),统一归一化为秒
|
msg.Data = make(url.Values)
|
||||||
if cmd == MsgTypeUserUrgeOrder && k == "timestamp" {
|
for k, v := range data {
|
||||||
intV := utils.Str2Int64(v.(string))
|
// 美团外卖的用户催单信息的timestamp是毫秒(其它的事件是秒),统一归一化为秒
|
||||||
if intV > time.Now().Unix()*2 {
|
if cmd == MsgTypeUserUrgeOrder && k == "timestamp" {
|
||||||
v = utils.Int64ToStr(intV / 1000)
|
intV := utils.Str2Int64(v.(string))
|
||||||
|
if intV > time.Now().Unix()*2 {
|
||||||
|
v = utils.Int64ToStr(intV / 1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
msg.Data.Set(k, v.(string))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg.Data.Set(k, v.(string))
|
} else {
|
||||||
|
callbackResponse = SignatureIsNotOk
|
||||||
}
|
}
|
||||||
return msg, nil
|
} else {
|
||||||
|
baseapi.SugarLogger.Warnf("mtwm GetCallbackMsg ParseForm failed with error:%v", err)
|
||||||
|
callbackResponse = Err2CallbackResponse(err, "")
|
||||||
}
|
}
|
||||||
return nil, SuccessResponse
|
return msg, callbackResponse
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user