修改jdapi回调取消息为两步

This commit is contained in:
gazebo
2019-12-03 15:06:24 +08:00
parent 1dc40112d5
commit cd6896bc4b
3 changed files with 50 additions and 39 deletions

View File

@@ -176,7 +176,7 @@ func Err2CallbackResponse(err error, data string) *CallbackResponse {
}
}
func (a *API) unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
func unmarshalData(strData string, msg interface{}) (callbackResponse *CallbackResponse) {
err := utils.UnmarshalUseNumber([]byte(strData), msg)
if err != nil {
return &CallbackResponse{
@@ -188,6 +188,19 @@ func (a *API) unmarshalData(strData string, msg interface{}) (callbackResponse *
return nil
}
func GetCallbackMsg(request *http.Request, needDecode bool) (values url.Values, token, msgURL string, callbackResponse *CallbackResponse) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
return nil, "", "", Err2CallbackResponse(err, "")
}
values, err = utils.HTTPBody2Values(data, needDecode)
if err != nil {
return nil, "", "", FormatErrorResponse
}
token = values.Get("token")
return values, token, getMsgURLFromRequest(request), nil
}
func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *CallbackResponse) {
mapData := utils.URLValues2Map(values)
sign := a.signParams(mapData)
@@ -198,56 +211,37 @@ func (a *API) CheckCallbackValidation(values url.Values) (callbackResponse *Call
return nil
}
func (a *API) getCommonOrderCallbackMsg(request *http.Request, msg interface{}, needDecode bool) (callbackResponse *CallbackResponse) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
return Err2CallbackResponse(err, "")
}
// baseapi.SugarLogger.Debug(string(data))
result, err := utils.HTTPBody2Values(data, needDecode)
if err != nil {
return FormatErrorResponse
}
if callbackResponse = a.CheckCallbackValidation(result); callbackResponse != nil {
func (a *API) getCommonOrderCallbackMsg(values url.Values, msg interface{}) (callbackResponse *CallbackResponse) {
if callbackResponse = a.CheckCallbackValidation(values); callbackResponse != nil {
return callbackResponse
}
jdParamJSON := result.Get(paramJson)
jdParamJSON := values.Get(paramJson)
// baseapi.SugarLogger.Debug(jdParamJSON)
if callbackResponse = a.unmarshalData(jdParamJSON, msg); callbackResponse != nil {
if callbackResponse = unmarshalData(jdParamJSON, msg); callbackResponse != nil {
return callbackResponse
}
return nil
}
func (a *API) GetOrderCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
msg = new(CallbackOrderMsg)
if callbackResponse = a.getCommonOrderCallbackMsg(request, msg, false); callbackResponse == nil {
msg.MsgURL = getMsgURLFromRequest(request)
func (a *API) GetOrderCallbackMsg(values url.Values, msgURL string) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
msg.MsgURL = msgURL
}
return msg, callbackResponse
}
func (a *API) GetOrderApplyCancelCallbackMsg(request *http.Request) (msg *CallbackOrderMsg, callbackResponse *CallbackResponse) {
msg = new(CallbackOrderMsg)
if callbackResponse = a.getCommonOrderCallbackMsg(request, msg, true); callbackResponse == nil {
msg.MsgURL = getMsgURLFromRequest(request)
func (a *API) GetOrderDeliveryCallbackMsg(values url.Values, msgURL string) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
if callbackResponse = a.getCommonOrderCallbackMsg(values, &msg); callbackResponse == nil {
msg.MsgURL = msgURL
}
return msg, callbackResponse
}
func (a *API) GetOrderDeliveryCallbackMsg(request *http.Request) (msg *CallbackDeliveryStatusMsg, callbackResponse *CallbackResponse) {
if callbackResponse = a.getCommonOrderCallbackMsg(request, &msg, true); callbackResponse == nil {
msg.MsgURL = getMsgURLFromRequest(request)
}
return msg, callbackResponse
}
func (a *API) GetStoreStockCallbackMsg(request *http.Request) (msg *CallbackStoreStockMsg, callbackResponse *CallbackResponse) {
func (a *API) GetStoreStockCallbackMsg(values url.Values, msgURL string) (msg *CallbackStoreStockMsg, callbackResponse *CallbackResponse) {
msg = new(CallbackStoreStockMsg)
msg.MsgURL = getMsgURLFromRequest(request)
msg.MsgURL = msgURL
var tmpMsg map[string]interface{}
callbackResponse = a.getCommonOrderCallbackMsg(request, &tmpMsg, true)
callbackResponse = a.getCommonOrderCallbackMsg(values, &tmpMsg)
if callbackResponse == nil {
msg.StationNo = utils.Interface2String(tmpMsg["stationNo"])
msg.SkuId = utils.Str2Int64(utils.Interface2String(tmpMsg["skuId"]))