京东回调重新实现

This commit is contained in:
gazebo
2019-12-07 19:16:55 +08:00
parent 82fa077c1b
commit 61176c2618
3 changed files with 133 additions and 134 deletions

View File

@@ -122,7 +122,7 @@ type CallbackMsg struct {
V string `json:"v"`
JdParamJSON string `json:"jd_param_json"`
Param interface{} `json:"-"`
Param interface{} `json:"param"`
}
type CallbackOrderMsg struct {
@@ -287,17 +287,17 @@ func getMsgURLFromRequest(request *http.Request) (msgURL string) {
return msgURL
}
func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, 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 {
return nil, Err2CallbackResponse(err, "")
return nil, nil, Err2CallbackResponse(err, "")
}
values, err := utils.HTTPBody2Values(data, needDecodeMap[msgURL])
if err != nil {
return nil, FormatErrorResponse
return nil, nil, FormatErrorResponse
}
mapData := utils.URLValues2Map(values)
mapData = utils.URLValues2Map(values)
if err = utils.Map2StructByJson(mapData, &callbackMsg, false); err == nil {
callbackMsg.MsgURL = msgURL
if msgURL == CallbackMsgDeliveryCarrierModify {
@@ -316,16 +316,15 @@ func GetCallbackMsg2(request *http.Request) (callbackMsg *CallbackMsg, callbackR
}
}
if err != nil {
return nil, Err2CallbackResponse(err, "")
return nil, nil, Err2CallbackResponse(err, "")
}
return callbackMsg, callbackResponse
return callbackMsg, mapData, callbackResponse
}
func (a *API) CheckCallbackValidation2(callbackMsg *CallbackMsg) (callbackResponse *CallbackResponse) {
mapData := utils.Struct2FlatMap(callbackMsg)
func (a *API) CheckCallbackValidation2(mapData map[string]interface{}, signInData string) (callbackResponse *CallbackResponse) {
sign := a.signParams(mapData)
if sign != callbackMsg.Sign {
baseapi.SugarLogger.Infof("Signature is not ok, mine:%v, get:%v", sign, callbackMsg.Sign)
if sign != signInData {
baseapi.SugarLogger.Infof("Signature is not ok, mine:%s, signInData:%s", sign, signInData)
return FormatErrorResponse
}
return nil