Files
sub2apipay/src/lib/utils/api.ts
T
erioandClaude Opus 4.6 ac0772b0f4 fix: API 路由安全加固与架构优化 — 认证、错误处理、Registry 统一
- /api/user 添加 token 认证,防止用户枚举
- Admin token 支持 Authorization header
- /api/orders/my 区分认证失败和服务端错误
- Admin orders userId/date 参数校验
- Decimal 字段统一 Number() 转换
- 抽取 handleApiError/extractHeaders 工具函数
- Webhook 路由改用 Registry 获取 Provider
- PaymentRegistry lazy init 自动初始化

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 04:15:54 +08:00

21 lines
786 B
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { OrderError } from '@/lib/order/service';
/** 统一处理 OrderError 和未知错误 */
export function handleApiError(error: unknown, fallbackMessage: string): NextResponse {
if (error instanceof OrderError) {
return NextResponse.json({ error: error.message, code: error.code }, { status: error.statusCode });
}
console.error(`${fallbackMessage}:`, error);
return NextResponse.json({ error: fallbackMessage }, { status: 500 });
}
/** 从 NextRequest 提取 headers 为普通对象 */
export function extractHeaders(request: NextRequest): Record<string, string> {
const headers: Record<string, string> = {};
request.headers.forEach((value, key) => {
headers[key] = value;
});
return headers;
}