Browse Source

callback

master
黄梓健 5 years ago
parent
commit
a9225e7856
  1. 8
      controllers/common/wechat_oauth.go
  2. 25
      services/pay/order.go

8
controllers/common/wechat_oauth.go

@ -78,14 +78,6 @@ func (t *WeChatOauthCtl) CallbackOrder() {
logger.Error(fmt.Sprintf("出现错误: %v", err))
return
}
err = pay_service.HandleSuccess(&pay_service.OrderDelayQueueParam{
Order: order,
})
if err != nil {
logger.Error(fmt.Sprintf("出现错误: %v", err))
return
}
param := new(CallbackParam)
param.ReturnCode = CDATA{Text: "SUCCESS"}

25
services/pay/order.go

@ -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
}
}

Loading…
Cancel
Save