完善商福通支付接口,修复证书加载问题;数据库扩展支付平台字段并更新支付信息保存逻辑;日志中间件异步记录日志

This commit is contained in:
2025-06-17 10:53:05 +08:00
parent 692106ae5c
commit a4e5fc2af5
19 changed files with 444 additions and 421 deletions

View File

@@ -87,7 +87,7 @@ func (s *resourceService) CreateResource(uid int32, now time.Time, ser *CreateRe
return nil
}
func (s *resourceService) PrepareResource(uid int32, now time.Time, method trade2.Method, ser *CreateResourceSerializer) (*TradeCreateResult, error) {
func (s *resourceService) PrepareResource(uid int32, now time.Time, ser *CreateResourceSerializer) (*TradeCreateResult, error) {
data, err := ser.ToData()
if err != nil {
@@ -97,18 +97,22 @@ func (s *resourceService) PrepareResource(uid int32, now time.Time, method trade
name := data.GetName()
amount := data.GetPrice()
method := ser.PaymentMethod
platform := ser.PaymentPlatform
// 保存到数据库
var result *TradeCreateResult
err = q.Q.Transaction(func(q *q.Query) error {
var err error
// 生成交易订单
result, err = Trade.SendCreateTradeByQrcode(q, uid, now, &TradeCreateData{
result, err = Trade.CreateTrade(q, uid, now, &TradeCreateData{
Subject: "购买套餐 - " + name,
Amount: amount,
ExpireAt: time.Now().Add(30 * time.Minute),
Type: trade2.TypeRecharge,
Method: method,
Platform: platform,
})
if err != nil {
return err
@@ -124,7 +128,6 @@ func (s *resourceService) PrepareResource(uid int32, now time.Time, method trade
Uid: uid,
TradeId: result.Trade.ID,
BillId: result.Bill.ID,
Method: method,
CreateResourceSerializer: resourceSerializer,
}, 30*time.Minute).Err()
if err != nil {
@@ -158,9 +161,9 @@ func (s *resourceService) CompleteResource(tradeNo string, now time.Time, opResu
rs = opResult[0]
} else {
var err error
rs, err = Trade.VerifyCreateTrade(&TradeVerifyData{
rs, err = Trade.VerifyTrade(&TradeVerifyData{
TradeNo: tradeNo,
Method: cache.Method,
Method: cache.PaymentMethod,
})
if err != nil {
return err
@@ -229,7 +232,7 @@ func (s *resourceService) CancelResource(tradeNo string, now time.Time, opRevoke
// 取消交易
if len(opRevoked) <= 0 {
err = Trade.CancelTrade(tradeNo, cache.Method)
err = Trade.CancelTrade(tradeNo, cache.PaymentMethod)
if err != nil {
return err
}
@@ -403,9 +406,11 @@ func (data *CreateLongResourceData) GetPrice() decimal.Decimal {
}
type CreateResourceSerializer struct {
Type resource2.Type `json:"type" validate:"required"`
Short *CreateShortResourceData `json:"short,omitempty"`
Long *CreateLongResourceData `json:"long,omitempty"`
Type resource2.Type `json:"type" validate:"required"`
Short *CreateShortResourceData `json:"short,omitempty"`
Long *CreateLongResourceData `json:"long,omitempty"`
PaymentMethod trade2.Method `json:"payment_method" validate:"required"`
PaymentPlatform trade2.Platform `json:"payment_platform" validate:"required"`
}
func (s *CreateResourceSerializer) ToData() (CreateResourceData, error) {
@@ -433,10 +438,9 @@ func (s *CreateResourceSerializer) ByData(data CreateResourceData) error {
}
type CreateResourceCache struct {
Uid int32 `json:"uid"`
TradeId int32 `json:"trade_id"`
BillId int32 `json:"bill_id"`
Method trade2.Method `json:"method"`
Uid int32 `json:"uid"`
TradeId int32 `json:"trade_id"`
BillId int32 `json:"bill_id"`
*CreateResourceSerializer
}