- fix jd callback msg handling, some callback msg should unescqpe firstly.
This commit is contained in:
@@ -32,7 +32,7 @@ type CallbackDeliveryStatusMsg struct {
|
||||
DeliveryManPhone string `json:"deliveryManPhone"`
|
||||
DeliveryCarrierNo string `json:"deliveryCarrierNo"`
|
||||
DeliveryCarrierName string `json:"deliveryCarrierName"`
|
||||
DeliveryStatus int `json:"deliveryStatus"`
|
||||
DeliveryStatus string `json:"deliveryStatus"`
|
||||
Remark string `json:"remark"`
|
||||
FailType string `json:"failType"`
|
||||
CreatePin string `json:"createPin"`
|
||||
@@ -41,7 +41,8 @@ type CallbackDeliveryStatusMsg struct {
|
||||
}
|
||||
|
||||
var (
|
||||
SuccessResponse = &CallbackResponse{Code: "0", Msg: "success", Data: ""}
|
||||
SuccessResponse = &CallbackResponse{Code: "0", Msg: "success", Data: ""}
|
||||
FormatErrorResponse = &CallbackResponse{Code: "-1", Msg: "failed", Data: ""}
|
||||
)
|
||||
|
||||
func (a *API) unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
|
||||
@@ -56,19 +57,18 @@ func (a *API) unmarshalData(strData string, msg interface{}) (callbackResponse *
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *CallbackResponse) {
|
||||
func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *CallbackResponse) {
|
||||
mapData := make(map[string]interface{})
|
||||
mapData["token"] = request.FormValue("token")
|
||||
mapData["app_key"] = request.FormValue("app_key")
|
||||
mapData["timestamp"] = request.FormValue("timestamp")
|
||||
mapData["format"] = request.FormValue("format")
|
||||
mapData["token"] = values.Get("token")
|
||||
mapData["app_key"] = values.Get("app_key")
|
||||
mapData["timestamp"] = values.Get("timestamp")
|
||||
mapData["format"] = values.Get("format")
|
||||
mapData["app_secret"] = a.appSecret
|
||||
mapData["v"] = request.FormValue("v")
|
||||
mapData[paramJson] = request.FormValue(paramJson)
|
||||
|
||||
mapData["v"] = values.Get("v")
|
||||
mapData[paramJson] = values.Get(paramJson)
|
||||
sign := a.signParams(mapData)
|
||||
if sign != request.FormValue(signKey) {
|
||||
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, request.FormValue(signKey))
|
||||
if sign != values.Get(signKey) {
|
||||
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, values.Get(signKey))
|
||||
return &CallbackResponse{
|
||||
Code: ResponseCodeInvalidSign,
|
||||
Msg: platformapi.ErrStrCallbackSignatureIsWrong,
|
||||
@@ -79,23 +79,16 @@ func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *
|
||||
}
|
||||
|
||||
func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) {
|
||||
if callbackResponse = a.CheckCallbackValidation(request); callbackResponse != nil {
|
||||
result, err := utils.HTTPRequest2Values(request, needDecode)
|
||||
if err != nil {
|
||||
return FormatErrorResponse
|
||||
}
|
||||
if callbackResponse = a.CheckCallbackValidation(result); callbackResponse != nil {
|
||||
return callbackResponse
|
||||
}
|
||||
|
||||
jdParamJSON := request.FormValue(paramJson)
|
||||
if needDecode {
|
||||
if jdParamJSON2, err := url.QueryUnescape(jdParamJSON); err == nil {
|
||||
jdParamJSON = jdParamJSON2
|
||||
} else {
|
||||
return &CallbackResponse{
|
||||
Code: ResponseCodeAbnormalParam,
|
||||
Msg: fmt.Sprintf(platformapi.ErrStrUnescapeError, jdParamJSON, err),
|
||||
Data: jdParamJSON,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jdParamJSON := result.Get(paramJson)
|
||||
baseapi.SugarLogger.Debug(jdParamJSON)
|
||||
if callbackResponse = a.unmarshalData(jdParamJSON, msg); callbackResponse != nil {
|
||||
return callbackResponse
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user