修复商福通接口签名编码逻辑;统一充值和创建套餐接口为聚合接口
This commit is contained in:
@@ -3,7 +3,9 @@ package services
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/shopspring/decimal"
|
||||
wecahtpay_core "github.com/wechatpay-apiv3/wechatpay-go/core"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
@@ -151,7 +153,7 @@ func (s *tradeService) CreateTrade(q *q.Query, uid int32, now time.Time, data *T
|
||||
Body: subject,
|
||||
Amount: amountReal.Mul(decimal.NewFromInt(100)).Round(0).IntPart(),
|
||||
Currency: "cny",
|
||||
ClientIp: "",
|
||||
ClientIp: "123.52.74.23",
|
||||
OrderTimeout: u.P(expire.Format("2006-01-02 15:04:05")),
|
||||
})
|
||||
if err != nil {
|
||||
@@ -174,7 +176,7 @@ func (s *tradeService) CreateTrade(q *q.Query, uid int32, now time.Time, data *T
|
||||
Amount: amountReal.Mul(decimal.NewFromInt(100)).Round(0).IntPart(),
|
||||
PayType: payType,
|
||||
Currency: "cny",
|
||||
ClientIp: "",
|
||||
ClientIp: "123.52.74.23",
|
||||
OrderTimeout: u.P(expire.Format("2006-01-02 15:04:05")),
|
||||
})
|
||||
if err != nil {
|
||||
@@ -273,7 +275,9 @@ func (s *tradeService) OnTradeCreated(q *q.Query, data *OnTradeCreateData) (*m.T
|
||||
trade.Acquirer = int32(acquirer)
|
||||
trade.PaidAt = u.P(orm.LocalDateTime(paidAt))
|
||||
trade.PayURL = u.P("")
|
||||
_, err = q.Trade.Updates(trade)
|
||||
_, err = q.Trade.
|
||||
Where(q.Trade.ID.Eq(trade.ID)).
|
||||
Updates(trade)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -397,10 +401,22 @@ func (s *tradeService) VerifyTrade(data *TradeVerifyData) (*TradeSuccessResult,
|
||||
Mchid: &env.WechatPayMchId,
|
||||
})
|
||||
if err != nil {
|
||||
var apiErr *wecahtpay_core.APIError
|
||||
if errors.As(err, &apiErr) {
|
||||
if apiErr.Code == "ORDER_NOT_EXIST" {
|
||||
return nil, ErrTransactionNotPaid
|
||||
}
|
||||
return nil, core.NewServErr(
|
||||
fmt.Sprintf("微信上游接口异常:code=%v,message=%v", apiErr.Code, apiErr.Message),
|
||||
apiErr,
|
||||
)
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
if *resp.TradeState != "SUCCESS" {
|
||||
return nil, ErrTransactionNotPaid
|
||||
return nil, core.NewServErr(
|
||||
fmt.Sprintf("预期之外的支付未完成:state=%v, stateDesc=%v", resp.TradeState, resp.TradeStateDesc),
|
||||
)
|
||||
}
|
||||
|
||||
transId = *resp.TransactionId
|
||||
|
||||
Reference in New Issue
Block a user