Browse Source

支付消息推送

kobe6258 2 days ago
parent
commit
546b0ef464

+ 6 - 1
common/exception/exc_enums.go

@@ -149,6 +149,7 @@ const (
 	GenerateRiskTestTokenFailed
 	SyncAccountStatusError
 	SyncIdInfoError
+	GetWechatSDKParamsFailed
 )
 const (
 	OrderErrorCode int = iota + 90000
@@ -173,6 +174,8 @@ const (
 	GetPaymentTokenFailed
 	PaymentDoneError
 	RefundDealFail
+	PaymentStatusError
+	PaymentChannelError
 )
 
 const (
@@ -290,6 +293,7 @@ var ErrorMap = map[int]string{
 	GetCapTokenFailed:           "获取cap token失败",
 	GenerateRiskTestTokenFailed: "生成风险测评token失败",
 	GetCustomerRiskInfoFailed:   "查询客户风险信息失败",
+	GetWechatSDKParamsFailed:    "处理微信支付SDK参数失败",
 	//order
 	IllegalOrderStatus:   "非法的订单状态",
 	OrderPayTimeoutError: "订单支付超时",
@@ -306,7 +310,8 @@ var ErrorMap = map[int]string{
 	GetPaymentTokenFailed:    "获取微信订单参数失败",
 	PaymentDoneError:         "订单已完成支付",
 	RefundDealFail:           "处理退款应答失败",
-
+	PaymentStatusError:       "支付结果状态参数非法",
+	PaymentChannelError:      "支付渠道参数非法",
 	//收藏
 	IllegalSourceType:    "非法的资源类型",
 	IllegalSourceId:      "非法的资源ID",

+ 6 - 1
common/utils/payment/payment_utils.go

@@ -33,7 +33,7 @@ type PaymentToken struct {
 type PaymentParam struct {
 	ProductOrderNo string `json:"product_order_no" mapStruct:"ProductOrderNo"`
 	PayOrderNo     string `json:"pay_order_no" mapStruct:"PayOrderNo"`
-	Package        string `json:"package" mapStruct:"Package"`
+	PrepayId       string `json:"prepay_id" mapStruct:"PrepayId"`
 	Timestamp      string `json:"timestamp" mapStruct:"Timestamp"`
 	NonceStr       string `json:"nonce_str" mapStruct:"NonceStr"`
 	PaySign        string `json:"pay_sign" mapStruct:"PaySign"`
@@ -107,3 +107,8 @@ func GetPaymentParam(token string) (paymentParam PaymentParam, err error) {
 func generateWechatOrderToken() (token string) {
 	return strings.ReplaceAll(uuid.New().String(), "-", "")
 }
+func Ready(token string, param PaymentParam) (err error) {
+	param.Status = READY
+	paramMap, _ := StructToMap(param)
+	return rdb.UpdateHSetNoExpire(token, paramMap)
+}

+ 148 - 89
controllers/web_hook/htfutures_trade_controller.go

@@ -5,17 +5,50 @@ import (
 	"eta/eta_mini_ht_api/common/exception"
 	"eta/eta_mini_ht_api/controllers"
 	orderService "eta/eta_mini_ht_api/domian/order"
+	paymentService "eta/eta_mini_ht_api/service/payment"
 	"eta/eta_mini_ht_api/service/product"
 )
 
+const (
+	PaymentChannelWechat = "wechat"
+	PaymentChannelAlipay = "alipay"
+	PaymentStatusClosed  = "closed"
+	PaymentStatusSuccess = "success"
+	PaymentStatusFailed  = "failed"
+)
+
+var (
+	statusMap = map[string]bool{
+		PaymentStatusClosed:  false,
+		PaymentStatusSuccess: true,
+		PaymentStatusFailed:  false,
+	}
+	channelMap = map[string]int{
+		PaymentChannelWechat: 1,
+		PaymentChannelAlipay: 1,
+	}
+)
+
 type HTFuturesTradeController struct {
 	controllers.WebHookController
 }
 
-type ss struct {
-	Success      bool   `json:"success"`
-	User         int    `json:"user"`
-	TradeOrderNo string `json:"tradeOrderNo"`
+type PaymentOrderReq struct {
+	Status         string `json:"status"`
+	OrderNo        string `json:"order_no"`
+	PaymentChannel string `json:"payment_channel"`
+}
+type RefundOrderReq struct {
+	Status  string `json:"status"`
+	OrderNo string `json:"order_no"`
+}
+type WechatSDKParamsReq struct {
+	OrderNo   string `json:"order_no"`
+	PrepayId  string `json:"prepay_id"`
+	Timestamp string `json:"timestamp"`
+	NonceStr  string `json:"nonce_str"`
+	PaySign   string `json:"pay_sign"`
+	SignType  string `json:"sign_type"`
 }
 
 // InformPaymentResult  支付通知接口
@@ -25,45 +58,34 @@ type ss struct {
 // @router /v1/payment/informPaymentResult [post]
 func (h *HTFuturesTradeController) InformPaymentResult() {
 	controllers.WrapWebhook(&h.WebHookController, func() (result *controllers.WrapData, err error) {
-		result = h.InitWrapData("同步风险等级")
-		s := new(ss)
-		h.GetPostParams(s)
-		logger.Info("支付结果通知: %v", s)
-		if s.Success {
-			productOrder, _ := orderService.DealPayment(s.TradeOrderNo, orderService.PaySuccess)
-			//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
-			_ = product.OpenProduct(productOrder)
+		result = h.InitWrapData("支付结果处理失败")
+		req := new(PaymentOrderReq)
+		h.GetPostParams(req)
+		logger.Info("支付结果通知: %v", req)
+		if _, ok := channelMap[req.PaymentChannel]; !ok {
+			logger.Warn("支付结果通知: %v", req)
+			err = exception.NewWithException(exception.PaymentChannelError, "未知的支付渠道")
+			h.FailedResult("支付结果通知: %v", result)
+			return
+		}
+		if success, ok := statusMap[req.Status]; !ok {
+			logger.Warn("支付结果通知: %v", req)
+			err = exception.NewWithException(exception.PaymentStatusError, "未知的支付状态结果")
+			h.FailedResult("支付结果通知: %v", result)
+			return
 		} else {
-			_, _ = orderService.DealPayment(s.TradeOrderNo, orderService.PayFail)
+			if success {
+				productOrder, _ := orderService.DealPayment(req.OrderNo, req.PaymentChannel, req.Status, orderService.PaySuccess)
+				//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
+				_ = product.OpenProduct(productOrder)
+			} else {
+				_, _ = orderService.DealPayment(req.OrderNo, req.PaymentChannel, req.Status, orderService.PayFail)
+			}
+			result = h.InitWrapData("支付结果应答成功")
+			h.SuccessResult("success", nil, result)
+			return
 		}
-		//htConfig := config.GetConfig(contants.HT).(*config.HTBizConfig)
-		//webhookRequest := new(WebhookRequest)
-		//h.GetPostParams(webhookRequest)
-		//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
-		//if err != nil {
-		//	err = exception.NewWithException(exception.SysError, err.Error())
-		//	logger.Error("解析私钥失败: %v", err)
-		//	h.FailedResult("解析私钥失败", result)
-		//	return
-		//}
-		//decodeData, err := authUtils.DecryptWithRSA(privateKey, webhookRequest.Data)
-		//if err != nil {
-		//	err = exception.NewWithException(exception.SysError, err.Error())
-		//	logger.Error("解密请求体失败: %v", err)
-		//	h.FailedResult("解密请求体失败", result)
-		//	return
-		//}
-		//syncCustomerRiskLevelReq := new(SyncCustomerRiskLevelReq)
-		//err = json.Unmarshal(decodeData, syncCustomerRiskLevelReq)
-		//if err != nil {
-		//	err = exception.NewWithException(exception.SyncRiskError, err.Error())
-		//	logger.Error("解析请求体失败: %v", err)
-		//	h.FailedResult("解析请求体失败", result)
-		//	return
-		//}
-		result = h.InitWrapData("支付结果应答成功")
-		h.SuccessResult("success", nil, result)
-		return
+
 	})
 }
 
@@ -74,57 +96,94 @@ func (h *HTFuturesTradeController) InformPaymentResult() {
 // @router /v1/payment/informRefundResult [post]
 func (h *HTFuturesTradeController) InformRefundResult() {
 	controllers.WrapWebhook(&h.WebHookController, func() (result *controllers.WrapData, err error) {
-		result = h.InitWrapData("同步风险等级")
-		s := new(ss)
-		h.GetPostParams(s)
-		if s.Success {
-			productOrder, RefundErr := orderService.DealRefund(s.TradeOrderNo, orderService.RefundSuccess)
-			if RefundErr != nil {
-				logger.Error("退款订单处理失败: %v", err)
-				err = exception.NewWithException(exception.RefundDealFail, err.Error())
-				h.FailedResult("退款订单处理失败", result)
-				return
-			}
-
-			//处理退款订单
-			_ = product.CloseProduct(productOrder)
+		result = h.InitWrapData("退款订单处理失败")
+		refundReq := new(RefundOrderReq)
+		h.GetPostParams(refundReq)
+		logger.Warn("退款结果通知: %v", refundReq)
+		if success, ok := statusMap[refundReq.Status]; !ok {
+			err = exception.NewWithException(exception.PaymentStatusError, "未知的支付状态结果")
+			h.FailedResult("支付结果通知: %v", result)
+			return
 		} else {
-			_, RefundErr := orderService.DealRefund(s.TradeOrderNo, orderService.RefundFail)
-			if RefundErr != nil {
-				logger.Error("退款订单处理失败: %v", err)
-				err = exception.NewWithException(exception.RefundDealFail, RefundErr.Error())
-				h.FailedResult("退款订单处理失败", result)
-				return
+			if success {
+				productOrder, RefundErr := orderService.DealRefund(refundReq.OrderNo, refundReq.Status, orderService.RefundSuccess)
+				if RefundErr != nil {
+					logger.Error("退款订单处理失败: %v", err)
+					err = exception.NewWithException(exception.RefundDealFail, err.Error())
+					h.FailedResult("退款订单处理失败", result)
+					return
+				}
+				//处理退款订单
+				_ = product.CloseProduct(productOrder)
+			} else {
+				_, RefundErr := orderService.DealRefund(refundReq.OrderNo, refundReq.Status, orderService.RefundFail)
+				if RefundErr != nil {
+					logger.Error("退款订单处理失败: %v", err)
+					err = exception.NewWithException(exception.RefundDealFail, RefundErr.Error())
+					h.FailedResult("退款订单处理失败", result)
+					return
+				}
 			}
+			//创建meta_info
+			//htConfig := config.GetConfig(contants.HT).(*config.HTBizConfig)
+			//webhookRequest := new(WebhookRequest)
+			//h.GetPostParams(webhookRequest)
+			//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
+			//if err != nil {
+			//	err = exception.NewWithException(exception.SysError, err.Error())
+			//	logger.Error("解析私钥失败: %v", err)
+			//	h.FailedResult("解析私钥失败", result)
+			//	return
+			//}
+			//decodeData, err := authUtils.DecryptWithRSA(privateKey, webhookRequest.Data)
+			//if err != nil {
+			//	err = exception.NewWithException(exception.SysError, err.Error())
+			//	logger.Error("解密请求体失败: %v", err)
+			//	h.FailedResult("解密请求体失败", result)
+			//	return
+			//}
+			//syncCustomerRiskLevelReq := new(SyncCustomerRiskLevelReq)
+			//err = json.Unmarshal(decodeData, syncCustomerRiskLevelReq)
+			//if err != nil {
+			//	err = exception.NewWithException(exception.SyncRiskError, err.Error())
+			//	logger.Error("解析请求体失败: %v", err)
+			//	h.FailedResult("解析请求体失败", result)
+			//	return
+			//}
+			result = h.InitWrapData("退款结果应答成功")
+			h.SuccessResult("success", nil, result)
+			return
+		}
+	})
+}
+
+// InformWechatPaymentResult  支付通知接口
+// @Summary 支付通知接口
+// @Description 支付通知接口
+// @Success 200 {object} controllers.BaseResponse
+// @router /v1/payment/sendWechatSDKParams [post]
+func (h *HTFuturesTradeController) InformWechatPaymentResult() {
+	controllers.WrapWebhook(&h.WebHookController, func() (result *controllers.WrapData, err error) {
+		result = h.InitWrapData("微信支付SDK参数处理失败")
+		sdkParams := new(WechatSDKParamsReq)
+		h.GetPostParams(sdkParams)
+		logger.Info("微信支付SDK参数通知: %v", sdkParams)
+		err = paymentService.DealWechatSDKParams(paymentService.WechatSDKParams{
+			NonceStr:  sdkParams.NonceStr,
+			OrderNo:   sdkParams.OrderNo,
+			PaySign:   sdkParams.PaySign,
+			PrepayId:  sdkParams.PrepayId,
+			SignType:  sdkParams.SignType,
+			Timestamp: sdkParams.Timestamp,
+		})
+		if err != nil {
+			logger.Error("微信支付SDK参数处理失败: %v", err)
+			err = exception.NewWithException(exception.GetWechatSDKParamsFailed, err.Error())
+			h.FailedResult("微信支付SDK参数处理失败", result)
+			return
 		}
-		//创建meta_info
-		//htConfig := config.GetConfig(contants.HT).(*config.HTBizConfig)
-		//webhookRequest := new(WebhookRequest)
-		//h.GetPostParams(webhookRequest)
-		//privateKey, err := authUtils.ParsePrivateKey(htConfig.GetWebhookPrivateKey())
-		//if err != nil {
-		//	err = exception.NewWithException(exception.SysError, err.Error())
-		//	logger.Error("解析私钥失败: %v", err)
-		//	h.FailedResult("解析私钥失败", result)
-		//	return
-		//}
-		//decodeData, err := authUtils.DecryptWithRSA(privateKey, webhookRequest.Data)
-		//if err != nil {
-		//	err = exception.NewWithException(exception.SysError, err.Error())
-		//	logger.Error("解密请求体失败: %v", err)
-		//	h.FailedResult("解密请求体失败", result)
-		//	return
-		//}
-		//syncCustomerRiskLevelReq := new(SyncCustomerRiskLevelReq)
-		//err = json.Unmarshal(decodeData, syncCustomerRiskLevelReq)
-		//if err != nil {
-		//	err = exception.NewWithException(exception.SyncRiskError, err.Error())
-		//	logger.Error("解析请求体失败: %v", err)
-		//	h.FailedResult("解析请求体失败", result)
-		//	return
-		//}
-		result = h.InitWrapData("退款结果应答成功")
-		h.SuccessResult("success", nil, result)
+		result = h.InitWrapData("微信支付SDK参数处理成功")
+		h.SuccessResult("success", sdkParams, result)
 		return
 	})
 }

+ 1 - 1
controllers/webhook_controller.go

@@ -94,7 +94,7 @@ func (b *WebHookController) FailResponse(errInfo error, msg string) {
 	retData = WebhookResponse{
 		Ret:     200,
 		Msg:     msg,
-		ErrMsg:  etaError.ErrorMsg,
+		ErrMsg:  getErrMsg(etaError),
 		ErrCode: etaError.ErrorCode,
 		Data:    nil,
 		TraceId: traceId}

+ 4 - 4
domian/order/trade_order.go

@@ -180,7 +180,7 @@ func createRefundMetaInfo(sysUserId int, productOrderNo string, flag string) (er
 	return message.CreateMetaInfo(metaInfo)
 }
 
-func DealRefund(refundOrderNo string, flag string) (productOrderDTO ProductOrderDTO, err error) {
+func DealRefund(refundOrderNo, status string, flag string) (productOrderDTO ProductOrderDTO, err error) {
 	flow, err := order.GetRefundFlow(refundOrderNo)
 	if err != nil {
 		logger.Error("获取退款流水失败%v,退款订单:%s", err, refundOrderNo)
@@ -196,7 +196,7 @@ func DealRefund(refundOrderNo string, flag string) (productOrderDTO ProductOrder
 	if flag == RefundSuccess {
 		isSuccess = true
 	}
-	err = order.DealRefundOrder(tradeOrder, isSuccess)
+	err = order.DealRefundOrder(tradeOrder, status, isSuccess)
 	if err != nil {
 		logger.Error("处理退款结果失败%v,退款订单:%s", err, refundOrderNo)
 		return
@@ -211,7 +211,7 @@ func DealRefund(refundOrderNo string, flag string) (productOrderDTO ProductOrder
 	_ = createRefundMetaInfo(flow.OperatorUserID, flow.ProductOrderNo, flag)
 	return
 }
-func DealPayment(tradeOrderNo string, flag string) (productOrderDTO ProductOrderDTO, err error) {
+func DealPayment(tradeOrderNo, paymentChannel, PayStatus string, flag string) (productOrderDTO ProductOrderDTO, err error) {
 	//处理退款订单
 	tradeOrder, err := order.GetTradeOrderByNo(tradeOrderNo, order.PaymentTypePay)
 	if err != nil {
@@ -240,7 +240,7 @@ func DealPayment(tradeOrderNo string, flag string) (productOrderDTO ProductOrder
 	} else {
 		validDuration = "永久有效"
 	}
-	err = order.DealPaymentOrder(tradeOrder, isSuccess, validDuration)
+	err = order.DealPaymentOrder(tradeOrder, paymentChannel, PayStatus, isSuccess, validDuration)
 	if err != nil {
 		logger.Error("处理支付结果失败%v,支付订单:%s", err, tradeOrderNo)
 		return

+ 4 - 4
models/order/product_order.go

@@ -22,10 +22,10 @@ const (
 	OrderStatusClosed     OrderStatus = "closed"
 	OrderStatusRefund     OrderStatus = "refund"
 	//退款状态
-	RefundStatusSuccess    RefundStatus = "success"
-	RefundStatusPending    RefundStatus = "pending"
-	RefundStatusFailed     RefundStatus = "failed"
-	RefundStatusProcessing RefundStatus = "processing"
+	RefundStatusSuccess RefundStatus = "success"
+	RefundStatusPending RefundStatus = "pending"
+	RefundStatusFailed  RefundStatus = "failed"
+	RefundStatusClosed  RefundStatus = "closed"
 
 	detailColumn = "id,order_id,user_id,template_user_id,real_name,area_code,mobile,product_id,product_type,product_name,status,created_time,updated_time,total_amount,expired_time,valid_duration"
 )

+ 18 - 8
models/order/trade_order.go

@@ -11,10 +11,10 @@ type PaymentType string
 type PaymentWay string
 
 const (
-	PaymentStatusPending    PaymentStatus = "pending"
-	PaymentStatusProcessing PaymentStatus = "processing"
-	PaymentStatusDone       PaymentStatus = "done"
-	PaymentStatusFailed     PaymentStatus = "failed"
+	PaymentStatusPending PaymentStatus = "pending"
+	PaymentStatusClosed  PaymentStatus = "closed"
+	PaymentStatusDone    PaymentStatus = "done"
+	PaymentStatusFailed  PaymentStatus = "failed"
 
 	PaymentTypePay    PaymentType = "pay"
 	PaymentTypeRefund PaymentType = "refund"
@@ -39,7 +39,7 @@ type TradeOrder struct {
 	UserID           int           `gorm:"column:user_id;type:int(11);comment:用户id"`
 	TemplateUserID   int           `gorm:"column:template_user_id;type:int(11);comment:临时用户id"`
 	PaymentType      PaymentType   `gorm:"column:payment_type;type:enum('pay','refund');comment:订单类型"`
-	PaymentStatus    PaymentStatus `gorm:"column:payment_status;type:enum('pending','processing','done','failed');comment:支付状态"`
+	PaymentStatus    PaymentStatus `gorm:"column:payment_status;type:enum('pending','closed','done','failed');comment:支付状态"`
 	DealTime         time.Time     `gorm:"column:deal_time;type:datetime;comment:完成时间"`
 	CreatedTime      time.Time     `gorm:"column:created_time;type:datetime;comment:创建时间"`
 	UpdatedTime      time.Time     `gorm:"column:updated_time;type:datetime;comment:更新时间"`
@@ -66,13 +66,17 @@ func GetTradeOrderByNo(tradeOrderNo string, paymentType PaymentType) (order Trad
 	return
 }
 
-func DealRefundOrder(order TradeOrder, isSuccess bool) (err error) {
+func DealRefundOrder(order TradeOrder, status string, isSuccess bool) (err error) {
 	var paymentStatus PaymentStatus
 	var refundStatus RefundStatus
 	if isSuccess {
 		paymentStatus = PaymentStatusDone
 		refundStatus = RefundStatusSuccess
 	} else {
+		if status == "close" {
+			paymentStatus = PaymentStatusClosed
+			refundStatus = RefundStatusClosed
+		}
 		paymentStatus = PaymentStatusFailed
 		refundStatus = RefundStatusFailed
 	}
@@ -99,12 +103,17 @@ func DealRefundOrder(order TradeOrder, isSuccess bool) (err error) {
 	return
 }
 
-func DealPaymentOrder(order TradeOrder, isSuccess bool, validDuration string) (err error) {
+func DealPaymentOrder(order TradeOrder, paymentChannel, PayStatus string, isSuccess bool, validDuration string) (err error) {
 	var paymentStatus PaymentStatus
 	if isSuccess {
 		paymentStatus = PaymentStatusDone
 	} else {
-		paymentStatus = PaymentStatusFailed
+		if PayStatus == "close" {
+			paymentStatus = PaymentStatusClosed
+		}
+		if PayStatus == "failed" {
+			paymentStatus = PaymentStatusFailed
+		}
 	}
 	db := models.Main()
 	tx := db.Begin()
@@ -116,6 +125,7 @@ func DealPaymentOrder(order TradeOrder, isSuccess bool, validDuration string) (e
 		tx.Commit()
 	}()
 	err = tx.Model(&TradeOrder{}).Where("id=?", order.ID).Updates(map[string]interface{}{
+		"payment_way":    paymentChannel,
 		"payment_status": paymentStatus,
 		"deal_time":      time.Now(),
 	}).Error

+ 9 - 0
routers/commentsRouter.go

@@ -691,6 +691,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/web_hook:HTFuturesTradeController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/web_hook:HTFuturesTradeController"],
+        beego.ControllerComments{
+            Method: "InformWechatPaymentResult",
+            Router: `/v1/payment/sendWechatSDKParams`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers:WebSocketController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers:WebSocketController"],
         beego.ControllerComments{
             Method: "Connect",

+ 45 - 0
service/payment/payment_service.go

@@ -4,14 +4,26 @@ import (
 	"eta/eta_mini_ht_api/common/component/cache"
 	logger "eta/eta_mini_ht_api/common/component/log"
 	"eta/eta_mini_ht_api/common/exception"
+	"eta/eta_mini_ht_api/common/utils/payment"
 	"eta/eta_mini_ht_api/common/utils/redis"
 	orderService "eta/eta_mini_ht_api/domian/order"
+	"fmt"
+	"strings"
 )
 
 var (
 	redisUtils = cache.GetInstance()
 )
 
+type WechatSDKParams struct {
+	OrderNo   string
+	PrepayId  string
+	Timestamp string
+	NonceStr  string
+	PaySign   string
+	SignType  string
+}
+
 func CreatePaymentOrder(userId, templateUserId int, OrderNo string, tradeNo string) (err error) {
 	//先获取当前商品订单的支付记录
 	tradeOrderList, err := orderService.GetUnFailedTradeFlowByProductOrder(OrderNo)
@@ -39,3 +51,36 @@ func CreatePaymentOrder(userId, templateUserId int, OrderNo string, tradeNo stri
 func GenerateProductOrderNo() string {
 	return orderService.GenerateTradeOrderNo()
 }
+
+func DealWechatSDKParams(sdk WechatSDKParams) (err error) {
+	keys, err := redisUtils.Keys(redis.GenerateWechatOrderToken("*"))
+	if err != nil {
+		err = fmt.Errorf("系统异常,获取支付订单失败")
+	}
+	var hitOrder bool
+	var paymentParam payment.PaymentParam
+	var redisErr error
+	for _, key := range keys {
+		paymentParam, redisErr = payment.GetPaymentParam(strings.TrimPrefix(key, "payment:token:"))
+		if redisErr != nil {
+			continue
+		}
+		if paymentParam.PayOrderNo == sdk.OrderNo {
+			paymentParam.PrepayId = sdk.PrepayId
+			paymentParam.Timestamp = sdk.Timestamp
+			paymentParam.NonceStr = sdk.NonceStr
+			paymentParam.PaySign = sdk.PaySign
+			paymentParam.SignType = sdk.SignType
+			redisErr = payment.Ready(key, paymentParam)
+			if redisErr == nil {
+				hitOrder = true
+			}
+			break
+		}
+	}
+	if !hitOrder {
+		logger.Error("处理微信支付SDK失败,订单信息不存在/信息处理异常[%v]", redisErr)
+		err = fmt.Errorf("处理微信支付SDK失败,订单信息不存在/信息处理异常")
+	}
+	return
+}