hi-server/pkg/payment/platform.go
shanshanzhong d95911d6bd
Some checks failed
Build docker and publish / build (20.15.1) (push) Has been cancelled
feat(支付): 新增Apple IAP支付支持
实现Apple应用内购支付功能,包括:
1. 新增AppleIAP和ApplePay支付平台枚举
2. 添加IAP验证接口/v1/public/iap/verify处理初购验证
3. 实现Apple服务器通知处理逻辑/v1/iap/notifications
4. 新增JWS验签和JWKS公钥缓存功能
5. 复用现有订单系统处理IAP支付订单

相关文档已更新,包含接入方案和实现细节
2025-12-09 00:53:25 -08:00

108 lines
2.4 KiB
Go

package payment
import "github.com/perfect-panel/server/internal/types"
type Platform int
const (
Stripe Platform = iota
AlipayF2F
EPay
Balance
CryptoSaaS
AppleIAP
ApplePay
UNSUPPORTED Platform = -1
)
var platformNames = map[string]Platform{
"CryptoSaaS": CryptoSaaS,
"Stripe": Stripe,
"AlipayF2F": AlipayF2F,
"EPay": EPay,
"balance": Balance,
"AppleIAP": AppleIAP,
"ApplePay": ApplePay,
"unsupported": UNSUPPORTED,
}
func (p Platform) String() string {
for k, v := range platformNames {
if v == p {
return k
}
}
return "unsupported"
}
func ParsePlatform(s string) Platform {
if p, ok := platformNames[s]; ok {
return p
}
return UNSUPPORTED
}
func GetSupportedPlatforms() []types.PlatformInfo {
return []types.PlatformInfo{
{
Platform: Stripe.String(),
PlatformUrl: "https://stripe.com",
PlatformFieldDescription: map[string]string{
"public_key": "Publishable key",
"secret_key": "Secret key",
"webhook_secret": "Webhook secret",
"payment": "Payment Method, only supported card/alipay/wechat_pay",
},
},
{
Platform: AlipayF2F.String(),
PlatformUrl: "https://alipay.com",
PlatformFieldDescription: map[string]string{
"app_id": "App ID",
"private_key": "Private Key",
"public_key": "Public Key",
"invoice_name": "Invoice Name",
"sandbox": "Sandbox Mode",
},
},
{
Platform: EPay.String(),
PlatformUrl: "",
PlatformFieldDescription: map[string]string{
"pid": "PID",
"url": "URL",
"key": "Key",
"type": "Type",
},
},
{
Platform: CryptoSaaS.String(),
PlatformUrl: "https://t.me/CryptoSaaSBot",
PlatformFieldDescription: map[string]string{
"endpoint": "API Endpoint",
"account_id": "Account ID",
"secret_key": "Secret Key",
},
},
{
Platform: AppleIAP.String(),
PlatformUrl: "https://developer.apple.com/help/app-store-connect/",
PlatformFieldDescription: map[string]string{
"issuer_id": "App Store Connect Issuer ID",
"key_id": "App Store Connect Key ID",
"private_key": "Private Key (ES256)",
"environment": "Environment: Sandbox/Production",
},
},
{
Platform: ApplePay.String(),
PlatformUrl: "https://stripe.com",
PlatformFieldDescription: map[string]string{
"public_key": "Publishable key",
"secret_key": "Secret key",
"webhook_secret": "Webhook secret",
},
},
}
}