feat: add system configration switch option for order pay service, support sandbox env for alipay

This commit is contained in:
RockYang
2023-11-09 18:28:56 +08:00
parent 7ca4dfe09b
commit 9dc9a6923e
11 changed files with 89 additions and 25 deletions

View File

@@ -36,7 +36,7 @@ func NewDefaultConfig() *types.AppConfig {
MjConfig: types.MidJourneyConfig{Enabled: false},
SdConfig: types.StableDiffusionConfig{Enabled: false, Txt2ImgJsonPath: "res/text2img.json"},
WeChatBot: false,
AlipayConfig: types.AlipayConfig{Enabled: false},
AlipayConfig: types.AlipayConfig{Enabled: false, SandBox: false},
}
}

View File

@@ -62,6 +62,7 @@ type AliYunSmsConfig struct {
type AlipayConfig struct {
Enabled bool // 是否启用该服务
SandBox bool // 是否沙盒环境
Company string // 公司名称
UserId string // 支付宝用户 ID
AppId string // 支付宝 AppID
@@ -69,7 +70,6 @@ type AlipayConfig struct {
PublicKey string // 用户公钥文件路径
AlipayPublicKey string // 支付宝公钥文件路径
RootCert string // Root 秘钥路径
ReturnURL string // 支付成功返回 URL
NotifyURL string // 异步通知回调
}
@@ -144,5 +144,6 @@ type SystemConfig struct {
RewardImg string `json:"reward_img"` // 众筹收款二维码地址
EnabledFunction bool `json:"enabled_function"` // 启用 API 函数功能
EnabledReward bool `json:"enabled_reward"` // 启用众筹功能
EnabledAlipay bool `json:"enabled_alipay"` // 是否启用支付宝支付通道
DefaultModels []string `json:"default_models"` // 默认开通的 AI 模型
}

View File

@@ -62,7 +62,7 @@ func (h *PaymentHandler) Alipay(c *gin.Context) {
h.db.Model(&order).UpdateColumn("status", types.OrderScanned)
// 生成支付链接
notifyURL := h.App.Config.AlipayConfig.NotifyURL
returnURL := h.App.Config.AlipayConfig.ReturnURL
returnURL := "" // 关闭同步回跳
amount := fmt.Sprintf("%.2f", order.Amount)
uri, err := h.alipayService.PayUrlMobile(order.OrderNo, notifyURL, returnURL, amount, order.Subject)
@@ -113,6 +113,11 @@ func (h *PaymentHandler) OrderQuery(c *gin.Context) {
// AlipayQrcode 生成支付宝支付 URL 二维码
func (h *PaymentHandler) AlipayQrcode(c *gin.Context) {
if !h.App.SysConfig.EnabledAlipay {
resp.ERROR(c, "当前支付通道已经关闭,请联系管理员开通!")
return
}
var data struct {
ProductId uint `json:"product_id"`
UserId int `json:"user_id"`

View File

@@ -232,6 +232,7 @@ type userProfile struct {
TotalTokens int64 `json:"total_tokens"`
Tokens int64 `json:"tokens"`
ExpiredTime int64 `json:"expired_time"`
Vip bool `json:"vip"`
}
func (h *UserHandler) Profile(c *gin.Context) {

View File

@@ -28,7 +28,7 @@ func NewAlipayService(appConfig *types.AppConfig) (*AlipayService, error) {
return nil, fmt.Errorf("error with read App Private key: %v", err)
}
xClient, err := alipay.New(config.AppId, priKey, false)
xClient, err := alipay.New(config.AppId, priKey, !config.SandBox)
if err != nil {
return nil, fmt.Errorf("error with initialize alipay service: %v", err)
}