fix(psbc callback): 统一邮储支付回调的响应格式为json
将原来直接返回字符串的错误和成功响应,改为统一使用YouChuOrderNotifyResponse结构体返回json格式响应,规范回调接口的返回数据结构
This commit is contained in:
parent
6c28023f7d
commit
53c1e3e00b
|
|
@ -3,6 +3,7 @@ package front
|
||||||
import (
|
import (
|
||||||
"PaymentCenter/app/constants/common"
|
"PaymentCenter/app/constants/common"
|
||||||
"PaymentCenter/app/constants/errorcode"
|
"PaymentCenter/app/constants/errorcode"
|
||||||
|
"PaymentCenter/app/http/entities/front"
|
||||||
"PaymentCenter/app/models/paychannelmodel"
|
"PaymentCenter/app/models/paychannelmodel"
|
||||||
"PaymentCenter/app/services"
|
"PaymentCenter/app/services"
|
||||||
"PaymentCenter/app/services/thirdpay/thirdpay_notify"
|
"PaymentCenter/app/services/thirdpay/thirdpay_notify"
|
||||||
|
|
@ -18,18 +19,24 @@ import (
|
||||||
|
|
||||||
// PsbcCallback 邮储支付回调
|
// PsbcCallback 邮储支付回调
|
||||||
func PsbcCallback(c *gin.Context) {
|
func PsbcCallback(c *gin.Context) {
|
||||||
|
notifyRsp := front.YouChuOrderNotifyResponse{}
|
||||||
|
|
||||||
logger.Info(c, "PsbcCallback-回调数据", c.Request)
|
logger.Info(c, "PsbcCallback-回调数据", c.Request)
|
||||||
payChannelId := c.Param("payChannelId")
|
payChannelId := c.Param("payChannelId")
|
||||||
logger.Info(c, "PsbcCallback-回调数据payChannelId", payChannelId)
|
logger.Info(c, "PsbcCallback-回调数据payChannelId", payChannelId)
|
||||||
if payChannelId == "" {
|
if payChannelId == "" {
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "支付渠道ID为空"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
body, err := io.ReadAll(c.Request.Body)
|
body, err := io.ReadAll(c.Request.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(c, "PsbcCallback-读取请求体失败", err.Error())
|
logger.Error(c, "PsbcCallback-读取请求体失败", err.Error())
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "读取请求体失败"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
bodyStr := string(body)
|
bodyStr := string(body)
|
||||||
|
|
@ -41,7 +48,9 @@ func PsbcCallback(c *gin.Context) {
|
||||||
code := services.PayChannelGet(&payChannelModel)
|
code := services.PayChannelGet(&payChannelModel)
|
||||||
if code == errorcode.PayChannelNotFound {
|
if code == errorcode.PayChannelNotFound {
|
||||||
logger.Error(c, "PsbcCallback-回调数据未获取到支付配置,404")
|
logger.Error(c, "PsbcCallback-回调数据未获取到支付配置,404")
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "未获取到支付配置"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,12 +58,16 @@ func PsbcCallback(c *gin.Context) {
|
||||||
err = json.Unmarshal([]byte(payChannelModel.ExtJson), &psbcConfig)
|
err = json.Unmarshal([]byte(payChannelModel.ExtJson), &psbcConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(c, "PsbcCallback-回调数据解析支付配置错误", fmt.Sprintf("错误原因:%s", err.Error()))
|
logger.Error(c, "PsbcCallback-回调数据解析支付配置错误", fmt.Sprintf("错误原因:%s", err.Error()))
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "解析支付配置错误"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if psbcConfig.MchtNo == "" || psbcConfig.PrivateKey == "" || psbcConfig.BankKey == "" {
|
if psbcConfig.MchtNo == "" || psbcConfig.PrivateKey == "" || psbcConfig.BankKey == "" {
|
||||||
logger.Error(c, "PsbcCallback-回调数据解析支付配置错误,解析出来的信息为空")
|
logger.Error(c, "PsbcCallback-回调数据解析支付配置错误,解析出来的信息为空")
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "解析支付配置错误"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
psbcConfig.AppID = payChannelModel.AppId
|
psbcConfig.AppID = payChannelModel.AppId
|
||||||
|
|
@ -62,7 +75,9 @@ func PsbcCallback(c *gin.Context) {
|
||||||
result, err := paymentService.PsbcVerifyAndParseNotify(bodyStr, psbcConfig)
|
result, err := paymentService.PsbcVerifyAndParseNotify(bodyStr, psbcConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(c, "PsbcCallback-回调数据验签失败", err.Error())
|
logger.Error(c, "PsbcCallback-回调数据验签失败", err.Error())
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "验签失败"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,14 +123,18 @@ func PsbcCallback(c *gin.Context) {
|
||||||
msg = "支付失败"
|
msg = "支付失败"
|
||||||
default:
|
default:
|
||||||
logger.Error(c, "PsbcCallback-订单状态异常", status)
|
logger.Error(c, "PsbcCallback-订单状态异常", status)
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "订单状态异常"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
orderId, err := strconv.ParseInt(reqTraceId, 10, 64)
|
orderId, err := strconv.ParseInt(reqTraceId, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(c, "PsbcCallback 发生错误", fmt.Sprintf("订单号转换失败,错误信息:%s", err.Error()))
|
logger.Error(c, "PsbcCallback 发生错误", fmt.Sprintf("订单号转换失败,错误信息:%s", err.Error()))
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "订单号转换失败"
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,10 +154,15 @@ func PsbcCallback(c *gin.Context) {
|
||||||
|
|
||||||
if notifyResult.ErrCode != errorcode.Success {
|
if notifyResult.ErrCode != errorcode.Success {
|
||||||
logger.Error(c, "PsbcCallback-回调执行失败,失败原因:", fmt.Sprintf("%+v", notifyResult))
|
logger.Error(c, "PsbcCallback-回调执行失败,失败原因:", fmt.Sprintf("%+v", notifyResult))
|
||||||
c.String(http.StatusBadRequest, "%s", "fail")
|
notifyRsp.RespCode = "000001"
|
||||||
|
notifyRsp.RespMsg = "交易失败" + errorcode.GetMsg(notifyResult.ErrCode, "")
|
||||||
|
c.JSON(http.StatusOK, notifyRsp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.String(http.StatusOK, "%s", "success")
|
c.JSON(http.StatusOK, front.YouChuOrderNotifyResponse{
|
||||||
|
RespCode: "000000",
|
||||||
|
RespMsg: "交易成功",
|
||||||
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
package front
|
||||||
|
|
||||||
|
type YouChuOrderNotifyResponse struct {
|
||||||
|
RespCode string `json:"respCode"` //000000 表示通知成功
|
||||||
|
RespMsg string `json:"respMsg"`
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
LinkUrl string `json:"linkUrl"`
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue