feat(payment): add complete payment system with multi-provider support
Add a full payment and subscription system supporting EasyPay (Alipay/WeChat), Stripe, and direct Alipay/WeChat Pay providers with multi-instance load balancing.
This commit is contained in:
@@ -4347,6 +4347,7 @@ export default {
|
||||
email: '邮件设置',
|
||||
backup: '数据备份',
|
||||
data: 'Sora 存储',
|
||||
payment: '支付设置',
|
||||
},
|
||||
emailTabDisabledTitle: '邮箱验证未启用',
|
||||
emailTabDisabledHint: '请在「安全与认证」选项卡中启用邮箱验证后,再配置 SMTP 设置。',
|
||||
@@ -4589,6 +4590,100 @@ export default {
|
||||
moveUp: '上移',
|
||||
moveDown: '下移',
|
||||
},
|
||||
payment: {
|
||||
title: '支付设置',
|
||||
description: '配置支付系统选项',
|
||||
enabled: '启用支付',
|
||||
enabledHint: '启用或禁用支付系统',
|
||||
enabledPaymentTypes: '启用的服务商',
|
||||
enabledPaymentTypesHint: '禁用服务商将同时禁用对应的实例',
|
||||
minAmount: '最低金额',
|
||||
maxAmount: '最高金额',
|
||||
dailyLimit: '每日限额',
|
||||
orderTimeout: '订单超时时间',
|
||||
orderTimeoutHint: '单位:分钟,至少 1 分钟',
|
||||
maxPendingOrders: '最大待支付订单数',
|
||||
cancelRateLimit: '限制取消频率',
|
||||
cancelRateLimitHint: '启用后,用户在时间窗口内取消订单次数超限将无法创建新订单',
|
||||
cancelRateLimitEvery: '每',
|
||||
cancelRateLimitAllowMax: '最多',
|
||||
cancelRateLimitTimes: '次',
|
||||
cancelRateLimitWindow: '时间窗口',
|
||||
cancelRateLimitUnit: '周期',
|
||||
cancelRateLimitMax: '最大取消次数',
|
||||
cancelRateLimitUnitMinute: '分钟',
|
||||
cancelRateLimitUnitHour: '小时',
|
||||
cancelRateLimitUnitDay: '天',
|
||||
cancelRateLimitWindowMode: '窗口模式',
|
||||
cancelRateLimitWindowModeRolling: '滚动',
|
||||
cancelRateLimitWindowModeFixed: '固定',
|
||||
helpText: '帮助文本',
|
||||
helpImageUrl: '帮助图片链接',
|
||||
manageProviders: '管理服务商',
|
||||
balancePaymentDisabled: '禁用余额充值',
|
||||
noLimit: '留空表示不限制',
|
||||
helpImage: '帮助图片',
|
||||
helpImagePlaceholder: '上传或输入图片链接',
|
||||
helpTextPlaceholder: '输入帮助说明文本...',
|
||||
providerEasypay: '易支付',
|
||||
providerAlipay: '支付宝官方',
|
||||
providerWxpay: '微信官方',
|
||||
providerStripe: 'Stripe',
|
||||
typeDisabled: '类型已禁用',
|
||||
enableTypesFirst: '请先在上方启用至少一种服务商',
|
||||
easypayRedirect: '跳转',
|
||||
paymentMode: '支付模式',
|
||||
modeRedirect: '跳转',
|
||||
modeQRCode: '二维码',
|
||||
modePopup: '弹窗',
|
||||
validationNameRequired: '服务商名称不能为空',
|
||||
validationTypesRequired: '请至少选择一种支持的支付方式',
|
||||
validationFieldRequired: '{field} 不能为空',
|
||||
field_apiBase: 'API 基础地址',
|
||||
field_notifyUrl: '异步通知地址',
|
||||
field_returnUrl: '同步跳转地址',
|
||||
callbackBaseUrl: '回调基础地址',
|
||||
field_privateKey: '私钥',
|
||||
field_publicKey: '公钥',
|
||||
field_mchId: '商户号',
|
||||
field_apiV3Key: 'API v3 密钥',
|
||||
field_publicKeyId: '公钥 ID',
|
||||
field_certSerial: '证书序列号',
|
||||
field_secretKey: '密钥',
|
||||
field_publishableKey: '公开密钥',
|
||||
field_webhookSecret: 'Webhook 密钥',
|
||||
field_cid: '支付渠道 ID',
|
||||
field_cidAlipay: '支付宝渠道 ID',
|
||||
field_cidWxpay: '微信渠道 ID',
|
||||
stripeWebhookHint: '请在 Stripe Dashboard 中将以下地址配置为 Webhook 端点:',
|
||||
limitsTitle: '限额配置',
|
||||
limitSingleMin: '单笔最低',
|
||||
limitSingleMax: '单笔最高',
|
||||
limitDaily: '每日限额',
|
||||
limitsHint: '全部留空使用全局配置,部分填写时留空项表示不限制',
|
||||
limitsUseGlobal: '使用全局配置',
|
||||
limitsNoLimit: '不限制',
|
||||
productNamePrefix: '商品名前缀',
|
||||
productNameSuffix: '商品名后缀',
|
||||
preview: '预览',
|
||||
loadBalanceStrategy: '负载均衡策略',
|
||||
strategyRoundRobin: '轮询',
|
||||
strategyLeastAmount: '最少金额',
|
||||
providerManagement: '服务商管理',
|
||||
providerManagementDesc: '管理支付服务商实例',
|
||||
createProvider: '添加服务商',
|
||||
editProvider: '编辑服务商',
|
||||
deleteProvider: '删除服务商',
|
||||
deleteProviderConfirm: '确定要删除此服务商吗?',
|
||||
providerName: '服务商名称',
|
||||
providerKey: '服务商类型',
|
||||
selectProviderKey: '选择服务商类型',
|
||||
providerConfig: '凭证配置',
|
||||
noProviders: '暂无服务商实例',
|
||||
supportedTypes: '支持的支付方式',
|
||||
supportedTypesHint: '逗号分隔,如 alipay,wxpay',
|
||||
refundEnabled: '允许退款',
|
||||
},
|
||||
smtp: {
|
||||
title: 'SMTP 设置',
|
||||
description: '配置用于发送验证码的邮件服务',
|
||||
@@ -5262,4 +5357,260 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
payment: {
|
||||
title: '充值/订阅',
|
||||
amountLabel: '充值金额',
|
||||
quickAmounts: '快捷金额',
|
||||
customAmount: '自定义金额',
|
||||
enterAmount: '输入金额',
|
||||
paymentMethod: '支付方式',
|
||||
fee: '手续费',
|
||||
actualPay: '实付金额',
|
||||
createOrder: '确认支付',
|
||||
methods: {
|
||||
easypay: '易支付',
|
||||
alipay: '支付宝',
|
||||
wxpay: '微信支付',
|
||||
stripe: 'Stripe',
|
||||
card: '银行卡',
|
||||
link: 'Link',
|
||||
alipay_direct: '支付宝(直连)',
|
||||
wxpay_direct: '微信支付(直连)',
|
||||
},
|
||||
status: {
|
||||
pending: '待支付',
|
||||
paid: '已支付',
|
||||
recharging: '充值中',
|
||||
completed: '已完成',
|
||||
expired: '已过期',
|
||||
cancelled: '已取消',
|
||||
failed: '失败',
|
||||
refund_requested: '退款申请中',
|
||||
refunding: '退款中',
|
||||
refunded: '已退款',
|
||||
partially_refunded: '部分退款',
|
||||
refund_failed: '退款失败',
|
||||
},
|
||||
qr: {
|
||||
scanToPay: '请扫码支付',
|
||||
scanAlipay: '支付宝扫码支付',
|
||||
scanWxpay: '微信扫码支付',
|
||||
scanAlipayHint: '请使用手机打开支付宝,扫描二维码完成支付',
|
||||
scanWxpayHint: '请使用手机打开微信,扫描二维码完成支付',
|
||||
payInNewWindow: '请在新窗口中完成支付',
|
||||
payInNewWindowHint: '支付页面已在新窗口打开,请在新窗口中完成支付后返回此页面',
|
||||
openPayWindow: '重新打开支付页面',
|
||||
expiresIn: '剩余支付时间',
|
||||
expired: '订单已过期',
|
||||
expiredDesc: '订单已超时,请重新创建订单',
|
||||
cancelled: '订单已取消',
|
||||
cancelledDesc: '您已取消本次支付',
|
||||
waitingPayment: '等待支付...',
|
||||
cancelOrder: '取消订单',
|
||||
},
|
||||
orders: {
|
||||
title: '我的订单',
|
||||
empty: '暂无订单',
|
||||
orderId: '订单 ID',
|
||||
orderNo: '订单编号',
|
||||
amount: '金额',
|
||||
payAmount: '实付',
|
||||
status: '状态',
|
||||
paymentMethod: '支付方式',
|
||||
createdAt: '创建时间',
|
||||
cancel: '取消订单',
|
||||
userId: '用户 ID',
|
||||
requestRefund: '申请退款',
|
||||
},
|
||||
result: {
|
||||
success: '支付成功',
|
||||
subscriptionSuccess: '订阅成功',
|
||||
failed: '支付失败',
|
||||
backToRecharge: '返回充值',
|
||||
viewOrders: '查看订单',
|
||||
},
|
||||
currentBalance: '当前余额',
|
||||
rechargeAccount: '充值账户',
|
||||
activeSubscription: '当前订阅',
|
||||
noActiveSubscription: '暂无有效订阅',
|
||||
tabTopUp: '充值',
|
||||
tabSubscribe: '订阅',
|
||||
noPlans: '暂无可用订阅套餐',
|
||||
notAvailable: '充值功能暂未开放',
|
||||
confirmSubscription: '确认订阅',
|
||||
confirmCancel: '确定要取消此订单吗?',
|
||||
amountTooLow: '最低金额为 {min}',
|
||||
amountTooHigh: '最高金额为 {max}',
|
||||
amountNoMethod: '该金额没有可用的支付方式',
|
||||
refundReason: '退款原因',
|
||||
refundReasonPlaceholder: '请描述您的退款原因',
|
||||
stripeLoadFailed: '支付组件加载失败,请刷新页面重试',
|
||||
stripeMissingParams: '缺少订单ID或支付密钥',
|
||||
stripeNotConfigured: 'Stripe 未配置',
|
||||
errors: {
|
||||
tooManyPending: '待支付订单过多(最多 {max} 个),请先完成或取消现有订单',
|
||||
cancelRateLimited: '取消订单过于频繁,请稍后再试',
|
||||
PENDING_ORDERS: '该服务商有未完成的订单,请等待订单完成后再操作',
|
||||
},
|
||||
stripePay: '立即支付',
|
||||
stripeSuccessProcessing: '支付成功,正在处理订单...',
|
||||
stripePopup: {
|
||||
redirecting: '正在跳转到支付页面...',
|
||||
loadingQr: '正在获取微信支付二维码...',
|
||||
timeout: '等待支付凭证超时,请重试',
|
||||
qrFailed: '未能获取微信支付二维码',
|
||||
},
|
||||
subscribeNow: '立即开通',
|
||||
renewNow: '续费',
|
||||
selectPlan: '选择套餐',
|
||||
planFeatures: '功能特性',
|
||||
planCard: {
|
||||
rate: '倍率',
|
||||
dailyLimit: '日限额',
|
||||
weeklyLimit: '周限额',
|
||||
monthlyLimit: '月限额',
|
||||
quota: '配额',
|
||||
unlimited: '无限制',
|
||||
models: '模型',
|
||||
},
|
||||
days: '天',
|
||||
months: '个月',
|
||||
years: '年',
|
||||
oneMonth: '1 个月',
|
||||
oneYear: '1 年',
|
||||
perMonth: '月',
|
||||
perYear: '年',
|
||||
admin: {
|
||||
tabs: {
|
||||
overview: '概览',
|
||||
orders: '订单管理',
|
||||
channels: '支付渠道',
|
||||
plans: '订阅套餐',
|
||||
},
|
||||
todayRevenue: '今日收入',
|
||||
totalRevenue: '总收入',
|
||||
todayOrders: '今日订单',
|
||||
orderCount: '订单数',
|
||||
avgAmount: '平均金额',
|
||||
revenue: '收入',
|
||||
dailyRevenue: '每日收入',
|
||||
paymentDistribution: '支付方式分布',
|
||||
colUser: '用户',
|
||||
topUsers: '消费排行',
|
||||
noData: '暂无数据',
|
||||
days: '天',
|
||||
weeks: '周',
|
||||
months: '月',
|
||||
searchOrders: '搜索订单...',
|
||||
allStatuses: '全部状态',
|
||||
allPaymentTypes: '全部支付方式',
|
||||
allOrderTypes: '全部订单类型',
|
||||
orderDetail: '订单详情',
|
||||
orderType: '订单类型',
|
||||
orders: '订单',
|
||||
balanceOrder: '余额充值',
|
||||
subscriptionOrder: '订阅',
|
||||
paidAt: '支付时间',
|
||||
completedAt: '完成时间',
|
||||
expiresAt: '过期时间',
|
||||
feeRate: '手续费率',
|
||||
refund: '退款',
|
||||
refundOrder: '退款订单',
|
||||
refundAmount: '退款金额',
|
||||
maxRefundable: '最大可退金额',
|
||||
refundReason: '退款原因',
|
||||
refundReasonPlaceholder: '请输入退款原因',
|
||||
confirmRefund: '确认退款',
|
||||
refundSuccess: '退款成功',
|
||||
refundInfo: '退款信息',
|
||||
refundEnabled: '允许退款',
|
||||
alreadyRefunded: '已退款',
|
||||
deductBalance: '扣除余额',
|
||||
deductBalanceHint: '从用户余额中扣回充值金额',
|
||||
userBalance: '用户余额',
|
||||
orderAmount: '订单金额',
|
||||
insufficientBalance: '余额不足,将扣至 $0',
|
||||
noDeduction: '将不扣除用户余额',
|
||||
forceRefund: '强制退款(忽略余额检查)',
|
||||
orderCancelled: '订单已取消',
|
||||
retry: '重试',
|
||||
retrySuccess: '重试成功',
|
||||
approveRefund: '批准退款',
|
||||
retryRefund: '重试退款',
|
||||
refundRequestInfo: '退款申请信息',
|
||||
refundRequestedAt: '申请时间',
|
||||
refundRequestedBy: '申请人',
|
||||
refundRequestReason: '申请原因',
|
||||
auditLogs: '操作日志',
|
||||
operator: '操作人',
|
||||
channelName: '渠道名称',
|
||||
channelDescription: '渠道描述',
|
||||
createChannel: '创建渠道',
|
||||
editChannel: '编辑渠道',
|
||||
deleteChannel: '删除渠道',
|
||||
deleteChannelConfirm: '确定要删除此渠道吗?',
|
||||
planName: '套餐名称',
|
||||
planDescription: '套餐描述',
|
||||
createPlan: '创建套餐',
|
||||
editPlan: '编辑套餐',
|
||||
deletePlan: '删除套餐',
|
||||
deletePlanConfirm: '确定要删除此套餐吗?',
|
||||
originalPrice: '原价',
|
||||
price: '价格',
|
||||
validityDays: '有效期(天)',
|
||||
validityUnit: '有效期单位',
|
||||
sortOrder: '排序',
|
||||
forSale: '上架状态',
|
||||
onSale: '上架',
|
||||
offSale: '下架',
|
||||
group: '分组',
|
||||
groupId: '分组 ID',
|
||||
features: '功能特性',
|
||||
featuresHint: '每行一个特性',
|
||||
featuresPlaceholder: '输入套餐特性...',
|
||||
providerManagement: '服务商管理',
|
||||
providerManagementDesc: '管理支付服务商实例',
|
||||
createProvider: '创建服务商',
|
||||
editProvider: '编辑服务商',
|
||||
deleteProvider: '删除服务商',
|
||||
deleteProviderConfirm: '确定要删除此服务商吗?',
|
||||
providerName: '服务商名称',
|
||||
providerKey: '服务商标识',
|
||||
selectProviderKey: '选择服务商标识',
|
||||
providerConfig: '服务商配置',
|
||||
noProviders: '暂无服务商',
|
||||
noProvidersHint: '创建一个服务商实例以开始接受支付',
|
||||
supportedTypes: '支持的支付方式',
|
||||
supportedTypesHint: '选择此服务商支持的支付方式',
|
||||
rateMultiplier: '费率倍数',
|
||||
dashboardTitle: '支付概览',
|
||||
dashboardDesc: '充值订单统计与分析',
|
||||
daySuffix: '天',
|
||||
paymentConfigTitle: '支付配置',
|
||||
paymentConfigDesc: '管理支付服务商与相关设置',
|
||||
plansPageTitle: '订阅套餐管理',
|
||||
plansPageDesc: '管理订阅套餐配置',
|
||||
tabPlanConfig: '套餐配置',
|
||||
tabUserSubs: '用户订阅',
|
||||
selectGroup: '请选择分组',
|
||||
groupMissing: '缺失',
|
||||
groupInfo: '分组信息',
|
||||
platform: '平台',
|
||||
rateMultiplierLabel: '倍率',
|
||||
dailyLimit: '日限额',
|
||||
weeklyLimit: '周限额',
|
||||
monthlyLimit: '月限额',
|
||||
unlimited: '无限制',
|
||||
searchUserSubs: '搜索用户订阅...',
|
||||
daily: '日',
|
||||
weekly: '周',
|
||||
monthly: '月',
|
||||
subsStatus: {
|
||||
active: '生效中',
|
||||
expired: '已过期',
|
||||
revoked: '已撤销',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user