package payment 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/redis" orderService "eta/eta_mini_ht_api/domian/order" ) var ( redisUtils = cache.GetInstance() ) func CreatePaymentOrder(userId, templateUserId int, OrderNo string, tradeNo string) (err error) { //先获取当前商品订单的支付记录 tradeOrderList, err := orderService.GetUnFailedTradeFlowByProductOrder(OrderNo) if len(tradeOrderList) > 0 { for _, tradeOrder := range tradeOrderList { if tradeOrder.PaymentStatus == "done" { logger.Error("当前商品订单已支付,无法再次发起支付") return exception.New(exception.PaymentDoneError) } if tradeOrder.PaymentStatus == "pending" { logger.Error("当前商品订单正在支付,无法再次发起支付") return exception.New(exception.PaymentProcessingError) } } } merchantId := redisUtils.GetString(redis.GenerateMerchantKey()) if merchantId == "" { logger.Error("商户配置信息不存在,无法创建支付订单") err = exception.New(exception.MerchantInfoNotConfig) return } return orderService.CreateTradeOrder(userId, templateUserId, OrderNo, tradeNo, merchantId) } func GenerateProductOrderNo() string { return orderService.GenerateTradeOrderNo() }