feat(selfThird): 添加自有三方支付回调通知功能

- 在 app.conf 中添加 selfThird 配置节,用于设置通知 URL
- 修改 merchant_hidden_config.go 中的 GetOrderHidden 函数逻辑
- 更新 self.go 中的回调处理逻辑,适配自有三方支付
-调整 GetStealCardConfig函数返回值类型,优化偷卡配置获取
This commit is contained in:
danial
2025-01-26 23:00:37 +08:00
parent 8b4ae21c65
commit 62e2821458
4 changed files with 18 additions and 36 deletions

View File

@@ -65,4 +65,7 @@ host=http://kami_backend:12401
[secret]
key = thisis32bitlongpassphraseimusing
iv = 1234567890123456
iv = 1234567890123456
[selfThird]
notify_url = http://kami_gateway:12309/selfThird/notify

View File

@@ -141,33 +141,25 @@ func (c *SelfThirdImpl) PayNotify() {
"tradeStatus": c.GetString("tradeStatus"),
"sign": c.GetString("sign"),
}
orderInfo := order.GetOrderByBankOrderId(params["orderNo"].(string))
if orderInfo.BankOrderId == "" || len(orderInfo.BankOrderId) == 0 {
logs.Error("【APPLE】回调的订单号不存在,订单号=", params["orderNo"].(string))
logs.Error("【自有三方】回调的订单号不存在,订单号=", params["orderNo"].(string))
c.Ctx.WriteString("FAIL")
return
}
roadInfo := road.GetRoadInfoByRoadUid(orderInfo.RoadUid)
if roadInfo.RoadUid == "" || len(roadInfo.RoadUid) == 0 {
logs.Error("【APPLE】支付通道已经关系或者删除,不进行回调")
logs.Error("【自有三方】支付通道已经关系或者删除,不进行回调")
c.Ctx.WriteString("FAIL")
return
}
merchantUid := orderInfo.MerchantUid
merchantInfo := merchant.GetMerchantByUid(merchantUid)
if merchantInfo.MerchantUid == "" || len(merchantInfo.MerchantUid) == 0 {
logs.Error("【APPLE】快付回调失败该商户不存在或者已经删除商户uid=", merchantUid)
logs.Error("【自有三方】快付回调失败该商户不存在或者已经删除商户uid=", merchantUid)
c.Ctx.WriteString("FAIL")
return
}
//params := map[string]string{
// "merchantId": strings.TrimSpace(c.GetString("merchantId")),
// "amount": strings.TrimSpace(c.GetString("amount")), // 时间戳
// "status": strings.TrimSpace(c.GetString("status")),
// "sign": strings.TrimSpace(c.GetString("sign")),
// "remark": strings.TrimSpace(c.GetString("remark")),
//}
orderInfo.BankTransId = params["trxNo"].(string)
if params["statusCode"] == "01" {
// TODO 订单支付成功

View File

@@ -19,13 +19,12 @@ func init() {
orm.RegisterModel(new(SysConfigDict))
}
func GetStealCardConfig() bool {
v := &SysConfigDict{}
func GetStealCardConfig() (v *SysConfigDict) {
o := orm.NewOrm()
err := o.QueryTable("sys_config_dict").Filter("key", "steal_rule_status").One(v)
if err != nil {
return false
return
} else {
return v.Value == "1"
return
}
}

View File

@@ -8,6 +8,7 @@ import (
"gateway/internal/models/road"
"gateway/internal/models/setting"
"github.com/beego/beego/v2/core/logs"
"github.com/duke-git/lancet/v2/datetime"
"github.com/duke-git/lancet/v2/pointer"
"github.com/duke-git/lancet/v2/random"
"github.com/duke-git/lancet/v2/slice"
@@ -21,7 +22,11 @@ import (
// GetOrderHidden 判断当前订单是否偷卡
func GetOrderHidden(orderNo *order.OrderInfo) (cfg *hidden.MerchantHiddenConfig) {
// 查询当前订单是否处于偷卡的范围
if !setting.GetStealCardConfig() {
cardConfig := setting.GetStealCardConfig()
if pointer.IsNil(cardConfig) {
return
}
if cardConfig.Value != "1" {
return
}
configList, err := hidden.GetAllEnabledMerchantHiddenConfig(orderNo.OrderAmount, orderNo.MerchantUid, orderNo.RoadUid)
@@ -37,26 +42,8 @@ func GetOrderHidden(orderNo *order.OrderInfo) (cfg *hidden.MerchantHiddenConfig)
if err2 != nil {
continue
}
//如果是第一次偷卡
if record == nil {
//查询当前用户所有的订单
orderInfos, err := order.GetByUidAndRoadUid(config.MerchantUid, config.RoadUid)
if err != nil || len(orderInfos) == 0 {
continue
}
//计算订单金额
amountTotal := slice.ReduceBy(orderInfos, 0, func(index int, item *order.OrderInfo, agg int) int {
return agg + int(item.FactAmount)
})
//如果当前金额超过设定金额,并且面额一致,就偷卡
if amountTotal > config.Amount && orderNo.FactAmount == float64(config.FaceAmount) {
cfg = config
return
}
continue
}
//如果是多次偷卡
orderInfos, err := order.GetByUidAndRoadUidAndTime(config.MerchantUid, config.RoadUid, record.CreateAt)
orderInfos, err := order.GetByUidAndRoadUidAndTime(config.MerchantUid, config.RoadUid, datetime.Max(record.UpdateAt, *cardConfig.UpdatedAt))
if err != nil || len(orderInfos) == 0 {
continue
}
@@ -69,6 +56,7 @@ func GetOrderHidden(orderNo *order.OrderInfo) (cfg *hidden.MerchantHiddenConfig)
cfg = config
return
}
}
return
}