This commit is contained in:
2025-12-15 15:53:41 +03:30
parent 5ef6ee26dd
commit 3fefb02921
3 changed files with 26 additions and 10 deletions
@@ -35,16 +35,15 @@ export class OrdersService {
) {}
async checkout(userId: string, restaurantId: string) {
console.log('Order created event emitted 000');
const cart = await this.cartService.findOneOrFail(userId, restaurantId);
const { order } = await this.createOrder(userId, restaurantId, cart);
if (!order.paymentMethod) {
throw new BadRequestException('Payment method is required for checkout');
}
// if (!order.paymentMethod) {
// throw new BadRequestException('Payment method is required for checkout');
// }
const { paymentUrl } = await this.paymentsService.startPayment(order.id);
// const { paymentUrl } = await this.paymentsService.startPayment(order.id);
await this.cartService.clearCart(userId, restaurantId);
@@ -57,7 +56,7 @@ export class OrdersService {
// new OrderPaymentSuccessEvent(restaurantId, order.user.id, order.id, order.total),
// );
console.log('Order created event emitted 111');
return { order, paymentUrl };
return { order };
}
async createOrder(userId: string, restaurantId: string, cart: Cart) {
@@ -57,6 +57,19 @@ export class PaymentsController {
findAllByRestaurant(@UserId() userId: string, @RestId() restId: string) {
return this.paymentsService.findAllByRestaurantId(restId, userId);
}
@UseGuards(AuthGuard)
@ApiBearerAuth()
@Get('public/payments/pay-order/:orderId')
@ApiOperation({ summary: 'Pay for an order' })
@ApiParam({ name: 'orderId', type: 'string', description: 'Order ID' })
@ApiHeader({
name: 'X-Slug',
required: true,
})
payAnOrder(@Param('orderId') orderId: string, @RestId() restId: string) {
return this.paymentsService.startPayment(orderId, restId);
}
// @UseGuards(AdminAuthGuard)
// @ApiBearerAuth()
// @Get('admin/payments/:id')
@@ -57,8 +57,8 @@ export class PaymentsService {
// return { paymentUrl };
// }
async startPayment(orderId: string): Promise<{ paymentUrl: string | null }> {
const { amount, method, restaurantDomain, gateway, merchantId, user } = await this.validateOrder(orderId);
async startPayment(orderId: string, restId: string): Promise<{ paymentUrl: string | null }> {
const { amount, method, restaurantDomain, gateway, merchantId, user } = await this.validateOrder(orderId, restId);
// Handle Wallet payment immediately
// if (method === PaymentMethodEnum.Wallet) {
@@ -86,8 +86,12 @@ export class PaymentsService {
return { paymentUrl };
}
private async validateOrder(orderId: string) {
const order = await this.em.findOne(Order, { id: orderId }, { populate: ['user', 'paymentMethod'] });
private async validateOrder(orderId: string, restId: string) {
const order = await this.em.findOne(
Order,
{ id: orderId, restaurant: { id: restId } },
{ populate: ['user', 'paymentMethod'] },
);
if (!order) {
throw new NotFoundException('Order not found');
}