Initial commit (code only without large binaries)

This commit is contained in:
robin
2026-02-15 18:58:44 +08:00
commit 35df75498f
9442 changed files with 1495866 additions and 0 deletions

View File

@@ -0,0 +1,132 @@
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package userconfigs
import (
"encoding/json"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
)
type PayMethod = string
const (
PayMethodAlipay PayMethod = "alipay"
)
type PayMethodParams interface {
Init() error
}
type AlipayPayMethodParams struct {
IsSandbox bool `json:"isSandbox"` // 是否沙箱应用
AppId string `json:"appId"` // APPID
PrivateKey string `json:"privateKey"` // 私钥
AppPublicCert string `json:"appPublicCert"` // 应用公钥证书
AlipayPublicCert string `json:"alipayPublicCert"` // 支付宝公钥证书
AlipayRootCert string `json:"alipayRootCert"` // 支付宝根证书
ProductCode string `json:"productCode"` // 产品代号
}
func (this *AlipayPayMethodParams) Init() error {
return nil
}
type PayMethodDefinition struct {
Name string `json:"name"`
Code string `json:"code"`
Description string `json:"description"`
QRCodeTitle string `json:"qrcodeTitle"` // 二维码标题
NotifyURL string `json:"notifyURL"`
}
func FindAllPresetPayMethods() []*PayMethodDefinition {
return []*PayMethodDefinition{
{
Name: "支付宝",
Code: PayMethodAlipay,
Description: "支付宝平台提供的支付能力。",
QRCodeTitle: "请使用支付宝APP扫描下方二维码完成支付",
NotifyURL: "${baseAddr}/api/pay/alipay/notify",
},
}
}
func FindPresetPayMethodWithCode(code PayMethod) *PayMethodDefinition {
for _, payMethod := range FindAllPresetPayMethods() {
if payMethod.Code == code {
return payMethod
}
}
return nil
}
func DecodePayMethodParams(payMethodCode PayMethod, paramsJSON []byte) (params PayMethodParams, err error) {
switch payMethodCode {
case PayMethodAlipay:
params = &AlipayPayMethodParams{}
}
if params == nil {
return
}
err = json.Unmarshal(paramsJSON, params)
if err != nil {
return nil, fmt.Errorf("decode params failed: %w", err)
}
err = params.Init()
return
}
type PayClientType = string
const (
PayClientTypeAll PayClientType = "all"
PayClientTypeLaptop PayClientType = "laptop"
PayClientTypeMobile PayClientType = "mobile"
)
func FindAllPayClientTypes() []*shared.Definition {
return []*shared.Definition{
{
Name: "所有终端",
Code: PayClientTypeAll,
Description: "可以在电脑浏览器和手机上完成支付。",
},
{
Name: "PC端",
Code: PayClientTypeLaptop,
Description: "需要在电脑浏览器上完成支付。",
},
{
Name: "手机端",
Code: PayClientTypeMobile,
Description: "需要在手机上完成支付。",
},
}
}
func FindPayClientType(clientType PayClientType) *shared.Definition {
var allTypes = FindAllPayClientTypes()
if len(allTypes) == 0 {
return nil
}
for _, def := range allTypes {
if def.Code == clientType {
return def
}
}
return allTypes[0]
}
func FindPayClientTypeName(clientType PayClientType) string {
for _, def := range FindAllPayClientTypes() {
if def.Code == clientType {
return def.Name
}
}
return "所有终端"
}