This commit is contained in:
邹宗楠
2023-12-04 16:59:31 +08:00
parent 968a3f7cc3
commit a64c61473c

View File

@@ -2,6 +2,7 @@ package jdapi
import (
"encoding/json"
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/jx-callback/globals"
"io/ioutil"
"net/http"
@@ -257,7 +258,7 @@ func getMsgURLFromRequest(request *http.Request) (msgURL string) {
return msgURL
}
func GetCallbackMsg(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
msgURL := getMsgURLFromRequest(request)
data, err := ioutil.ReadAll(request.Body)
if err != nil {
@@ -317,68 +318,67 @@ func GetCallbackMsg(request *http.Request) (callbackMsg *CallbackMsg, mapData ma
return callbackMsg, mapData, callbackResponse
}
//
//func GetCallbackMsg(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
// msgURL := getMsgURLFromRequest(request)
// data, err := ioutil.ReadAll(request.Body)
// if err != nil {
// return nil, nil, Err2CallbackResponse(err, "")
// }
// values, err := utils.HTTPBody2Values(data, needDecodeMap[msgURL])
// if err != nil {
// return nil, nil, FormatErrorResponse
// }
// mapData = utils.URLValues2Map(values)
// if err := json.Unmarshal(data, &callbackMsg); err != nil {
// return nil, nil, Err2CallbackResponse(err, "")
// }
//
// if err == nil {
// callbackMsg.MsgURL = msgURL
// if msgURL == CallbackMsgPushDeliveryStatus {
// var deliveryMsg *CallbackDeliveryStatusMsg
// if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg); err == nil {
// callbackMsg.Param = deliveryMsg
// deliveryMsg.CallbackMsg = callbackMsg
// }
// } else if msgURL == CallbackMsgStockIsHave {
// var mapData map[string]interface{}
// if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &mapData); err == nil {
// stockMsg := map2StockCallbackMsg(mapData)
// callbackMsg.Param = stockMsg
// stockMsg.CallbackMsg = callbackMsg
// }
// } else if msgURL == CallbackMsgOrderInfoChange {
// var orderInfoMsg *CallbackOrderInfoChangeMsg
// if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderInfoMsg); err == nil {
// callbackMsg.Param = orderInfoMsg
// orderInfoMsg.CallbackMsg = callbackMsg
// }
// } else if msgURL == CallBackMsgMemberCreateCard || msgURL == CallBackMsgMemberRenewCard {
// var orderInfoMsg *CallbackMemberMsg
// if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderInfoMsg); err == nil {
// callbackMsg.Param = orderInfoMsg
// orderInfoMsg.CallbackMsg = callbackMsg
// }
// } else {
// var orderMsg *CallbackOrderMsg
// if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg); err == nil {
// callbackMsg.Param = orderMsg
// orderMsg.CallbackMsg = callbackMsg
// }
// }
// }
// if err != nil {
// return nil, nil, Err2CallbackResponse(err, "")
// }
// return callbackMsg, mapData, callbackResponse
//}
func GetCallbackMsg(request *http.Request) (callbackMsg *CallbackMsg, mapData map[string]interface{}, callbackResponse *CallbackResponse) {
msgURL := getMsgURLFromRequest(request)
data, err := ioutil.ReadAll(request.Body)
if err != nil {
return nil, nil, Err2CallbackResponse(err, "")
}
values, err := utils.HTTPBody2Values(data, needDecodeMap[msgURL])
if err != nil {
return nil, nil, FormatErrorResponse
}
mapData = utils.URLValues2Map(values)
globals.SugarLogger.Debugf("==============data := %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("==============msgURL := %s", msgURL)
globals.SugarLogger.Debugf("==============mapData := %s", utils.Format4Output(mapData, false))
globals.SugarLogger.Debugf("==============msgURL := %s", msgURL)
if err = utils.Map2StructByJson(mapData, &callbackMsg, false); err == nil {
globals.SugarLogger.Debugf("==============callbackMsg := %s", utils.Format4Output(callbackMsg, false))
callbackMsg.MsgURL = msgURL
if msgURL == CallbackMsgPushDeliveryStatus {
var deliveryMsg *CallbackDeliveryStatusMsg
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &deliveryMsg); err == nil {
callbackMsg.Param = deliveryMsg
deliveryMsg.CallbackMsg = callbackMsg
}
} else if msgURL == CallbackMsgStockIsHave {
var mapData map[string]interface{}
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &mapData); err == nil {
stockMsg := map2StockCallbackMsg(mapData)
callbackMsg.Param = stockMsg
stockMsg.CallbackMsg = callbackMsg
}
} else if msgURL == CallbackMsgOrderInfoChange {
var orderInfoMsg *CallbackOrderInfoChangeMsg
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderInfoMsg); err == nil {
callbackMsg.Param = orderInfoMsg
orderInfoMsg.CallbackMsg = callbackMsg
}
} else if msgURL == CallBackMsgMemberCreateCard || msgURL == CallBackMsgMemberRenewCard {
var orderInfoMsg *CallbackMemberMsg
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderInfoMsg); err == nil {
callbackMsg.Param = orderInfoMsg
orderInfoMsg.CallbackMsg = callbackMsg
}
} else {
var orderMsg *CallbackOrderMsg
if err = utils.UnmarshalUseNumber([]byte(callbackMsg.JdParamJSON), &orderMsg); err == nil {
callbackMsg.Param = orderMsg
orderMsg.CallbackMsg = callbackMsg
}
}
}
if err != nil {
return nil, nil, Err2CallbackResponse(err, "")
}
return callbackMsg, mapData, callbackResponse
}
func (a *API) CheckCallbackValidation(mapData map[string]interface{}, signInData string) (callbackResponse *CallbackResponse) {
//sign := a.signParams(mapData)
//if sign != signInData {
// baseapi.SugarLogger.Infof("Signature is not ok, mine:%s, signInData:%s", sign, signInData)
// return FormatErrorResponse
//}
sign := a.signParams(mapData)
if sign != signInData {
baseapi.SugarLogger.Infof("Signature is not ok, mine:%s, signInData:%s", sign, signInData)
return FormatErrorResponse
}
return nil
}