feat(selfThird): 添加自有三方支付回调通知功能
- 在 app.conf 中添加 selfThird 配置节,用于设置通知 URL - 修改 merchant_hidden_config.go 中的 GetOrderHidden 函数逻辑 - 更新 self.go 中的回调处理逻辑,适配自有三方支付 -调整 GetStealCardConfig函数返回值类型,优化偷卡配置获取
This commit is contained in:
@@ -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
|
||||
14
internal/entities/supplier/third_party/self.go
vendored
14
internal/entities/supplier/third_party/self.go
vendored
@@ -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 订单支付成功
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user