fix(order): 优化回调订单信息获取逻辑

- 新增根据poolOrderId查询订单信息方法GetOrderByPoolOrderId
- 回调处理时,当通过localId获取订单失败时,改用poolOrderId查询订单
- 若poolOrderId查询无结果,则记录错误日志并返回失败响应
- 保持回调后续逻辑一致,避免因订单ID获取失败导致异常
- 多处第三方供应商回调服务代码同步此逻辑优化
- 细化错误日志内容,方便定位和排查问题
This commit is contained in:
danial
2025-12-09 01:00:58 +08:00
parent 1cc3da9fb8
commit 39b0b5f795
23 changed files with 202 additions and 91 deletions

View File

@@ -303,6 +303,16 @@ func GetAllAmountByMap(ctx context.Context, params map[string]string) float64 {
return allAmount
}
func GetOrderByPoolOrderId(ctx context.Context, poolOrderId string) OrderInfo {
o := orm.NewOrm()
orderInfo := OrderInfo{}
_, err := o.QueryTable(ORDER_INFO).Filter("pool_order_id", poolOrderId).Limit(1).All(&orderInfo)
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("get order info by bankOrderId fail: ", zap.Error(err))
}
return orderInfo
}
func GetOrderByBankOrderId(ctx context.Context, bankOrderId string) OrderInfo {
o := orm.NewOrm()
var orderInfo OrderInfo

View File

@@ -131,12 +131,17 @@ func (c *CarelessImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("无心回调通知", zap.Any("req", req))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, req.MchOrderNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, req.MchOrderNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【茄子】回调的订单号不存在,订单号=", zap.String("attach", req.MchKey))

View File

@@ -160,12 +160,17 @@ func (c *EggplantImpl) PayNotify() {
)
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, params.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, params.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【茄子】回调的订单号不存在,订单号=", zap.String("attach", params.OrderId))

View File

@@ -150,12 +150,17 @@ func (f *FatSixImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("fat_six 回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.MerOrderTid)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.MerOrderTid)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("success")

View File

@@ -160,12 +160,17 @@ func (c *FavorableCloudsCardImpl) PayNotify() {
}
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, req.MerOrderTid)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, req.MerOrderTid)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【祥云】回调的订单号不存在,订单号=", zap.String("localId", localId))

View File

@@ -140,12 +140,17 @@ func (c *FlyFishImpl) PayNotify() {
}
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, respData.PayOsn)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, respData.PayOsn)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【飞鱼】回调的订单号不存在,订单号=", zap.String("bankOrderId", respData.PayOsn))

View File

@@ -140,12 +140,17 @@ func (c *FlyFishV2Impl) PayNotify() {
}
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, formData.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, formData.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【飞鱼】回调的订单号不存在,订单号=", zap.String("bankOrderId", orderInfo.BankOrderId))

View File

