@@ -12,6 +12,7 @@ import { WalletStatus } from '../wallets/domain/wallet.model';
1212import { PaymentStatus } from './entities/payment.entity' ;
1313import { PaginationDto , PaginatedResponse } from '../common/dto/pagination.dto' ;
1414import { PaymentsFilterDto } from './dto/payments-filter.dto' ;
15+ import { WebhookEventEmitterService } from '../webhooks/webhook-event-emitter.service' ;
1516
1617// Only PENDING payments can be transitioned; terminal states are immutable.
1718const ALLOWED_TRANSITIONS : Record < string , PaymentStatus [ ] > = {
@@ -26,6 +27,7 @@ export class PaymentsService {
2627 private readonly prisma : PrismaService ,
2728 private readonly limitsService : LimitsService ,
2829 private readonly walletsService : WalletsService ,
30+ private readonly webhookEventEmitter : WebhookEventEmitterService ,
2931 ) { }
3032
3133 async create ( createPaymentDto : CreatePaymentDto ) {
@@ -49,7 +51,7 @@ export class PaymentsService {
4951 await this . walletsService . findWalletById ( receiverWalletId ) ;
5052 await this . limitsService . checkLimits ( walletId , amount ) ;
5153
52- return this . prisma . payment . create ( {
54+ const payment = await this . prisma . payment . create ( {
5355 data : {
5456 fromId,
5557 toId,
@@ -60,6 +62,17 @@ export class PaymentsService {
6062 status : PaymentStatus . PENDING ,
6163 } ,
6264 } ) ;
65+
66+ await this . webhookEventEmitter . emitPaymentCreated ( {
67+ paymentId : payment . id ,
68+ walletId,
69+ receiverWalletId,
70+ amount,
71+ currency,
72+ status : payment . status ,
73+ } ) ;
74+
75+ return payment ;
6376 }
6477
6578 async findAll (
@@ -114,10 +127,21 @@ export class PaymentsService {
114127 }
115128 }
116129
117- return this . prisma . payment . update ( {
130+ const updatedPayment = await this . prisma . payment . update ( {
118131 where : { id : paymentId } ,
119132 data : updatePaymentDto ,
120133 } ) ;
134+
135+ if ( updatePaymentDto . status !== undefined ) {
136+ await this . webhookEventEmitter . emitPaymentStatusUpdated ( {
137+ paymentId : updatedPayment . id ,
138+ walletId : String ( updatedPayment . fromId ) ,
139+ previousStatus : payment . status ,
140+ status : updatedPayment . status ,
141+ } ) ;
142+ }
143+
144+ return updatedPayment ;
121145 }
122146
123147 remove ( id : string ) {
0 commit comments