|
@@ -1,75 +0,0 @@
|
|
|
-import { createRoute, OpenAPIHono } from '@hono/zod-openapi';
|
|
|
|
|
-import { z } from 'zod';
|
|
|
|
|
-import { AppDataSource } from '@d8d/shared-utils';
|
|
|
|
|
-import { authMiddleware } from '@d8d/auth-module';
|
|
|
|
|
-import { AuthContext } from '@d8d/shared-types';
|
|
|
|
|
-import { PaymentService } from '../../services/payment.service.js';
|
|
|
|
|
-import { PaymentCreateRequestSchema, PaymentCreateResponseSchema } from '../../schemas/payment.schema.js';
|
|
|
|
|
-
|
|
|
|
|
-// 支付创建路由定义
|
|
|
|
|
-const createPaymentRoute = createRoute({
|
|
|
|
|
- method: 'post',
|
|
|
|
|
- path: '/',
|
|
|
|
|
- middleware: [authMiddleware],
|
|
|
|
|
- request: {
|
|
|
|
|
- body: {
|
|
|
|
|
- content: {
|
|
|
|
|
- 'application/json': { schema: PaymentCreateRequestSchema }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- responses: {
|
|
|
|
|
- 200: {
|
|
|
|
|
- description: '支付创建成功',
|
|
|
|
|
- content: { 'application/json': { schema: PaymentCreateResponseSchema } }
|
|
|
|
|
- },
|
|
|
|
|
- 400: {
|
|
|
|
|
- description: '参数错误',
|
|
|
|
|
- content: { 'application/json': { schema: z.object({ message: z.string() }) } }
|
|
|
|
|
- },
|
|
|
|
|
- 401: {
|
|
|
|
|
- description: '未授权',
|
|
|
|
|
- content: { 'application/json': { schema: z.object({ message: z.string() }) } }
|
|
|
|
|
- },
|
|
|
|
|
- 500: {
|
|
|
|
|
- description: '服务器错误',
|
|
|
|
|
- content: { 'application/json': { schema: z.object({ message: z.string() }) } }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-});
|
|
|
|
|
-
|
|
|
|
|
-const app = new OpenAPIHono<AuthContext>()
|
|
|
|
|
- .openapi(createPaymentRoute, async (c) => {
|
|
|
|
|
- try {
|
|
|
|
|
- const paymentData = c.req.valid('json');
|
|
|
|
|
- const user = c.get('user');
|
|
|
|
|
-
|
|
|
|
|
- // 检查用户是否有openid(小程序用户必需)
|
|
|
|
|
- if (!user?.openid) {
|
|
|
|
|
- return c.json({
|
|
|
|
|
- message: '用户未绑定微信小程序,无法进行支付'
|
|
|
|
|
- }, 400);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 创建支付服务实例
|
|
|
|
|
- const paymentService = new PaymentService(AppDataSource);
|
|
|
|
|
-
|
|
|
|
|
- // 创建支付订单,从认证用户中获取openid
|
|
|
|
|
- const paymentResult = await paymentService.createPayment(
|
|
|
|
|
- paymentData.orderId,
|
|
|
|
|
- user.id,
|
|
|
|
|
- paymentData.totalAmount,
|
|
|
|
|
- paymentData.description,
|
|
|
|
|
- user.openid
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- return c.json(paymentResult, 200);
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- console.error('支付创建失败:', error);
|
|
|
|
|
- return c.json({
|
|
|
|
|
- message: error instanceof Error ? error.message : '支付创建失败'
|
|
|
|
|
- }, 500);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
-export default app;
|
|
|