Ver código fonte

修复支付订单bug

kobe6258 4 meses atrás
pai
commit
5474d84228

+ 12 - 5
domian/order/trade_order.go

@@ -10,9 +10,13 @@ import (
 )
 
 const (
-	RMB = "CNY"
+	RMB                  = "CNY"
+	AliPayWay PaymentWay = "alipay"
+	WechatPay PaymentWay = "wechat"
 )
 
+type PaymentWay string
+
 type TradeOrderDTO struct {
 	ID             int       `gorm:"column:id;primaryKey"`
 	TransactionID  string    `gorm:"column:transaction_id;type:varchar(255);comment:第三方平台ID"`
@@ -58,6 +62,7 @@ func CreateTradeOrder(userId, templateUserId int, productOrderNo, tradeOrderNo,
 		ProductOrderID: productOrderNo,
 		TransactionID:  tradeOrderNo,
 		Amount:         productOrder.TotalAmount,
+		PaymentWay:     order.WechatPayWay,
 		Currency:       RMB,
 		MerchantID:     merchantNo,
 		UserID:         userId,
@@ -70,9 +75,11 @@ func CreateTradeOrder(userId, templateUserId int, productOrderNo, tradeOrderNo,
 		return
 	}
 	err = tx.Model(&order.ProductOrder{}).Where("id = ?", productOrder.ID).Updates(map[string]interface{}{
-		"trade_id":     tradeOrder.ID,
-		"trade_no":     tradeOrder.TransactionID,
-		"payment_time": time.Now(),
+		"trade_id":       tradeOrder.ID,
+		"trade_no":       tradeOrder.TransactionID,
+		"payment_time":   time.Now(),
+		"payment_amount": tradeOrder.Amount,
+		"payment_way":    tradeOrder.PaymentWay,
 	}).Error
 	return
 }
@@ -82,7 +89,7 @@ func convertToDTO(tradeOrder order.TradeOrder) TradeOrderDTO {
 		TransactionID:  tradeOrder.TransactionID,
 		ProductOrderID: tradeOrder.ProductOrderID,
 		PaymentAccount: tradeOrder.PaymentAccount,
-		PaymentWay:     tradeOrder.PaymentWay,
+		PaymentWay:     string(tradeOrder.PaymentWay),
 		Amount:         tradeOrder.Amount,
 		Currency:       tradeOrder.Currency,
 		MerchantID:     tradeOrder.MerchantID,

+ 3 - 4
models/order/product_order.go

@@ -13,7 +13,6 @@ import (
 
 type OrderStatus string
 type RefundStatus string
-type PaymentWay string
 
 const (
 	//订单状态
@@ -28,8 +27,6 @@ const (
 	RefundStatusFailed     RefundStatus = "failed"
 	RefundStatusProcessing RefundStatus = "processing"
 	RefundStatusCanceled   RefundStatus = "canceled"
-	WechatPayWay           PaymentWay   = "wechat"
-	AliPayWay              PaymentWay   = "alipay"
 
 	detailColumn = "id,order_id,user_id,template_user_id,product_id,status,created_time,updated_time,total_amount,expired_time"
 )
@@ -48,11 +45,13 @@ type ProductOrder struct {
 	TotalAmount      string                          `gorm:"column:total_amount;size:255;default:null;comment:'金额'" json:"total_amount"`
 	TradeID          int                             `gorm:"column:trade_id;default:null;comment:'支付订单'" json:"trade_id"`
 	TradeNO          string                          `gorm:"column:trade_no;default:null;comment:'支付订单'" json:"trade_no"`
-	RefundAmount     string                          `gorm:"column:refund_amount;size:255;default:null;comment:'退款金额'" json:"refund_amount"`
+	PaymentAmount    string                          `gorm:"column:payment_amount;;comment:'支付金额'"`
 	PaymentWay       PaymentWay                      `gorm:"column:payment_way;enum('wechat','alipay');default:null;comment:'支付渠道'"`
 	PaymentTime      time.Time                       `gorm:"column:payment_time;default:null;comment:'支付时间'" json:"payment_time"`
 	ExpiredTime      time.Time                       `gorm:"column:expired_time;default:null;comment:'超时时间'" json:"expired_time"`
 	Status           OrderStatus                     `gorm:"column:status;type:enum('pending','processing','paid','closed','refund');default:'pending';comment:'订单状态'" json:"status"`
+	RefundTradeId    string                          `column:"refund_trade_id;null;comment:'退款金额'" json:"refund_trade_id"`
+	RefundAmount     string                          `gorm:"column:refund_amount;size:255;default:null;comment:'退款金额'" json:"refund_amount"`
 	RefundStatus     RefundStatus                    `gorm:"column:refund_status;type:enum('pending','processing','failed','success');default:null;comment:'退款状态'" json:"refund_status"`
 	RefundFinishTime time.Time                       `gorm:"column:refund_finish_time;default:null;comment:'退款完成时间'" json:"refund_finish_time"`
 	Remark           string                          `gorm:"column:remark;size:255;default:null;comment:'备注'" json:"remark"`

+ 4 - 1
models/order/trade_order.go

@@ -8,6 +8,7 @@ import (
 
 type PaymentStatus string
 type PaymentType string
+type PaymentWay string
 
 const (
 	PaymentStatusPending    PaymentStatus = "pending"
@@ -17,6 +18,8 @@ const (
 
 	PaymentTypePay    PaymentType = "pay"
 	PaymentTypeRefund PaymentType = "refund"
+	WechatPayWay      PaymentWay  = "wechat"
+	AliPayWay         PaymentWay  = "alipay"
 )
 
 type TradeOrder struct {
@@ -25,7 +28,7 @@ type TradeOrder struct {
 	OrgTransactionID string        `gorm:"column:org_transaction_id;type:varchar(255);comment:第三方平台ID"`
 	ProductOrderID   string        `gorm:"column:product_order_id;type:varchar(255);comment:商品订单号"`
 	PaymentAccount   string        `gorm:"column:payment_account;type:varchar(255);comment:支付账号"`
-	PaymentWay       string        `gorm:"column:payment_way;type:enum('wechat');comment:支付渠道"`
+	PaymentWay       PaymentWay    `gorm:"column:payment_way;type:enum('wechat');comment:支付渠道"`
 	Amount           string        `gorm:"column:amount;type:varchar(20);comment:支付金额"`
 	Currency         string        `gorm:"column:currency;type:varchar(255);comment:货币"`
 	MerchantID       string        `gorm:"column:merchant_id;type:varchar(255);comment:商户id"`