fix(supplier): 优化支付失败处理逻辑及更新核测试通道码

- 支付失败时增加支付通道状态校验,避免渠道已关闭或删除时继续回调
- 支付失败错误信息根据配置动态查询更新,提高错误反馈准确性
- 调用服务层解决支付失败流程,统一响应SUCCESS或FAIL
- 测试中更新核测试任务中渠道码为138,保证用例与真实数据保持一致
- 删除无用代码注释,提高代码整洁度
This commit is contained in:
danial
2025-12-14 01:43:01 +08:00
parent d0da121174
commit 675265f965
2 changed files with 33 additions and 7 deletions

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"gateway/internal/otelTrace"
"gateway/internal/service/client"
"gateway/internal/models/merchant"
"gateway/internal/models/merchant_deploy"
@@ -185,14 +186,33 @@ func (f *JinkeImpl) PayNotify() {
} else {
f.Ctx.WriteString("FAIL")
}
} else {
isOk := service.SolvePayFail(f.Ctx.Request.Context(), orderInfo.BankOrderId, resp.TradeNo, "订单支付失败")
if isOk {
f.Ctx.WriteString("SUCCESS")
} else {
f.Ctx.WriteString("FAIL")
return
}
roadInfo := road.GetRoadInfoByRoadUid(ctx, orderInfo.RoadUid)
if roadInfo.RoadUid == "" || len(roadInfo.RoadUid) == 0 {
otelTrace.Logger.WithContext(ctx).Error("【祥云】支付通道已经关系或者删除,不进行回调")
f.Ctx.WriteString("fail")
return
}
cdata := supplier.RedeemCardInfo{}
_ = json.Unmarshal([]byte(orderInfo.ExValue), &cdata)
errMsg := "支付失败"
if gojson.Json(roadInfo.Params).Get("jvnkaQuery").Tostring() == "1" {
retMsg, _ := client.NewHeePayClient().ToString(ctx, &client.QueryCardInput{
OrderId: orderInfo.BankOrderId,
CardNumber: cdata.CardNo,
CardPassword: cdata.Data,
})
if retMsg != "" {
errMsg = retMsg
}
}
isOk := service.SolvePayFail(f.Ctx.Request.Context(), orderInfo.BankOrderId, resp.TradeNo, errMsg)
if isOk {
f.Ctx.WriteString("SUCCESS")
} else {
f.Ctx.WriteString("FAIL")
}
f.Ctx.WriteString("SUCCESS")
}

View File

@@ -95,9 +95,15 @@ func TestSendCardTaskTypeNuclear_HandleSendCardTask(t *testing.T) {
func TestSendCardTaskTypeNuclear_CreateOrder(t *testing.T) {
for i := 0; i < 10; i++ {
orderId := utils.GenerateId()
//{
//"appId":"20021511",
//"channelCode":"138",
//"key":"k90BfV0TKV2ERz16JFE9kdrmdt50vFf7"
//}
params := map[string]string{
"AppId": "20021511",
"ChannelCode": "164",
"ChannelCode": "138",
"Amount": "10",
"OrderId": orderId,
"NonceStr": utils.GenerateId(),