This commit is contained in:
邹宗楠
2022-06-01 21:57:18 +08:00
parent 3b59f860d8
commit fe35910c98
9 changed files with 109 additions and 36 deletions

View File

@@ -50,50 +50,50 @@ func pay4OrderByTT(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp
return orderPay, err
}
func OnTTPayCallback(msg *wxpayapi.CallbackMsg) (err error) {
func OnTTPayCallback(msg *tiktok.DetailCallBackMessage, refund *tiktok.DetailCallBackMessage2Refund, payType string) (err error) {
globals.SugarLogger.Debugf("OnWxPayCallback msg:%s", utils.Format4Output(msg, true))
switch msg.MsgType {
case wxpayapi.MsgTypePay:
err = onWxpayFinished(msg.Data.(*wxpayapi.PayResultMsg))
case wxpayapi.MsgTypeRefund:
err = onWxpayRefund(msg.Data.(*wxpayapi.RefundResultMsg))
switch payType {
case tiktok.PayStatus: // 支付回调
err = onTTPayFinished(msg)
case tiktok.RefundStatus: // 退款回调
err = onTTPayRefund(refund)
}
return err
}
func onTTPayFinished(msg *wxpayapi.PayResultMsg) (err error) {
func onTTPayFinished(msg *tiktok.DetailCallBackMessage) (err error) {
orderPay := &model.OrderPay{
PayOrderID: msg.OutTradeNo,
PayOrderID: msg.CpOrderno,
PayType: model.PayTypeWX,
}
orderPay.DeletedAt = utils.DefaultTimeValue
db := dao.GetDB()
if err = dao.GetEntity(db, orderPay, "PayOrderID", "PayType", "DeletedAt"); err == nil {
orderPay.PayFinishedAt = utils.Time2Pointer(wxpayapi.PayTime2Time(msg.TimeEnd))
orderPay.TransactionID = msg.TransactionID
orderPay.PayFinishedAt = utils.Time2Pointer(wxpayapi.PayTime2Time(utils.Int64ToStr(msg.PaidAt)))
orderPay.TransactionID = msg.ChannelNo
orderPay.OriginalData = utils.Format4Output(msg, true)
if msg.ResultCode == wxpayapi.ResponseCodeSuccess {
if msg.Status == tiktok.ResponseCodeSuccess {
orderPay.Status = model.PayStatusYes
} else {
orderPay.Status = model.PayStatusFailed
}
dao.UpdateEntity(db, orderPay)
if msg.ResultCode == wxpayapi.ResponseCodeSuccess {
if msg.Status == tiktok.ResponseCodeSuccess {
err = OnPayFinished(orderPay)
}
} else {
globals.SugarLogger.Debugf("onWxpayFinished msg:%s, err:%v", utils.Format4Output(msg, true), err)
globals.SugarLogger.Debugf("onTTpayFinished msg:%s, err:%v", utils.Format4Output(msg, true), err)
}
return err
}
func onTTPayRefund(msg *wxpayapi.RefundResultMsg) (err error) {
func onTTPayRefund(msg *tiktok.DetailCallBackMessage2Refund) (err error) {
orderPayRefund := &model.OrderPayRefund{
RefundID: msg.ReqInfoObj.OutRefundNo,
RefundID: msg.CpRefundno,
}
db := dao.GetDB()
if err = dao.GetEntity(db, orderPayRefund, "RefundID"); err == nil {
if msg.ResultCode == wxpayapi.ResponseCodeSuccess {
if msg.Status == tiktok.ResponseCodeSuccess {
orderPayRefund.Status = model.RefundStatusYes
} else {
orderPayRefund.Status = model.RefundStatusFailed