|
|
@ -11,6 +11,7 @@ import ( |
|
|
|
"hudongzhuanjia/models" |
|
|
|
"hudongzhuanjia/utils" |
|
|
|
"io" |
|
|
|
"io/ioutil" |
|
|
|
"math" |
|
|
|
"strconv" |
|
|
|
"time" |
|
|
@ -264,15 +265,20 @@ type NotifyRequest struct { |
|
|
|
|
|
|
|
func NotifyOrder(w io.Reader) (order *models.UserOrder, err error) { |
|
|
|
var exist bool |
|
|
|
res := new(NotifyRequest) |
|
|
|
err = xml.NewDecoder(w).Decode(res) |
|
|
|
res := NotifyRequest{} |
|
|
|
body, err := ioutil.ReadAll(w) |
|
|
|
if err != nil { |
|
|
|
err = fmt.Errorf("xml.NewDecoder.Decode:%w", err) |
|
|
|
err = fmt.Errorf("body read all error:%+v", err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
err = xml.Unmarshal(body, &res) |
|
|
|
if err != nil { |
|
|
|
err = fmt.Errorf("xml unmarsal error:%+v", err) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if res.ReturnCode != CODE_SUCCESS { |
|
|
|
return nil, fmt.Errorf("network error, retrun_code: %v and return_msg: %v", res.ReturnCode, res.ReturnMsg) |
|
|
|
return nil, fmt.Errorf("network error, retrun_code: %+v and return_msg: %+v", res.ReturnCode, res.ReturnMsg) |
|
|
|
} |
|
|
|
|
|
|
|
if res.ResultCode == CODE_SUCCESS && res.TradeType == CODE_TRADE_SUCCESS { |
|
|
@ -286,13 +292,20 @@ func NotifyOrder(w io.Reader) (order *models.UserOrder, err error) { |
|
|
|
} |
|
|
|
exist, err = userOrder.GetByOutTradeNo(res.OutTradeNo) |
|
|
|
if err == nil || !exist { |
|
|
|
err = fmt.Errorf("network error, retrun_code: %v and return_msg: %v", res.ReturnCode, res.ReturnMsg) |
|
|
|
err = fmt.Errorf("user order get by out_trade_no: %+v, error: %+v, exist: %+v", res.OutTradeNo, err, exist) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
err = HandleSuccess(&OrderDelayQueueParam{ |
|
|
|
Order: userOrder, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
logger.Error(fmt.Sprintf("handle success: %v", err)) |
|
|
|
return |
|
|
|
} |
|
|
|
return userOrder, nil |
|
|
|
} else { |
|
|
|
err = fmt.Errorf("trade error, err_code: %v and err_code_des: %v", res.ErrCode, res.ErrCodeDes) |
|
|
|
err = fmt.Errorf("trade error, err_code: %+v and err_code_des: %+v", res.ErrCode, res.ErrCodeDes) |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|