@@ -147,12 +147,17 @@ func (f *JinkeImpl) PayNotify() {
))
otelTrace.Logger.WithContext(ctx).Info("金科回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OutTradeNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【金科】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OutTradeNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("【金科】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("SUCCESS")
return

View File

@@ -134,14 +134,18 @@ func (c *LianInsImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("回调通知", zap.Any("req", req))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, req.TradeNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, req.TradeNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("回调的订单号不存在,订单号", zap.String("tradeNo", req.TradeNo))
c.Ctx.WriteString("fail")

View File

@@ -155,14 +155,19 @@ func (c *LubanImpl) PayNotify() {
Sign: c.GetString("sign"),
}
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, req.MchOrderNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, req.MchOrderNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
otelTrace.Logger.WithContext(ctx).Info("鲁班回调通知", zap.Any("req", req))
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【鲁班】回调的订单号不存在,订单号=", zap.String("attach", req.MchOrderNo))

View File

@@ -132,14 +132,19 @@ func (c *MagicFishImpl) PayNotify() {
return
}
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, req.MchOrderNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, req.MchOrderNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
otelTrace.Logger.WithContext(ctx).Info("魔鱼回调通知", zap.Any("req", req))
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【魔鱼】回调的订单号不存在,订单号=", zap.String("attach", req.MchOrderNo))

View File

@@ -124,12 +124,17 @@ func (c *MyselfCardImpl) PayNotify() {
))
defer span.End()
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, params["orderNo"])
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("Fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, params["orderNo"])
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("Fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId) // OrderId
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId) // OrderId
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("回调的订单号不存在,订单号=", zap.String("orderNo", localId))
c.Ctx.WriteString("Fail")

View File

@@ -164,13 +164,18 @@ func (c *NuclearImpl) PayNotify() {
)
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, response.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("Fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, response.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("Fail")
return
}
} else {
//通form表单里提取数据
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
//通form表单里提取数据
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【nuclear】回调的订单号不存在")
c.Ctx.WriteString("FAIL")

View File

@@ -146,13 +146,18 @@ func (c *OriginImpl) PayNotify() {
}
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, response.MchOrderNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("Fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, response.MchOrderNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("Fail")
return
}
} else {
//通form表单里提取数据
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
//通form表单里提取数据
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【nuclear】回调的订单号不存在")
c.Ctx.WriteString("FAIL")

View File

@@ -50,7 +50,7 @@ func (s *SendCardTaskTypeNuclear) getRandomId(ctx context.Context) (string, stri
nuclearRandomId := utils.GetMd5Lower(utils.GenerateId())
// 生成浏览器指纹哈希
fingerprintHash := fingerprint.GenerateRandomBrowserFingerprintHash()
err = redisClient.Set(ctx, "nuclear_random_ids:"+nuclearRandomId, fingerprintHash, 0)
err = redisClient.Set(ctx, "nuclear_random_ids:"+nuclearRandomId, fingerprintHash, time.Hour*time.Duration(rand.Uint64N(24)+1))
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("Failed to set nuclear ID", zap.Error(err))
}

View File

@@ -132,12 +132,17 @@ func (f *SdPayImpl) PayNotify() {
span.SetAttributes(attribute.String("bankOrderId", resp.OrderSN), attribute.String("status", resp.OrderStatus))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OrderSN)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OrderSN)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
otelTrace.Logger.WithContext(ctx).Info("订单已处理", zap.String("bankOrderId", orderInfo.BankOrderId))
f.Ctx.WriteString("SUCCESS")

View File

@@ -133,12 +133,17 @@ func (f *SesameImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("芝麻 回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【芝麻】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("【芝麻】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("success")

View File

@@ -161,12 +161,17 @@ func (c *ShanFuImpl) PayNotify() {
//通form表单里提取数据
otelTrace.Logger.WithContext(ctx).Info("【闪付】回调数据", zap.Any("params", params))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, convertor.ToString(params["orderid"]))
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, convertor.ToString(params["orderid"]))
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
c.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【闪付】回调的订单号不存在,订单号=", zap.String("attach", convertor.ToString(params["orderid"])))
c.Ctx.WriteString("FAIL")

View File

@@ -135,12 +135,17 @@ func (f *ShengtianImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("盛天 回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.MchOrderNo)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.MchOrderNo)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("success")

View File

@@ -136,13 +136,17 @@ func (f *UpImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("up回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【wtr】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("OK")
return

View File

@@ -135,13 +135,17 @@ func (f *WanXinImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("wanxin 回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OutOrderNum)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OutOrderNum)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("success")
return

View File

@@ -148,14 +148,18 @@ func (w *WowsPayImpl) PayNotify() {
otelTrace.Logger.WithContext(ctx).Info("resp", zap.Any("resp", resp), zap.String("result", result))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【祥云】获取本地订单ID失败", zap.Error(err))
w.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
w.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
status, err := resp.Status.Int64()
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("状态转换失败", zap.Error(err))

View File

@@ -137,13 +137,18 @@ func (f *WtrImpl) PayNotify() {
}
otelTrace.Logger.WithContext(ctx).Info("wtr回调", zap.Any("resp", resp))
localId, err := orderPoolService.GetLocalIdByOrderId(ctx, resp.OrderId)
var orderInfo order.OrderInfo
if err != nil {
otelTrace.Logger.WithContext(ctx).Error("【wtr】获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("fail")
return
orderInfo = order.GetOrderByPoolOrderId(ctx, resp.OrderId)
if orderInfo.Id == 0 {
otelTrace.Logger.WithContext(ctx).Error("获取本地订单ID失败", zap.Error(err))
f.Ctx.WriteString("FAIL")
return
}
} else {
orderInfo = order.GetOrderByBankOrderId(ctx, localId)
}
orderInfo := order.GetOrderByBankOrderId(ctx, localId)
if orderInfo.Status != "wait" {
f.Ctx.WriteString("success")
return