register payment listener
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module, forwardRef } from '@nestjs/common';
|
||||||
import { MikroOrmModule } from '@mikro-orm/nestjs';
|
import { MikroOrmModule } from '@mikro-orm/nestjs';
|
||||||
import { OrdersService } from './providers/orders.service';
|
import { OrdersService } from './providers/orders.service';
|
||||||
import { OrdersController } from './controllers/orders.controller';
|
import { OrdersController } from './controllers/orders.controller';
|
||||||
@@ -27,7 +27,7 @@ import { InventoryModule } from '../inventory/inventory.module';
|
|||||||
CartModule,
|
CartModule,
|
||||||
UtilsModule,
|
UtilsModule,
|
||||||
AuthModule,
|
AuthModule,
|
||||||
PaymentsModule,
|
forwardRef(() => PaymentsModule),
|
||||||
JwtModule,
|
JwtModule,
|
||||||
AdminModule,
|
AdminModule,
|
||||||
NotificationsModule,
|
NotificationsModule,
|
||||||
@@ -35,6 +35,6 @@ import { InventoryModule } from '../inventory/inventory.module';
|
|||||||
],
|
],
|
||||||
controllers: [OrdersController],
|
controllers: [OrdersController],
|
||||||
providers: [OrdersService, OrderRepository, OrderListeners, OrdersCrone],
|
providers: [OrdersService, OrderRepository, OrderListeners, OrdersCrone],
|
||||||
exports: [OrderRepository],
|
exports: [OrderRepository, OrdersService],
|
||||||
})
|
})
|
||||||
export class OrdersModule { }
|
export class OrdersModule { }
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export class PaymentsController {
|
|||||||
@ApiBody({ type: VerifyPaymentDto })
|
@ApiBody({ type: VerifyPaymentDto })
|
||||||
@ApiNotFoundResponse({ description: 'Payment not found' })
|
@ApiNotFoundResponse({ description: 'Payment not found' })
|
||||||
verifyPayment(@Body() verifyPaymentDto: VerifyPaymentDto) {
|
verifyPayment(@Body() verifyPaymentDto: VerifyPaymentDto) {
|
||||||
return this.paymentsService.verifyPayment(verifyPaymentDto.authority, verifyPaymentDto.orderId);
|
return this.paymentsService.verifyOnlinePayment(verifyPaymentDto.authority, verifyPaymentDto.orderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** admin routes */
|
/** admin routes */
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export class paymentSucceedEvent {
|
|||||||
export class onlinePaymentSucceedEvent {
|
export class onlinePaymentSucceedEvent {
|
||||||
constructor(
|
constructor(
|
||||||
public readonly paymentId: string,
|
public readonly paymentId: string,
|
||||||
|
public readonly orderId: string,
|
||||||
public readonly restaurantId: string,
|
public readonly restaurantId: string,
|
||||||
public readonly orderNumber: string,
|
public readonly orderNumber: string,
|
||||||
public readonly total: number,
|
public readonly total: number,
|
||||||
|
|||||||
@@ -119,10 +119,10 @@ export class PaymentListeners {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const order = await this.orderService.findOne(event.paymentId, event.restaurantId);
|
const order = await this.orderService.findOne(event.orderId, event.restaurantId);
|
||||||
if (!order) {
|
if (!order) {
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`Order not found: ${event.paymentId} for restaurant: ${event.restaurantId}`,
|
`Order not found: ${event.orderId} for restaurant: ${event.restaurantId}`,
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module, forwardRef } from '@nestjs/common';
|
||||||
import { PaymentsService } from './services/payments.service';
|
import { PaymentsService } from './services/payments.service';
|
||||||
import { MikroOrmModule } from '@mikro-orm/nestjs';
|
import { MikroOrmModule } from '@mikro-orm/nestjs';
|
||||||
import { PaymentMethod } from './entities/payment-method.entity';
|
import { PaymentMethod } from './entities/payment-method.entity';
|
||||||
@@ -13,13 +13,18 @@ import { ZarinpalGateway } from './gateways/zarinpal.gateway';
|
|||||||
import { GatewayManager } from './gateways/gateway.manager';
|
import { GatewayManager } from './gateways/gateway.manager';
|
||||||
import { PaymentRepository } from './repositories/payment.repository';
|
import { PaymentRepository } from './repositories/payment.repository';
|
||||||
import { InventoryModule } from '../inventory/inventory.module';
|
import { InventoryModule } from '../inventory/inventory.module';
|
||||||
|
import { PaymentListeners } from './listeners/payment.listeners';
|
||||||
|
import { AdminModule } from '../admin/admin.module';
|
||||||
|
import { NotificationsModule } from '../notifications/notifications.module';
|
||||||
|
import { OrdersModule } from '../orders/orders.module';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [MikroOrmModule.forFeature([PaymentMethod, Payment, Restaurant]),
|
imports: [MikroOrmModule.forFeature([PaymentMethod, Payment, Restaurant]),
|
||||||
AuthModule, JwtModule, InventoryModule],
|
AuthModule, JwtModule, InventoryModule, AdminModule, NotificationsModule,
|
||||||
|
forwardRef(() => OrdersModule)],
|
||||||
controllers: [PaymentsController],
|
controllers: [PaymentsController],
|
||||||
providers: [PaymentsService, PaymentMethodService, PaymentMethodRepository,
|
providers: [PaymentsService, PaymentMethodService, PaymentMethodRepository,
|
||||||
PaymentRepository, ZarinpalGateway, GatewayManager],
|
PaymentRepository, ZarinpalGateway, GatewayManager, PaymentListeners],
|
||||||
exports: [
|
exports: [
|
||||||
PaymentMethodRepository,
|
PaymentMethodRepository,
|
||||||
PaymentRepository,
|
PaymentRepository,
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ export class PaymentsService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async verifyPayment(transactionId: string, orderId: string): Promise<Payment> {
|
async verifyOnlinePayment(transactionId: string, orderId: string): Promise<Payment> {
|
||||||
const payment = await this.em.transactional(async em => {
|
const payment = await this.em.transactional(async em => {
|
||||||
const payment = await em.findOne(
|
const payment = await em.findOne(
|
||||||
Payment,
|
Payment,
|
||||||
@@ -214,7 +214,7 @@ export class PaymentsService {
|
|||||||
});
|
});
|
||||||
this.eventEmitter.emit(
|
this.eventEmitter.emit(
|
||||||
onlinePaymentSucceedEvent.name,
|
onlinePaymentSucceedEvent.name,
|
||||||
new onlinePaymentSucceedEvent(payment.id, payment.order.restaurant.id, String(payment.order?.orderNumber) || '', payment.amount),
|
new onlinePaymentSucceedEvent(payment.id, payment.order.id, payment.order.restaurant.id, String(payment.order?.orderNumber) || '', payment.amount),
|
||||||
);
|
);
|
||||||
return payment;
|
return payment;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user