feat:取消掉链路跟踪
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package gateway
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"gateway/internal/config"
|
||||
"gateway/internal/models/merchant"
|
||||
@@ -24,45 +25,47 @@ type OrderController struct {
|
||||
}
|
||||
|
||||
func (c *OrderController) OrderQuery() {
|
||||
ctx := context.Background()
|
||||
bankOrderId := c.GetString("bankOrderId")
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info(fmt.Sprintf("获取订单信息:%s", bankOrderId), zap.String("bankOrderId", bankOrderId))
|
||||
qy := query.SupplierOrderQueryResult(c.Ctx.Request.Context(), bankOrderId)
|
||||
otelTrace.Logger.WithContext(ctx).Info(fmt.Sprintf("获取订单信息:%s", bankOrderId), zap.String("bankOrderId", bankOrderId))
|
||||
qy := query.SupplierOrderQueryResult(ctx, bankOrderId)
|
||||
c.Ctx.WriteString(qy)
|
||||
return
|
||||
}
|
||||
|
||||
func (c *OrderController) OrderUpdate() {
|
||||
ctx := context.Background()
|
||||
bankOrderId := c.GetString("bankOrderId")
|
||||
solveType := c.GetString("solveType")
|
||||
orderInfo := order.GetOrderByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, bankOrderId)
|
||||
orderInfo.Operator = c.GetString("operator")
|
||||
|
||||
flag := false
|
||||
|
||||
if orderInfo.BankOrderId == "" {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error(fmt.Sprintf("该订单不存在, bankOrderId", bankOrderId), zap.String("bankOrderId", bankOrderId))
|
||||
otelTrace.Logger.WithContext(ctx).Error(fmt.Sprintf("该订单不存在, bankOrderId", bankOrderId), zap.String("bankOrderId", bankOrderId))
|
||||
} else {
|
||||
switch solveType {
|
||||
case config.SUCCESS:
|
||||
flag = service.SolvePaySuccess(c.Ctx.Request.Context(), bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId, "手动修正至成功")
|
||||
flag = service.SolvePaySuccess(ctx, bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId, "手动修正至成功")
|
||||
case config.FAIL:
|
||||
flag = service.SolvePayFail(c.Ctx.Request.Context(), bankOrderId, orderInfo.BankTransId, "手动修正至失败")
|
||||
flag = service.SolvePayFail(ctx, bankOrderId, orderInfo.BankTransId, "手动修正至失败")
|
||||
case config.FREEZE_AMOUNT:
|
||||
// 将这笔订单进行冻结
|
||||
flag = service.SolveOrderFreeze(c.Ctx.Request.Context(), bankOrderId)
|
||||
flag = service.SolveOrderFreeze(ctx, bankOrderId)
|
||||
case config.UNFREEZE_AMOUNT:
|
||||
// 将这笔订单金额解冻
|
||||
flag = service.SolveOrderUnfreeze(c.Ctx.Request.Context(), bankOrderId)
|
||||
flag = service.SolveOrderUnfreeze(ctx, bankOrderId)
|
||||
case config.REFUND:
|
||||
if orderInfo.Status == config.SUCCESS {
|
||||
flag = service.SolveRefund(c.Ctx.Request.Context(), bankOrderId)
|
||||
flag = service.SolveRefund(ctx, bankOrderId)
|
||||
}
|
||||
case config.ORDERROLL:
|
||||
if orderInfo.Status == config.SUCCESS {
|
||||
flag = service.SolveOrderRoll(c.Ctx.Request.Context(), bankOrderId)
|
||||
flag = service.SolveOrderRoll(ctx, bankOrderId)
|
||||
}
|
||||
default:
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("不存在这样的处理类型")
|
||||
otelTrace.Logger.WithContext(ctx).Error("不存在这样的处理类型")
|
||||
}
|
||||
if flag {
|
||||
c.Ctx.WriteString(config.SUCCESS)
|
||||
@@ -74,6 +77,7 @@ func (c *OrderController) OrderUpdate() {
|
||||
}
|
||||
|
||||
func (c *OrderController) MerchantQuery() {
|
||||
ctx := context.Background()
|
||||
appKey := strings.TrimSpace(c.GetString("appKey"))
|
||||
orderNo := strings.TrimSpace(c.GetString("orderNo"))
|
||||
timestamp := strings.TrimSpace(c.GetString("timestamp"))
|
||||
@@ -87,7 +91,7 @@ func (c *OrderController) MerchantQuery() {
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
merchantInfo := merchant.GetMerchantByPasskey(c.Ctx.Request.Context(), appKey)
|
||||
merchantInfo := merchant.GetMerchantByPasskey(ctx, appKey)
|
||||
if merchantInfo.Id == 0 {
|
||||
resp := response.Resp{
|
||||
Code: -1,
|
||||
@@ -116,7 +120,7 @@ func (c *OrderController) MerchantQuery() {
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
orderInfo := order.GetOrderByMerchantOrderId(c.Ctx.Request.Context(), orderNo)
|
||||
orderInfo := order.GetOrderByMerchantOrderId(ctx, orderNo)
|
||||
if orderInfo.Id == 0 {
|
||||
resp := response.Resp{
|
||||
Code: -1,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package gateway
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"gateway/internal/config"
|
||||
"gateway/internal/models/order"
|
||||
@@ -23,6 +24,7 @@ type PayForGateway struct {
|
||||
|
||||
// PayFor 接受下游商户的代付请求
|
||||
func (c *PayForGateway) PayFor() {
|
||||
ctx := context.Background()
|
||||
params := map[string]any{
|
||||
"merchantKey": strings.TrimSpace(c.GetString("merchantKey")),
|
||||
"realname": strings.TrimSpace(c.GetString("realname")),
|
||||
@@ -38,7 +40,7 @@ func (c *PayForGateway) PayFor() {
|
||||
payForResponse.ResultCode = "01"
|
||||
payForResponse.ResultMsg = msg
|
||||
} else {
|
||||
payForResponse = pay_for.AutoPayFor(c.Ctx.Request.Context(), params, config.SELF_API)
|
||||
payForResponse = pay_for.AutoPayFor(ctx, params, config.SELF_API)
|
||||
}
|
||||
c.Data["json"] = payForResponse
|
||||
_ = c.ServeJSON()
|
||||
@@ -46,34 +48,36 @@ func (c *PayForGateway) PayFor() {
|
||||
|
||||
// PayForQuery 代付结果查询,
|
||||
func (c *PayForGateway) PayForQuery() {
|
||||
ctx := context.Background()
|
||||
params := map[string]any{
|
||||
"merchantKey": strings.TrimSpace(c.GetString("merchantKey")),
|
||||
"timestamp": strings.TrimSpace(c.GetString("timestamp")),
|
||||
"merchantOrderId": strings.TrimSpace(c.GetString("merchantOrderId")),
|
||||
"sign": strings.TrimSpace(c.GetString("sign")),
|
||||
}
|
||||
c.Data["json"] = pay_for.PayForResultQuery(c.Ctx.Request.Context(), params)
|
||||
c.Data["json"] = pay_for.PayForResultQuery(ctx, params)
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
// QuerySupplierPayForResult 查询上游的代付结果
|
||||
func (c *PayForGateway) QuerySupplierPayForResult() {
|
||||
ctx := context.Background()
|
||||
bankOrderId := strings.TrimSpace(c.GetString("bankOrderId"))
|
||||
p := payfor.GetPayForByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
|
||||
p := payfor.GetPayForByBankOrderId(ctx, bankOrderId)
|
||||
if p.RoadUid == "" {
|
||||
// 向上游查询订单结果
|
||||
orderInfo := order.GetOrderByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, bankOrderId)
|
||||
|
||||
if orderInfo.BankOrderId == "" {
|
||||
c.Ctx.WriteString("fail")
|
||||
return
|
||||
}
|
||||
|
||||
roadInfo := road.GetRoadInfoByRoadUid(c.Ctx.Request.Context(), p.RoadUid)
|
||||
roadInfo := road.GetRoadInfoByRoadUid(ctx, p.RoadUid)
|
||||
supplier := third_party.GetPaySupplierByCode(roadInfo.ProductUid)
|
||||
supplier.PayQuery(orderInfo, roadInfo)
|
||||
} else {
|
||||
roadInfo := road.GetRoadInfoByRoadUid(c.Ctx.Request.Context(), p.RoadUid)
|
||||
roadInfo := road.GetRoadInfoByRoadUid(ctx, p.RoadUid)
|
||||
supplier := third_party.GetPaySupplierByCode(roadInfo.ProductUid)
|
||||
res := supplier.PayFor(p)
|
||||
logs.Debug("代付查询结果:", res)
|
||||
@@ -83,18 +87,19 @@ func (c *PayForGateway) QuerySupplierPayForResult() {
|
||||
|
||||
// SolvePayForResult 接收boss发送过来的代付手动处理结果
|
||||
func (c *PayForGateway) SolvePayForResult() {
|
||||
ctx := context.Background()
|
||||
resultType := strings.TrimSpace(c.GetString("resultType"))
|
||||
bankOrderId := strings.TrimSpace(c.GetString("bankOrderId"))
|
||||
|
||||
p := payfor.GetPayForByBankOrderId(c.Ctx.Request.Context(), bankOrderId)
|
||||
p := payfor.GetPayForByBankOrderId(ctx, bankOrderId)
|
||||
if p.BankOrderId == "" {
|
||||
c.Ctx.WriteString(config.FAIL)
|
||||
}
|
||||
|
||||
if resultType == config.PAYFOR_FAIL {
|
||||
pay_for.PayForFail(c.Ctx.Request.Context(), p)
|
||||
pay_for.PayForFail(ctx, p)
|
||||
} else if resultType == config.PAYFOR_SUCCESS {
|
||||
pay_for.PayForSuccess(c.Ctx.Request.Context(), p)
|
||||
pay_for.PayForSuccess(ctx, p)
|
||||
}
|
||||
|
||||
c.Ctx.WriteString(config.SUCCESS)
|
||||
@@ -102,6 +107,7 @@ func (c *PayForGateway) SolvePayForResult() {
|
||||
|
||||
// Balance 商户查找余额
|
||||
func (c *PayForGateway) Balance() {
|
||||
ctx := context.Background()
|
||||
params := map[string]any{
|
||||
"merchantKey": strings.TrimSpace(c.GetString("merchantKey")),
|
||||
"timestamp": strings.TrimSpace(c.GetString("timestamp")),
|
||||
@@ -114,7 +120,7 @@ func (c *PayForGateway) Balance() {
|
||||
balanceResponse.ResultMsg = msg
|
||||
c.Data["json"] = balanceResponse
|
||||
} else {
|
||||
c.Data["json"] = pay_for.BalanceQuery(c.Ctx.Request.Context(), params)
|
||||
c.Data["json"] = pay_for.BalanceQuery(ctx, params)
|
||||
}
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
@@ -50,9 +50,10 @@ type ScanController struct {
|
||||
|
||||
// Scan 处理扫码的请求
|
||||
func (c *ScanController) Scan() {
|
||||
ctx := context.Background()
|
||||
// 获取所有请求参数
|
||||
// 获取客户端的ip
|
||||
p := service.GetMerchantInfo(c.Ctx.Request.Context(), map[string]any{
|
||||
p := service.GetMerchantInfo(ctx, map[string]any{
|
||||
"exValue": strings.TrimSpace(c.GetString("exValue")),
|
||||
"orderNo": strings.TrimSpace(c.GetString("orderNo")),
|
||||
"orderPeriod": strings.TrimSpace(c.GetString("orderPeriod")),
|
||||
@@ -65,7 +66,7 @@ func (c *ScanController) Scan() {
|
||||
"ip": strings.TrimSpace(c.GetString("ip")),
|
||||
"deviceId": strings.TrimSpace(c.GetString("deviceId")),
|
||||
})
|
||||
ctx, cancel := otelTrace.Span(c.Ctx.Request.Context(), "页面订单", "ScanController", trace.WithAttributes(
|
||||
ctx, cancel := otelTrace.Span(ctx, "页面订单", "ScanController", trace.WithAttributes(
|
||||
attribute.String("exValue", p.Params["exValue"].(string)),
|
||||
attribute.String("orderNo", p.Params["orderNo"].(string)),
|
||||
attribute.String("productCode", p.Params["productCode"].(string)),
|
||||
@@ -78,7 +79,7 @@ func (c *ScanController) Scan() {
|
||||
cacheId, _ := idCache.Get(strings.TrimSpace(c.GetString("orderNo")))
|
||||
if len(cacheId) != 0 {
|
||||
merchantOrderLock.Unlock()
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info(
|
||||
otelTrace.Logger.WithContext(ctx).Info(
|
||||
fmt.Sprintf("订单已经提交,订单信息:id=%s", p.Params["orderNo"]), zap.Any("orderInfo", p.Params),
|
||||
)
|
||||
p.Msg = "订单已经提交!"
|
||||
@@ -97,32 +98,32 @@ func (c *ScanController) Scan() {
|
||||
defer func() {
|
||||
_ = idCache.Delete(strings.TrimSpace(c.GetString("orderNo")))
|
||||
}()
|
||||
p = service.JudgeParams(c.Ctx.Request.Context(), p)
|
||||
p = service.OrderIsValid(c.Ctx.Request.Context(), p)
|
||||
p = service.NotifyUrlIsValid(c.Ctx.Request.Context(), p)
|
||||
p = service.OrderPeriodIsValid(c.Ctx.Request.Context(), p)
|
||||
p = service.OrderPriceIsValid(c.Ctx.Request.Context(), p)
|
||||
p = service.ExValueIsValid(c.Ctx.Request.Context(), p)
|
||||
p = service.JudgeParams(ctx, p)
|
||||
p = service.OrderIsValid(ctx, p)
|
||||
p = service.NotifyUrlIsValid(ctx, p)
|
||||
p = service.OrderPeriodIsValid(ctx, p)
|
||||
p = service.OrderPriceIsValid(ctx, p)
|
||||
p = service.ExValueIsValid(ctx, p)
|
||||
if p.Code == -1 {
|
||||
c.SolveFailJSON(p)
|
||||
return
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】获取商户请求过来的参数", zap.Any("params", p.Params))
|
||||
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】获取商户请求过来的参数", zap.Any("params", p.Params))
|
||||
// 签名验证
|
||||
if !utils.Md5MFVerify(c.Ctx.Request.Context(), p.Params, p.MerchantInfo.MerchantSecret) &&
|
||||
!utils.Md5TMPMFVerify(c.Ctx.Request.Context(), p.Params, p.MerchantInfo.MerchantSecret) &&
|
||||
if !utils.Md5MFVerify(ctx, p.Params, p.MerchantInfo.MerchantSecret) &&
|
||||
!utils.Md5TMPMFVerify(ctx, p.Params, p.MerchantInfo.MerchantSecret) &&
|
||||
!utils.Md5Verify(p.Params, p.MerchantInfo.MerchantSecret) {
|
||||
p.Code = -1
|
||||
p.Msg = "签名异常"
|
||||
c.SolveFailJSON(p)
|
||||
return
|
||||
}
|
||||
p = service.ChooseRoadV2(c.Ctx.Request.Context(), p)
|
||||
p = service.ChooseRoadV2(ctx, p)
|
||||
if p.Code == -1 {
|
||||
c.SolveFailJSON(p)
|
||||
return
|
||||
}
|
||||
mt := merchant_deploy.GetMerchantDeployByUidAndRoadUid(c.Ctx.Request.Context(), p.MerchantInfo.MerchantUid, p.RoadInfo.RoadUid)
|
||||
mt := merchant_deploy.GetMerchantDeployByUidAndRoadUid(ctx, p.MerchantInfo.MerchantUid, p.RoadInfo.RoadUid)
|
||||
if mt.Id == 0 {
|
||||
p.Msg = "当前用户没有开通该通道"
|
||||
c.SolveFailJSON(p)
|
||||
@@ -135,7 +136,7 @@ func (c *ScanController) Scan() {
|
||||
c.SolveFailJSON(p)
|
||||
return
|
||||
}
|
||||
pm, err := mt.GetShowMMValue(c.Ctx.Request.Context(), orderPrice)
|
||||
pm, err := mt.GetShowMMValue(ctx, orderPrice)
|
||||
if err != nil {
|
||||
p.Code = -1
|
||||
p.Msg = fmt.Sprintf("获取展示比例失败:%v", err.Error())
|
||||
@@ -150,7 +151,7 @@ func (c *ScanController) Scan() {
|
||||
return
|
||||
}
|
||||
// TODO: 生成订单记录
|
||||
orderInfo, _, err := service.GenerateRecord(c.Ctx.Request.Context(), p)
|
||||
orderInfo, _, err := service.GenerateRecord(ctx, p)
|
||||
if err != nil {
|
||||
p.Msg = fmt.Sprintf("生成订单失败:%v", err.Error())
|
||||
c.SolveFailJSON(p)
|
||||
@@ -161,7 +162,7 @@ func (c *ScanController) Scan() {
|
||||
return
|
||||
}
|
||||
|
||||
hiddenCfg := service.GetOrderHidden(c.Ctx.Request.Context(), &orderInfo)
|
||||
hiddenCfg := service.GetOrderHidden(ctx, &orderInfo)
|
||||
if hiddenCfg != nil {
|
||||
hiddenCfg.Strategy = int(random.RandFromGivenSlice([]consts.StealRuleType{
|
||||
consts.StealRuleTypeStealDelay,
|
||||
@@ -171,13 +172,13 @@ func (c *ScanController) Scan() {
|
||||
delayDuration := random.RandInt(hiddenCfg.DelayDurationMin, hiddenCfg.DelayDurationMax)
|
||||
//1. 新的空白记录
|
||||
if hiddenCfg.Strategy == int(consts.StealRuleTypeStealBlank) {
|
||||
newBankOrderId, err2 := service.CreateHiddenBlankOrder(c.Ctx.Request.Context(), &orderInfo, int64(delayDuration))
|
||||
newBankOrderId, err2 := service.CreateHiddenBlankOrder(ctx, &orderInfo, int64(delayDuration))
|
||||
if err2 != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
|
||||
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
|
||||
}
|
||||
//添加订单关联
|
||||
if err2 = service.CreateRelateHideOrderRecord(newBankOrderId, &orderInfo, hiddenCfg, delayDuration); err2 != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
|
||||
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
|
||||
}
|
||||
//错误订单回调上游
|
||||
//oldBankOrderId := orderInfo.BankOrderId
|
||||
@@ -189,13 +190,13 @@ func (c *ScanController) Scan() {
|
||||
}
|
||||
//2.新的错误记录
|
||||
if hiddenCfg.Strategy == int(consts.StealRuleTypeStealDelay) {
|
||||
newBankOrderId, err2 := service.CreateHiddenErrorOrder(c.Ctx.Request.Context(), &orderInfo, int64(delayDuration))
|
||||
newBankOrderId, err2 := service.CreateHiddenErrorOrder(ctx, &orderInfo, int64(delayDuration))
|
||||
if err2 != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
|
||||
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡1】", zap.Error(err2))
|
||||
}
|
||||
//添加订单关联
|
||||
if err2 = service.CreateRelateHideOrderRecord(newBankOrderId, &orderInfo, hiddenCfg, delayDuration); err2 != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
|
||||
otelTrace.Logger.WithContext(ctx).Error("添加订单关联失败【偷卡2】", zap.Error(err2))
|
||||
}
|
||||
oldBankOrderId := orderInfo.BankOrderId
|
||||
//错误订单回调上游
|
||||
@@ -207,28 +208,28 @@ func (c *ScanController) Scan() {
|
||||
orderInfo.BankOrderId = newBankOrderId
|
||||
}
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
|
||||
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
|
||||
cdata := supplier.RedeemCardInfo{}
|
||||
err = json.Unmarshal([]byte(orderInfo.ExValue), &cdata)
|
||||
if err != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("格式化数据失败", zap.Error(err), zap.String("ExValue", orderInfo.ExValue))
|
||||
otelTrace.Logger.WithContext(ctx).Error("格式化数据失败", zap.Error(err), zap.String("ExValue", orderInfo.ExValue))
|
||||
p.Msg = fmt.Sprintf("格式化数据失败:%v", orderInfo.ExValue)
|
||||
c.SolveFailJSON(p)
|
||||
}
|
||||
|
||||
isAllowed, err := backend.GetIPIsRestricted(c.Ctx.Request.Context(), p.ClientIP, mt.Id, orderInfo.BankOrderId, cdata.Data, convertor.ToString(p.Params["deviceId"]))
|
||||
order.UpdateIpRestricted(c.Ctx.Request.Context(), orderInfo.BankOrderId, isAllowed)
|
||||
isAllowed, err := backend.GetIPIsRestricted(ctx, p.ClientIP, mt.Id, orderInfo.BankOrderId, cdata.Data, convertor.ToString(p.Params["deviceId"]))
|
||||
order.UpdateIpRestricted(ctx, orderInfo.BankOrderId, isAllowed)
|
||||
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("IP是否允许", zap.Bool("isAllowed", isAllowed))
|
||||
// otel.Logger.WithContext(c.Ctx.Request.Context()).Info("IP是否允许:%v", isAllowed)
|
||||
otelTrace.Logger.WithContext(ctx).Info("IP是否允许", zap.Bool("isAllowed", isAllowed))
|
||||
// otel.Logger.WithContext(ctx).Info("IP是否允许:%v", isAllowed)
|
||||
if !isAllowed {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info(fmt.Sprintf("IP被限制,无法兑换 %s", p.ClientIP), zap.String("ClientIP", p.ClientIP))
|
||||
otelTrace.Logger.WithContext(ctx).Info(fmt.Sprintf("IP被限制,无法兑换 %s", p.ClientIP), zap.String("ClientIP", p.ClientIP))
|
||||
c.Data["json"] = response.CommonErr(-1, errors.New("提交失败").Error())
|
||||
service.SolvePayFail(c.Ctx.Request.Context(), orderInfo.BankOrderId, "", "IP限制,无法兑换")
|
||||
service.SolvePayFail(ctx, orderInfo.BankOrderId, "", "IP限制,无法兑换")
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
|
||||
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】生成订单记录", zap.Any("orderInfo", orderInfo))
|
||||
if mt.AutoSettle == config.NO {
|
||||
params := map[string]any{
|
||||
"orderNo": orderInfo.BankOrderId,
|
||||
@@ -253,15 +254,15 @@ func (c *ScanController) Scan() {
|
||||
supplierByCode := third_party.GetPaySupplierByCode(supplierCode)
|
||||
if supplierByCode == nil {
|
||||
// 插入处理失败的动账通知
|
||||
service.SolvePayFail(c.Ctx.Request.Context(), orderInfo.BankOrderId, "", "")
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
|
||||
service.SolvePayFail(ctx, orderInfo.BankOrderId, "", "")
|
||||
otelTrace.Logger.WithContext(ctx).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
|
||||
c.Data["json"] = response.CommonErr(-1, errors.New("获取上游渠道失败,请联系客服").Error())
|
||||
_ = c.ServeJSON()
|
||||
c.StopRun()
|
||||
return
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("【BaseGateway】获取到对应的上游", zap.Any("supplierByCode", supplierByCode))
|
||||
scanData := supplierByCode.Scan(c.Ctx.Request.Context(), orderInfo, p.RoadInfo, p.MerchantInfo)
|
||||
otelTrace.Logger.WithContext(ctx).Info("【BaseGateway】获取到对应的上游", zap.Any("supplierByCode", supplierByCode))
|
||||
scanData := supplierByCode.Scan(ctx, orderInfo, p.RoadInfo, p.MerchantInfo)
|
||||
order.InsertCardReturnData(scanData.BankNo, scanData.ReturnData)
|
||||
if scanData.Status == "00" {
|
||||
scanSuccessData := service.GenerateSuccessData(scanData, p)
|
||||
@@ -270,7 +271,7 @@ func (c *ScanController) Scan() {
|
||||
return
|
||||
}
|
||||
// 插入处理失败的动账通知
|
||||
service.SolvePayFail(c.Ctx.Request.Context(), orderInfo.BankOrderId, "", scanData.Msg)
|
||||
service.SolvePayFail(ctx, orderInfo.BankOrderId, "", scanData.Msg)
|
||||
p.Msg = scanData.Msg
|
||||
p.Code = -1
|
||||
c.SolveFailJSON(p)
|
||||
@@ -290,6 +291,7 @@ func (c *ScanController) SolveFailJSON(p *response.PayBaseResp) {
|
||||
}
|
||||
|
||||
func (c *ScanController) GetAllowedMM() {
|
||||
ctx := context.Background()
|
||||
payKey := strings.TrimSpace(c.GetString("payKey"))
|
||||
showMMValue, err := c.GetFloat("showMMValue")
|
||||
productCode := strings.TrimSpace(c.GetString("productCode"))
|
||||
@@ -305,14 +307,14 @@ func (c *ScanController) GetAllowedMM() {
|
||||
c.StopRun()
|
||||
}
|
||||
|
||||
merchantInfo, err := service.GetMerchantInfoByPayKey(c.Ctx.Request.Context(), payKey)
|
||||
merchantInfo, err := service.GetMerchantInfoByPayKey(ctx, payKey)
|
||||
if err != nil || merchantInfo.Id == 0 {
|
||||
c.Data["json"] = response.CommonErr(-1, "获取面额失败,获取商户信息出错")
|
||||
_ = c.ServeJSON()
|
||||
c.StopRun()
|
||||
}
|
||||
|
||||
merchantDeployInfo := service.GerMerchantDeployInfoByUidAndProductCode(c.Ctx.Request.Context(), merchantInfo.MerchantUid, productCode)
|
||||
merchantDeployInfo := service.GerMerchantDeployInfoByUidAndProductCode(ctx, merchantInfo.MerchantUid, productCode)
|
||||
if merchantDeployInfo.Id == 0 {
|
||||
res := response.CommonErr(-1, "获取面额失败,当前通道不存在")
|
||||
c.Data["json"] = res
|
||||
@@ -320,7 +322,7 @@ func (c *ScanController) GetAllowedMM() {
|
||||
return
|
||||
}
|
||||
|
||||
profitMarginList, err := merchantDeployInfo.GetFactMMValue(c.Ctx.Request.Context(), showMMValue)
|
||||
profitMarginList, err := merchantDeployInfo.GetFactMMValue(ctx, showMMValue)
|
||||
if err != nil {
|
||||
c.Data["json"] = response.CommonErr(-1, err.Error())
|
||||
_ = c.ServeJSON()
|
||||
@@ -335,7 +337,7 @@ func (c *ScanController) GetAllowedMM() {
|
||||
IsLinkSingle bool `json:"isLinkSingle" description:"链接是否单独放置"`
|
||||
LinkID string `json:"linkID" description:"链接"`
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
|
||||
otelTrace.Logger.WithContext(ctx).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
|
||||
resData := make([]*profitMarginStruct, 0)
|
||||
for _, v := range profitMarginList {
|
||||
if v.ShowLabel != 0 || v.FactLabel != 0 {
|
||||
@@ -349,26 +351,27 @@ func (c *ScanController) GetAllowedMM() {
|
||||
})
|
||||
}
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
|
||||
otelTrace.Logger.WithContext(ctx).Info("当前请求面额数据", zap.Any("profitMarginList", profitMarginList))
|
||||
c.Data["json"] = response.Ok(resData)
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
// CreateOrder 创建订单
|
||||
func (c *ScanController) CreateOrder() {
|
||||
ctx := context.Background()
|
||||
createdOrder := request.CreatedOrder{}
|
||||
_ = c.Bind(&createdOrder)
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单:", zap.Any("createdOrder", createdOrder))
|
||||
otelTrace.Logger.WithContext(ctx).Info("创建订单:", zap.Any("createdOrder", createdOrder))
|
||||
valid := validation.Validation{}
|
||||
b, err := valid.Valid(&createdOrder)
|
||||
if err != nil || !b {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单错误:", zap.Error(err))
|
||||
otelTrace.Logger.WithContext(ctx).Info("创建订单错误:", zap.Error(err))
|
||||
res := response.CommonErr(-1, "创建订单失败,参数错误")
|
||||
c.Data["json"] = res
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
ctx, cancel := otelTrace.Span(c.Ctx.Request.Context(), "API订单", "ScanController", trace.WithAttributes(
|
||||
ctx, cancel := otelTrace.Span(ctx, "API订单", "ScanController", trace.WithAttributes(
|
||||
attribute.String("PayKey", createdOrder.PayKey),
|
||||
attribute.String("ProductCode", createdOrder.ProductCode),
|
||||
attribute.String("productCode", createdOrder.Sign),
|
||||
@@ -376,23 +379,23 @@ func (c *ScanController) CreateOrder() {
|
||||
defer cancel()
|
||||
c.Ctx.Request = c.Ctx.Request.WithContext(ctx)
|
||||
|
||||
merchantInfo := merchant.GetMerchantByPasskey(c.Ctx.Request.Context(), createdOrder.PayKey)
|
||||
merchantInfo := merchant.GetMerchantByPasskey(ctx, createdOrder.PayKey)
|
||||
if merchantInfo.Id == 0 {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单错误:", zap.Error(err))
|
||||
otelTrace.Logger.WithContext(ctx).Info("创建订单错误:", zap.Error(err))
|
||||
c.Data["json"] = response.CommonErr(-1, "创建订单错误,商户不存在")
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
if !utils.Md5MFVerify(c.Ctx.Request.Context(), createdOrder.ToMap(), merchantInfo.MerchantSecret) && !utils.Md5Verify(createdOrder.ToMap(), merchantInfo.MerchantSecret) {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("创建订单错误,sign校验失败")
|
||||
if !utils.Md5MFVerify(ctx, createdOrder.ToMap(), merchantInfo.MerchantSecret) && !utils.Md5Verify(createdOrder.ToMap(), merchantInfo.MerchantSecret) {
|
||||
otelTrace.Logger.WithContext(ctx).Info("创建订单错误,sign校验失败")
|
||||
c.Data["json"] = response.CommonErr(-1, "sign验证错误")
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
orderInfo := order.GetOrderByMerchantOrderId(c.Ctx.Request.Context(), createdOrder.OrderNo)
|
||||
roadInfo := road.GetRoadInfoByProductCode(c.Ctx.Request.Context(), createdOrder.ProductCode)
|
||||
orderInfo := order.GetOrderByMerchantOrderId(ctx, createdOrder.OrderNo)
|
||||
roadInfo := road.GetRoadInfoByProductCode(ctx, createdOrder.ProductCode)
|
||||
if orderInfo.Id != 0 {
|
||||
res := response.Ok(struct {
|
||||
ProductCode string `json:"productCode"`
|
||||
@@ -419,7 +422,7 @@ func (c *ScanController) CreateOrder() {
|
||||
supplierByCode := third_party.GetPaySupplierByCode(supplierCode)
|
||||
if supplierByCode == nil {
|
||||
// 插入处理失败的动账通知
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
|
||||
otelTrace.Logger.WithContext(ctx).Error("获取上游渠道失败,请联系客服", zap.String("supplierCode", supplierCode))
|
||||
err = errors.New("获取上游渠道失败,请联系客服")
|
||||
c.Data["json"] = response.CommonErr(-1, err.Error())
|
||||
_ = c.ServeJSON()
|
||||
@@ -427,20 +430,20 @@ func (c *ScanController) CreateOrder() {
|
||||
}
|
||||
|
||||
// 创建订单记录
|
||||
orderInfo, err = service.CreateOrderInfoAndOrderProfitInfo(c.Ctx.Request.Context(), createdOrder, merchantInfo)
|
||||
orderInfo, err = service.CreateOrderInfoAndOrderProfitInfo(ctx, createdOrder, merchantInfo)
|
||||
if err != nil {
|
||||
res := response.CommonErr(-1, "创建订单失败,创建订单记录失败")
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("创建订单错误:", zap.Error(err))
|
||||
otelTrace.Logger.WithContext(ctx).Error("创建订单错误:", zap.Error(err))
|
||||
c.Data["json"] = res
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Info("获取供应商信息", zap.Any("supplierCode", supplierCode))
|
||||
otelTrace.Logger.WithContext(ctx).Info("获取供应商信息", zap.Any("supplierCode", supplierCode))
|
||||
payUrl := ""
|
||||
bankTransId := ""
|
||||
//TODO: 区分自有渠道和三方渠道
|
||||
if supplierByCode.HasDependencyHTML() {
|
||||
scanData := supplierByCode.Scan(c.Ctx.Request.Context(), orderInfo, roadInfo, merchantInfo)
|
||||
scanData := supplierByCode.Scan(ctx, orderInfo, roadInfo, merchantInfo)
|
||||
payUrl = scanData.PayUrl
|
||||
bankTransId = scanData.UpStreamOrderNo
|
||||
} else {
|
||||
@@ -457,7 +460,7 @@ func (c *ScanController) CreateOrder() {
|
||||
}
|
||||
|
||||
if err = order.UpdatePayUrlAndTime(orderInfo.BankOrderId, payUrl, bankTransId, ""); err != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("更新订单支付链接失败:", zap.Error(err))
|
||||
otelTrace.Logger.WithContext(ctx).Error("更新订单支付链接失败:", zap.Error(err))
|
||||
c.Data["json"] = response.CommonErr(-1, "更新订单支付链接失败")
|
||||
return
|
||||
}
|
||||
@@ -481,7 +484,7 @@ func (c *ScanController) CreateOrder() {
|
||||
}
|
||||
respMap, err := structs.New(resp).ToMap()
|
||||
if err != nil {
|
||||
otelTrace.Logger.WithContext(c.Ctx.Request.Context()).Error("创建订单错误:", zap.Error(err))
|
||||
otelTrace.Logger.WithContext(ctx).Error("创建订单错误:", zap.Error(err))
|
||||
c.Data["json"] = response.CommonErr(-1, err.Error())
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
|
||||
@@ -2,11 +2,12 @@ package otelTrace
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/beego/beego/v2/core/config/env"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/beego/beego/v2/core/config/env"
|
||||
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
beecontext "github.com/beego/beego/v2/server/web/context"
|
||||
"go.opentelemetry.io/contrib/bridges/otelzap"
|
||||
@@ -255,3 +256,42 @@ func getScheme(req *http.Request) string {
|
||||
func NewSchedulerTrace(opts ...trace.TracerOption) trace.Tracer {
|
||||
return otel.Tracer("scheduler", opts...)
|
||||
}
|
||||
|
||||
func init() {
|
||||
// 初始化日志
|
||||
// 自定义日志格式配置
|
||||
encoderConfig := zapcore.EncoderConfig{
|
||||
TimeKey: "time",
|
||||
LevelKey: "level",
|
||||
NameKey: "logger",
|
||||
CallerKey: "caller",
|
||||
FunctionKey: zapcore.OmitKey,
|
||||
MessageKey: "msg",
|
||||
StacktraceKey: "stacktrace",
|
||||
LineEnding: zapcore.DefaultLineEnding,
|
||||
EncodeLevel: zapcore.CapitalLevelEncoder, // 使用大写字母记录日志级别
|
||||
EncodeTime: zapcore.TimeEncoderOfLayout(time.DateTime), // ISO8601 时间格式
|
||||
EncodeDuration: zapcore.SecondsDurationEncoder,
|
||||
EncodeCaller: zapcore.ShortCallerEncoder, // 短路径编码器
|
||||
}
|
||||
// 创建核心
|
||||
core := zapcore.NewTee(
|
||||
zapcore.NewCore(
|
||||
zapcore.NewConsoleEncoder(encoderConfig),
|
||||
zapcore.NewMultiWriteSyncer(
|
||||
zapcore.AddSync(os.Stdout),
|
||||
),
|
||||
zap.InfoLevel,
|
||||
),
|
||||
)
|
||||
logger := zap.New(core,
|
||||
zap.AddCaller(),
|
||||
// zap.AddCallerSkip(1),
|
||||
zap.AddStacktrace(zap.ErrorLevel),
|
||||
)
|
||||
// zap设置标准输出流
|
||||
// 设置全局 logger
|
||||
Logger = &LoggerStruct{
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,19 +3,17 @@ package routers
|
||||
import (
|
||||
"gateway/internal/controllers/gateway"
|
||||
|
||||
"gateway/internal/otelTrace"
|
||||
"gateway/internal/service/supplier/third_party"
|
||||
|
||||
"github.com/beego/beego/v2/server/web"
|
||||
beecontext "github.com/beego/beego/v2/server/web/context"
|
||||
)
|
||||
|
||||
func init() {
|
||||
web.InsertFilterChain("*", func(next web.FilterFunc) web.FilterFunc {
|
||||
return func(ctx *beecontext.Context) {
|
||||
otelTrace.Middleware(ctx, next)
|
||||
}
|
||||
})
|
||||
// web.InsertFilterChain("*", func(next web.FilterFunc) web.FilterFunc {
|
||||
// return func(ctx *beecontext.Context) {
|
||||
// otelTrace.Middleware(ctx, next)
|
||||
// }
|
||||
// })
|
||||
// 网关处理
|
||||
web.Router("/gateway/queryAccountInfo/:channel", &gateway.ScanController{}, "*:QueryAccountInfo")
|
||||
//提交订单接口
|
||||
|
||||
10
internal/service/supplier/third_party/apple.go
vendored
10
internal/service/supplier/third_party/apple.go
vendored
@@ -185,7 +185,7 @@ func (c *AppleCardImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roa
|
||||
|
||||
// KMEncrypt 加密卡密
|
||||
func (c *AppleCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
|
||||
block, err := aes.NewCipher([]byte(secret))
|
||||
if err != nil {
|
||||
@@ -201,7 +201,7 @@ func (c *AppleCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
}
|
||||
|
||||
func (c *AppleCardImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
attach := strings.TrimSpace(c.GetString("attach"))
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
|
||||
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
|
||||
@@ -237,7 +237,7 @@ func (c *AppleCardImpl) PayNotify() {
|
||||
}
|
||||
|
||||
func (c *AppleCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -302,7 +302,7 @@ func (c *AppleCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadIn
|
||||
}
|
||||
|
||||
func (c *AppleCardImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -384,7 +384,7 @@ func (c *AppleCardImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
params := map[string]string{}
|
||||
params["order_id"] = payFor.BankOrderId
|
||||
|
||||
@@ -166,7 +166,7 @@ func (c *AppleCardSharkImpl) kMEncrypt(ctx context.Context, kf, appSecret string
|
||||
}
|
||||
|
||||
func (c *AppleCardSharkImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
attach := strings.TrimSpace(c.GetString("attach"))
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
|
||||
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
|
||||
@@ -217,7 +217,7 @@ func (c *AppleCardSharkImpl) PayNotify() {
|
||||
|
||||
func (c *AppleCardSharkImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -281,7 +281,7 @@ func (c *AppleCardSharkImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.R
|
||||
|
||||
func (c *AppleCardSharkImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -357,7 +357,7 @@ func (c *AppleCardSharkImpl) PayFor(info payfor.PayforInfo) string {
|
||||
|
||||
func (c *AppleCardSharkImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
cfg := config.Config{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
url, err := cfg.GetMFCardQueryUrl()
|
||||
if err != nil {
|
||||
|
||||
@@ -102,7 +102,7 @@ func (c *DaiLiImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roadInf
|
||||
}
|
||||
|
||||
func (c *DaiLiImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
orderNo := strings.TrimSpace(c.GetString("orderNo"))
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, orderNo)
|
||||
@@ -168,7 +168,7 @@ func (c *DaiLiImpl) PayNotify() {
|
||||
}
|
||||
|
||||
func (c *DaiLiImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
tradeStatus := "SUCCESS"
|
||||
trxNo := orderInfo.BankOrderId
|
||||
|
||||
@@ -2,6 +2,7 @@ package third_party
|
||||
|
||||
import (
|
||||
"gateway/internal/service/supplier"
|
||||
|
||||
"github.com/beego/beego/v2/core/logs"
|
||||
)
|
||||
|
||||
|
||||
10
internal/service/supplier/third_party/jd.go
vendored
10
internal/service/supplier/third_party/jd.go
vendored
@@ -147,7 +147,7 @@ func (c *JDCardImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roadIn
|
||||
|
||||
// KMEncrypt 加密卡密
|
||||
func (c *JDCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
|
||||
block, err := aes.NewCipher([]byte(secret))
|
||||
@@ -164,7 +164,7 @@ func (c *JDCardImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
}
|
||||
|
||||
func (c *JDCardImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
attach := strings.TrimSpace(c.GetString("merchantId"))
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
|
||||
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
|
||||
@@ -214,7 +214,7 @@ func (c *JDCardImpl) PayNotify() {
|
||||
|
||||
func (c *JDCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return false
|
||||
@@ -277,7 +277,7 @@ func (c *JDCardImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo)
|
||||
|
||||
func (c *JDCardImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return supply_model.CardMsgErr
|
||||
@@ -353,7 +353,7 @@ func (c *JDCardImpl) PayFor(info payfor.PayforInfo) string {
|
||||
func (c *JDCardImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
cfg := config.Config{}
|
||||
url, err := cfg.GetMFCardQueryUrl()
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
}
|
||||
|
||||
10
internal/service/supplier/third_party/kuaifu.go
vendored
10
internal/service/supplier/third_party/kuaifu.go
vendored
@@ -122,7 +122,7 @@ func (c *KuaiFuImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roadIn
|
||||
|
||||
// PayNotify 支付回调
|
||||
func (c *KuaiFuImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
orderNo := strings.TrimSpace(c.GetString("orderNo"))
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, orderNo)
|
||||
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
|
||||
@@ -185,7 +185,7 @@ func (c *KuaiFuImpl) PayNotify() {
|
||||
}
|
||||
|
||||
func (c *KuaiFuImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
if orderInfo.Status != "wait" && orderInfo.Status != "" {
|
||||
otelTrace.Logger.WithContext(ctx).Error("订单已经被处理,不需要查询,bankOrderId:", zap.String("BankOrderId", orderInfo.BankOrderId))
|
||||
return false
|
||||
@@ -241,7 +241,7 @@ func (c *KuaiFuImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInf
|
||||
}
|
||||
|
||||
func (c *KuaiFuImpl) PayFor(payFor payfor.PayforInfo) string {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
params := make(map[string]any)
|
||||
params["merchantKey"] = KF_PAY_KEY
|
||||
params["realname"] = payFor.BankAccountName
|
||||
@@ -292,7 +292,7 @@ func (c *KuaiFuImpl) PayForNotify() string {
|
||||
}
|
||||
|
||||
func (c *KuaiFuImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
params := make(map[string]any)
|
||||
params["merchantKey"] = KF_PAY_KEY
|
||||
params["timestamp"] = utils.GetNowTimesTamp()
|
||||
@@ -351,7 +351,7 @@ func (c *KuaiFuImpl) BalanceQuery(roadInfo road.RoadInfo) float64 {
|
||||
"timestamp": utils.GetNowTimesTamp(),
|
||||
"merchantOrderId": xid.New().String(),
|
||||
}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
keys := utils.SortMap(params)
|
||||
sign := utils.GetMD5Sign(params, keys, KF_PAY_SECRET)
|
||||
params["sign"] = sign
|
||||
|
||||
@@ -171,7 +171,7 @@ func (c *MFCardV2Impl) Scan(ctx context.Context, orderInfo order.OrderInfo, road
|
||||
|
||||
// KMEncrypt 加密卡密
|
||||
func (c *MFCardV2Impl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
|
||||
block, err := aes.NewCipher([]byte(secret))
|
||||
if err != nil {
|
||||
@@ -187,7 +187,7 @@ func (c *MFCardV2Impl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
}
|
||||
|
||||
func (c *MFCardV2Impl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
otelTrace.Logger.WithContext(ctx).Info("消息回调成功!!!")
|
||||
params := make(map[string]any)
|
||||
attach := strings.TrimSpace(c.GetString("attach"))
|
||||
@@ -255,7 +255,7 @@ func (c *MFCardV2Impl) PayNotify() {
|
||||
}
|
||||
|
||||
func (c *MFCardV2Impl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
params := map[string]any{}
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
@@ -320,7 +320,7 @@ func (c *MFCardV2Impl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInf
|
||||
|
||||
func (c *MFCardV2Impl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return supply_model.CardMsgErr
|
||||
@@ -396,7 +396,7 @@ func (c *MFCardV2Impl) PayFor(info payfor.PayforInfo) string {
|
||||
|
||||
func (c *MFCardV2Impl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
cfg := config.Config{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
url, err := cfg.GetMFCardQueryUrl()
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
|
||||
10
internal/service/supplier/third_party/self.go
vendored
10
internal/service/supplier/third_party/self.go
vendored
@@ -128,7 +128,7 @@ func (c *SelfThirdImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roa
|
||||
|
||||
// KMEncrypt 加密卡密
|
||||
func (c *SelfThirdImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
|
||||
block, err := aes.NewCipher([]byte(secret))
|
||||
@@ -145,7 +145,7 @@ func (c *SelfThirdImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
}
|
||||
|
||||
func (c *SelfThirdImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
params := map[string]any{
|
||||
"orderNo": c.GetString("orderNo"),
|
||||
@@ -198,7 +198,7 @@ func (c *SelfThirdImpl) PayNotify() {
|
||||
}
|
||||
|
||||
func (c *SelfThirdImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -263,7 +263,7 @@ func (c *SelfThirdImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadIn
|
||||
}
|
||||
|
||||
func (c *SelfThirdImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -345,7 +345,7 @@ func (c *SelfThirdImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
params := map[string]string{}
|
||||
params["order_id"] = payFor.BankOrderId
|
||||
|
||||
@@ -109,7 +109,7 @@ func (c *StarSilenceImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, r
|
||||
}
|
||||
|
||||
func (c *StarSilenceImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
otelTrace.Logger.WithContext(ctx).Info("消息回调成功!!!")
|
||||
params := map[string]string{
|
||||
"supplierOrderId": strings.TrimSpace(c.GetString("supplierOrderId")),
|
||||
@@ -175,7 +175,7 @@ func (c *StarSilenceImpl) PayNotify() {
|
||||
|
||||
func (c *StarSilenceImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return false
|
||||
@@ -238,7 +238,7 @@ func (c *StarSilenceImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.Road
|
||||
|
||||
func (c *StarSilenceImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return supply_model.CardMsgErr
|
||||
@@ -314,7 +314,7 @@ func (c *StarSilenceImpl) PayFor(info payfor.PayforInfo) string {
|
||||
|
||||
func (c *StarSilenceImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
cfg := config.Config{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
url, err := cfg.GetMFCardQueryUrl()
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
|
||||
@@ -166,7 +166,7 @@ func (c *TMAllGameImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, roa
|
||||
}
|
||||
|
||||
func (c *TMAllGameImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, strings.TrimSpace(c.GetString("merchantOrder"))) // OrderId
|
||||
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
|
||||
@@ -225,7 +225,7 @@ func (c *TMAllGameImpl) PayNotify() {
|
||||
|
||||
func (c *TMAllGameImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -289,7 +289,7 @@ func (c *TMAllGameImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadIn
|
||||
|
||||
func (c *TMAllGameImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
@@ -370,7 +370,7 @@ func (c *TMAllGameImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
params := map[string]string{}
|
||||
params["order_id"] = payFor.BankOrderId
|
||||
|
||||
@@ -232,7 +232,7 @@ type ResponseStruct struct {
|
||||
}
|
||||
|
||||
func (c *WalMartImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
otelTrace.Logger.WithContext(ctx).Info("【沃尔玛】快付回调开始")
|
||||
response := ResponseStruct{}
|
||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &response)
|
||||
@@ -270,7 +270,7 @@ func (c *WalMartImpl) PayNotify() {
|
||||
|
||||
func (c *WalMartImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return false
|
||||
@@ -333,7 +333,7 @@ func (c *WalMartImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo
|
||||
|
||||
func (c *WalMartImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return supply_model.CardMsgErr
|
||||
@@ -412,7 +412,7 @@ func (c *WalMartImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
params := map[string]string{}
|
||||
params["order_id"] = payFor.BankOrderId
|
||||
params["app_key"] = gojson.Json("").Get("appKey").Tostring()
|
||||
|
||||
@@ -148,7 +148,7 @@ func (c *WalmartSelfImpl) Scan(ctx context.Context, orderInfo order.OrderInfo, r
|
||||
|
||||
// KMEncrypt 加密卡密
|
||||
func (c *WalmartSelfImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
|
||||
secret := utils.GetMD5LOWER(appSecret)[:16] // 加密秘钥
|
||||
block, err := aes.NewCipher([]byte(secret))
|
||||
@@ -165,7 +165,7 @@ func (c *WalmartSelfImpl) kMEncrypt(kf, appSecret string) (string, error) {
|
||||
}
|
||||
|
||||
func (c *WalmartSelfImpl) PayNotify() {
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
otelTrace.Logger.WithContext(ctx).Info("【沃尔玛】回调开始")
|
||||
attach := strings.TrimSpace(c.GetString("merchantId"))
|
||||
orderInfo := order.GetOrderByBankOrderId(ctx, attach) // OrderId
|
||||
@@ -218,7 +218,7 @@ func (c *WalmartSelfImpl) PayNotify() {
|
||||
|
||||
func (c *WalmartSelfImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.RoadInfo) bool {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return false
|
||||
@@ -276,7 +276,7 @@ func (c *WalmartSelfImpl) PayQuery(orderInfo order.OrderInfo, roadInfo road.Road
|
||||
|
||||
func (c *WalmartSelfImpl) PayQueryV2(orderInfo order.OrderInfo, roadInfo road.RoadInfo) supply_model.MsgModel {
|
||||
params := map[string]any{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
cardData, err := sonic.GetFromString(orderInfo.CardReturnData)
|
||||
if err != nil {
|
||||
return supply_model.CardMsgErr
|
||||
@@ -351,7 +351,7 @@ func (c *WalmartSelfImpl) PayFor(info payfor.PayforInfo) string {
|
||||
|
||||
func (c *WalmartSelfImpl) PayForQuery(payFor payfor.PayforInfo) (string, string) {
|
||||
cfg := config.Config{}
|
||||
ctx := c.Ctx.Request.Context()
|
||||
ctx := context.Background()
|
||||
url, err := cfg.GetMFCardQueryUrl()
|
||||
if err != nil {
|
||||
return config.PAYFOR_FAIL, ""
|
||||
|
||||
24
main.go
24
main.go
@@ -16,18 +16,18 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
cleanup1, cleanup2, cleanup3 := otelTrace.InitTracer()
|
||||
defer func() {
|
||||
if cleanup1 != nil {
|
||||
_ = cleanup1(otelTrace.InitCtx)
|
||||
}
|
||||
if cleanup2 != nil {
|
||||
_ = cleanup2(otelTrace.InitCtx)
|
||||
}
|
||||
if cleanup3 != nil {
|
||||
_ = cleanup3(otelTrace.InitCtx)
|
||||
}
|
||||
}()
|
||||
// cleanup1, cleanup2, cleanup3 := otelTrace.InitTracer()
|
||||
// defer func() {
|
||||
// if cleanup1 != nil {
|
||||
// _ = cleanup1(otelTrace.InitCtx)
|
||||
// }
|
||||
// if cleanup2 != nil {
|
||||
// _ = cleanup2(otelTrace.InitCtx)
|
||||
// }
|
||||
// if cleanup3 != nil {
|
||||
// _ = cleanup3(otelTrace.InitCtx)
|
||||
// }
|
||||
// }()
|
||||
go notify.CreateOrderNotifyConsumer(otelTrace.InitCtx)
|
||||
go query.CreatePayForQueryConsumer(otelTrace.InitCtx)
|
||||
go service.OrderSettleInit(otelTrace.InitCtx)
|
||||
|
||||
Reference in New Issue
Block a user