fix(thirdpay): 修复邮储银行退款状态处理逻辑及相关细节

1. 调整退款订单状态更新逻辑,根据渠道和退款结果正确设置订单状态
2. 优化邮储退款接口的退款状态判断条件
3. 补充退款成功时间的格式化输出
4. 修复退款请求参数中退款描述的硬编码问题
5. 添加邮储退款解密响应的日志打印
This commit is contained in:
wolter 2026-08-21 18:05:58 +08:00
parent 53c1e3e00b
commit b15442f99d
3 changed files with 23 additions and 8 deletions

View File

@ -253,7 +253,20 @@ func (w *Pay) Refund() {
} }
res := paymentService.OrderRefund(*w.ctx, *thirdPayRefund) res := paymentService.OrderRefund(*w.ctx, *thirdPayRefund)
if res.Code == payCommon.PAY_SUCCESS_CODE { if res.Code == payCommon.PAY_SUCCESS_CODE {
if w.PayParam.Channel.ChannelType == common.PAY_CHANNEL_PSBC {
if res.Result.RefundStatus == payCommon.PAY_REFUND_STATU_SUCCESS {
// 退款成功
w.Order.Status = common.ORDER_STATUS_PAYED
} else if res.Result.RefundStatus == payCommon.PAY_REFUND_STATU_ING {
//
w.Order.Status = common.ORDER_STATUS_PAYING w.Order.Status = common.ORDER_STATUS_PAYING
} else {
w.Order.Status = common.ORDER_STATUS_FAILED
}
} else {
w.Order.Status = common.ORDER_STATUS_PAYING
}
code := services.OrderUpdate(w.Order, "status") code := services.OrderUpdate(w.Order, "status")
if code != errorcode.Success { if code != errorcode.Success {
w.PayCode = code w.PayCode = code

View File

@ -1,6 +1,7 @@
package payment package payment
import ( import (
"PaymentCenter/app/utils"
"encoding/json" "encoding/json"
"fmt" "fmt"
"time" "time"
@ -33,13 +34,13 @@ func (c *Client) Refund(req RefundRequest) (*RefundResponse, error) {
"data": map[string]string{ "data": map[string]string{
"txnCode": "1003", "txnCode": "1003",
"sourceId": "16", "sourceId": "16",
"reqTraceId": req.OrderNo + now[4:14], // MMDDHHmmss 10位后缀 "reqTraceId": req.OrderNo + "0010",
"reqDate": now, // 14 位 YYYYMMDDHHmmss "reqDate": now, // 14 位 YYYYMMDDHHmmss
"mchtNo": c.cfg.MchtNo, "mchtNo": c.cfg.MchtNo,
"orgTxnSeq": req.OrgTxnSeq, "orgTxnSeq": req.OrgTxnSeq,
"txnAmt": req.Price, "txnAmt": req.Price,
"orgTxnAmt": req.Price, "orgTxnAmt": req.Price,
"refundDesc": "用户主动退款", "refundDesc": req.RefundDesc,
}, },
}, },
} }
@ -60,6 +61,7 @@ func (c *Client) Refund(req RefundRequest) (*RefundResponse, error) {
} }
responseData, err := c.DecryptResponse(string(body), false) responseData, err := c.DecryptResponse(string(body), false)
utils.Log(nil, "邮储退款解密响应", responseData)
if err != nil { if err != nil {
return nil, fmt.Errorf("解密响应失败: %v原始响应: %s", err, string(body)) return nil, fmt.Errorf("解密响应失败: %v原始响应: %s", err, string(body))
} }

View File

@ -9,6 +9,7 @@ import (
"fmt" "fmt"
"github.com/qit-team/snow-core/log/logger" "github.com/qit-team/snow-core/log/logger"
"strconv" "strconv"
"time"
) )
type PsbcPay struct { type PsbcPay struct {
@ -156,10 +157,9 @@ func PsbcRefundOrder(ctx context.Context, orderRefundRequest OrderRefundRequest)
} }
refundStatus := payCommon.PAY_REFUND_STATU_COMMON refundStatus := payCommon.PAY_REFUND_STATU_COMMON
switch resp.RefundOrderSta { if resp.RespCode == "000000" && resp.RefundOrderSta == "03" {
case "03":
refundStatus = payCommon.PAY_REFUND_STATU_SUCCESS refundStatus = payCommon.PAY_REFUND_STATU_SUCCESS
default: } else {
refundStatus = payCommon.PAY_REFUND_STATU_FAIL refundStatus = payCommon.PAY_REFUND_STATU_FAIL
} }
@ -177,7 +177,7 @@ func PsbcRefundOrder(ctx context.Context, orderRefundRequest OrderRefundRequest)
RefundFee: refundFee, RefundFee: refundFee,
RefundOrderId: orderRefundRequest.RefundOrderId, RefundOrderId: orderRefundRequest.RefundOrderId,
RefundStatus: refundStatus, RefundStatus: refundStatus,
RefundSuccessTime: "", RefundSuccessTime: time.Now().Format(time.DateTime),
}, nil }, nil
} }