payment_service.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package payment
  2. import (
  3. "eta/eta_mini_ht_api/common/component/cache"
  4. logger "eta/eta_mini_ht_api/common/component/log"
  5. "eta/eta_mini_ht_api/common/exception"
  6. "eta/eta_mini_ht_api/common/utils/redis"
  7. orderService "eta/eta_mini_ht_api/domian/order"
  8. )
  9. var (
  10. redisUtils = cache.GetInstance()
  11. )
  12. func CreatePaymentOrder(userId, templateUserId int, OrderNo string, tradeNo string) (err error) {
  13. //先获取当前商品订单的支付记录
  14. tradeOrderList, err := orderService.GetUnFailedTradeFlowByProductOrder(OrderNo)
  15. if len(tradeOrderList) > 0 {
  16. for _, tradeOrder := range tradeOrderList {
  17. if tradeOrder.PaymentStatus == "done" {
  18. logger.Error("当前商品订单已支付,无法再次发起支付")
  19. return exception.New(exception.PaymentDoneError)
  20. }
  21. if tradeOrder.PaymentStatus == "pending" {
  22. logger.Error("当前商品订单正在支付,无法再次发起支付")
  23. return exception.New(exception.PaymentProcessingError)
  24. }
  25. }
  26. }
  27. merchantId := redisUtils.GetString(redis.GenerateMerchantKey())
  28. if merchantId == "" {
  29. logger.Error("商户配置信息不存在,无法创建支付订单")
  30. err = exception.New(exception.MerchantInfoNotConfig)
  31. return
  32. }
  33. return orderService.CreateTradeOrder(userId, templateUserId, OrderNo, tradeNo, merchantId)
  34. }
  35. func GenerateProductOrderNo() string {
  36. return orderService.GenerateTradeOrderNo()
  37. }