package mtwmapi import ( "net/http" "net/url" "strings" "git.rosy.net.cn/baseapi/utils" ) const ( MsgTypeWaybillStatus = "waybillStatus" MsgTypeNewOrder = "newOrder" MsgTypeOrderAccepted = "orderAccepted" MsgTypeOrderFinished = "orderFinished" MsgTypeOrderFinancial = "orderFinancial" MsgTypeUserUrgeOrder = "userUrgeOrder" MsgTypePrivateNumberDowngrade = "numberDowngrade" MsgTypeOrderModified = "orderModified" ) type CallbackResponse struct { Data string `json:"data"` } // !!!特别注意,Data中的数据 type CallbackMsg struct { Data url.Values Cmd string } var ( SuccessResponse = &CallbackResponse{Data: "ok"} SignatureIsNotOk = &CallbackResponse{Data: "sign failed"} ) func Err2CallbackResponse(err error, data string) *CallbackResponse { if err == nil { return SuccessResponse } if data == "" { data = err.Error() } return &CallbackResponse{ Data: data, } } func (a *API) GetCallbackMsg(request *http.Request) (msg *CallbackMsg, callbackResponse *CallbackResponse) { data := utils.URLValues2Map(request.PostForm) fullURL := strings.TrimRight(request.URL.String(), "/") sign := a.signParams(fullURL+"?", data) if sign != data[signKey] { return nil, SignatureIsNotOk } cmd := strings.Trim(request.URL.EscapedPath(), "/") msg = &CallbackMsg{ Cmd: cmd, Data: request.PostForm, } return msg, nil }