feat: 支持官方支付宝与易支付支付宝同时展示

- PaymentType 改为 string 类型,支持复合 key(如 alipay_direct)
- 官方支付宝注册为 alipay_direct,易支付保持 alipay/wxpay
- 前端按 PAYMENT_TYPE_META 展示标签区分(官方直连/易支付)
- 管理后台显示统一改为 getPaymentTypeLabel 通用映射
- 修复 admin/OrderTable 中 wechat 拼写错误
This commit is contained in:
erio
2026-03-06 15:33:22 +08:00
parent 01d5a0b3c4
commit f53aa9e14c
14 changed files with 85 additions and 36 deletions

View File

@@ -1,5 +1,7 @@
'use client';
import { getPaymentTypeLabel } from '@/lib/pay-utils';
interface AuditLog {
id: string;
action: string;
@@ -53,7 +55,7 @@ export default function OrderDetail({ order, onClose, dark }: OrderDetailProps)
{ label: 'Payment OK', value: order.paymentSuccess ? 'yes' : 'no' },
{ label: 'Recharge OK', value: order.rechargeSuccess ? 'yes' : 'no' },
{ label: 'Recharge Status', value: order.rechargeStatus || '-' },
{ label: '支付方式', value: order.paymentType === 'alipay' ? '支付宝' : '微信支付' },
{ label: '支付方式', value: getPaymentTypeLabel(order.paymentType) },
{ label: '充值码', value: order.rechargeCode },
{ label: '支付单号', value: order.paymentTradeNo || '-' },
{ label: '客户端IP', value: order.clientIp || '-' },

View File

@@ -1,5 +1,7 @@
'use client';
import { getPaymentTypeLabel } from '@/lib/pay-utils';
interface Order {
id: string;
userId: number;
@@ -92,15 +94,7 @@ export default function OrderTable({ orders, onRetry, onCancel, onViewDetail, da
{statusInfo.label}
</span>
</td>
<td className={tdMuted}>
{order.paymentType === 'alipay'
? '支付宝'
: order.paymentType === 'wechat'
? '微信支付'
: order.paymentType === 'stripe'
? 'Stripe'
: order.paymentType}
</td>
<td className={tdMuted}>{getPaymentTypeLabel(order.paymentType)}</td>
<td className={tdMuted}>{order.srcHost || '-'}</td>
<td className={tdMuted}>{new Date(order.createdAt).toLocaleString('zh-CN')}</td>
<td className="whitespace-nowrap px-4 py-3 text-sm">

View File

@@ -1,5 +1,7 @@
'use client';
import { getPaymentTypeLabel } from '@/lib/pay-utils';
interface PaymentMethod {
paymentType: string;
amount: number;
@@ -13,8 +15,10 @@ interface PaymentMethodChartProps {
}
const TYPE_CONFIG: Record<string, { label: string; light: string; dark: string }> = {
alipay: { label: '支付宝', light: 'bg-blue-500', dark: 'bg-blue-400' },
wechat: { label: '微信支付', light: 'bg-green-500', dark: 'bg-green-400' },
alipay: { label: '支付宝(易支付)', light: 'bg-cyan-500', dark: 'bg-cyan-400' },
alipay_direct: { label: '支付宝(官方)', light: 'bg-blue-500', dark: 'bg-blue-400' },
wxpay: { label: '微信支付(易支付)', light: 'bg-green-500', dark: 'bg-green-400' },
wxpay_direct: { label: '微信支付(官方)', light: 'bg-emerald-500', dark: 'bg-emerald-400' },
stripe: { label: 'Stripe', light: 'bg-purple-500', dark: 'bg-purple-400' },
};
@@ -48,7 +52,7 @@ export default function PaymentMethodChart({ data, dark }: PaymentMethodChartPro
<div className="space-y-4">
{data.map((method) => {
const config = TYPE_CONFIG[method.paymentType] || {
label: method.paymentType,
label: getPaymentTypeLabel(method.paymentType),
light: 'bg-gray-500',
dark: 'bg-gray-400',
};