Fixing isssues usins AI

This commit is contained in:
Muluhabt
2026-07-22 17:29:40 +03:00
parent 9782dd0fe3
commit e31a2d64e5
2 changed files with 20 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
import {
BadRequestException,
ConflictException,
Inject,
Injectable,
Logger,
@@ -106,9 +107,19 @@ export class IntentsService {
// so a fresh session opens below.
const settled = await this.verifyThenSupersede(existing);
if (settled) return this.toSnapshot(settled);
} else if (existing.provider !== request.provider) {
// PROCESSING/SUCCEEDED on a DIFFERENT provider than requested: money may already be
// in flight there. Must not silently hand back that other provider's clientAction
// (e.g. its redirect URL) as if it belonged to the newly requested provider — the
// caller has no way to tell the two apart (see InitiateResponseDto), so it would
// blindly redirect the payer to the wrong gateway's checkout page.
throw new ConflictException(
`A ${existing.provider} payment is already ${existing.status.toLowerCase()} for this ` +
`booking. Complete or wait for it to resolve before switching payment methods.`,
);
} else {
// PROCESSING (money in flight) or SUCCEEDED (already paid): never reopen —
// return the existing intent so the caller adopts its outcome.
// Same provider, already PROCESSING/SUCCEEDED: never reopen — return the existing
// intent so the caller adopts its outcome.
return this.toSnapshot(existing);
}
}