This commit is contained in:
lwl0608 2024-02-05 22:57:17 +08:00
parent 2793229b6c
commit 02a84531e4
2 changed files with 40 additions and 19 deletions

View File

@ -2,6 +2,9 @@ package controller
import (
"github.com/gin-gonic/gin"
wxpay "github.com/go-pay/gopay/wechat/v3"
vasproto "service/api/proto/vas/proto"
"service/app/mix/service"
"service/bizcommon/util"
"service/library/logger"
"service/library/payclients/wxpaycli"
@ -13,7 +16,18 @@ func WxpayCallback(ctx *gin.Context) {
logger.Error("ParseNotify fail, req: %v, err: %v", util.ToJson(notify), err)
return
}
if notify == nil {
logger.Error("ParseNotify nil, req: %v, err: %v", util.ToJson(notify), err)
return
}
logger.Info("WxpayCallback, notify: %v", util.ToJson(notify))
if notify.TradeState == wxpay.TradeStateSuccess {
service.DefaultService.PayCallback(ctx, &vasproto.PayCallbackParamIn{
OrderId: notify.OutTradeNo,
OutOrderId: notify.TransactionId,
CallbackPayType: vasproto.CallBackPayTypeWxpay,
})
}
ctx.String(200, "success")
}

View File

@ -2070,28 +2070,35 @@ func (v *Vas) DealOneOrder(ctx *gin.Context, orderId string) (err error) {
}
// 支付宝查询订单
alipayCli := alipaycli.GetDefaultAlipayClient()
alipayResp, err := alipayCli.QueryOrder(ctx, &alipaycli.QueryOrderParam{
OutTradeNo: orderId,
})
if err != nil {
logger.Error("alipayCli.QueryOrder fail, id: %v, err: %v", orderId, err)
return
}
if alipayResp == nil {
err = errors.New("alipayCli.QueryOrder resp nil")
logger.Error("alipayCli.QueryOrder nil, id: %v, err: %v", orderId, err)
return
}
// 已退款
if alipayResp.Response.TradeStatus == "TRADE_CLOSED" {
// 更新订单状态
err = v.store.UpdateOrderStatus(ctx, nil, order.GetID(), dbstruct.VasOrderStatusPaySuccess, dbstruct.VasOrderStatusRefund)
switch order.GetPayType() {
case vasproto.PayTypeAlipayH5:
alipayCli := alipaycli.GetDefaultAlipayClient()
var alipayResp *alipay.TradeQueryResponse
alipayResp, err = alipayCli.QueryOrder(ctx, &alipaycli.QueryOrderParam{
OutTradeNo: orderId,
})
if err != nil {
logger.Error("UpdateOrderStatus fail, orderId: %v, err: %v", order.GetID(), err)
logger.Error("alipayCli.QueryOrder fail, id: %v, err: %v", orderId, err)
return
}
err = errors.New("closed order")
if alipayResp == nil {
err = errors.New("alipayCli.QueryOrder resp nil")
logger.Error("alipayCli.QueryOrder nil, id: %v, err: %v", orderId, err)
return
}
// 已退款
if alipayResp.Response.TradeStatus == "TRADE_CLOSED" {
// 更新订单状态
err = v.store.UpdateOrderStatus(ctx, nil, order.GetID(), dbstruct.VasOrderStatusPaySuccess, dbstruct.VasOrderStatusRefund)
if err != nil {
logger.Error("UpdateOrderStatus fail, orderId: %v, err: %v", order.GetID(), err)
return
}
err = errors.New("closed order")
return
}
case vasproto.CallBackPayTypeWxpay:
err = errors.New("暂不处理微信订单")
return
}