From a99934f6b2c7e7cbc25044179dcd6b48b4dde6eb Mon Sep 17 00:00:00 2001 From: ArturOlar Date: Mon, 9 Feb 2026 11:42:01 +0200 Subject: [PATCH] fix: Pass failedChecks to upload document exception --- src/ApplicantSessions/ApplicantSessionsApiImpl.php | 5 +++-- src/Exceptions/SnapptDocumentUploadException.php | 14 +++++++++++++- src/Fake/FakeApplicantSessionsApi.php | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/ApplicantSessions/ApplicantSessionsApiImpl.php b/src/ApplicantSessions/ApplicantSessionsApiImpl.php index 71f344c..77cc822 100644 --- a/src/ApplicantSessions/ApplicantSessionsApiImpl.php +++ b/src/ApplicantSessions/ApplicantSessionsApiImpl.php @@ -101,12 +101,13 @@ public function uploadDocument(DocumentType $documentType, string $sessionToken, ] ); } catch (RequestException $exception) { - if ($exception->getResponse()->getStatusCode() === 422) { + if (in_array($exception->getResponse()->getStatusCode(), [422, 400])) { $error = psr_response_to_json($exception->getResponse()); $errorMessage = $error['error'] ?? 'Failed to upload document.'; + $failedChecks = $error['failedChecks'] ?? []; $filename = basename($filePath); - throw new SnapptDocumentUploadException($filename, $errorMessage); + throw new SnapptDocumentUploadException($filename, $failedChecks, $errorMessage); } throw $exception; diff --git a/src/Exceptions/SnapptDocumentUploadException.php b/src/Exceptions/SnapptDocumentUploadException.php index a9e1037..fe44d6c 100644 --- a/src/Exceptions/SnapptDocumentUploadException.php +++ b/src/Exceptions/SnapptDocumentUploadException.php @@ -6,9 +6,13 @@ class SnapptDocumentUploadException extends Exception { + /** + * @param list $failedChecks + */ public function __construct( private readonly string $snapptFilename, - string $message + private readonly array $failedChecks, + string $message, ) { parent::__construct($message); } @@ -17,4 +21,12 @@ public function getSnapptFilename(): string { return $this->snapptFilename; } + + /** + * @return list + */ + public function getFailedChecks(): array + { + return $this->failedChecks; + } } diff --git a/src/Fake/FakeApplicantSessionsApi.php b/src/Fake/FakeApplicantSessionsApi.php index 95abeff..6f6a6b4 100644 --- a/src/Fake/FakeApplicantSessionsApi.php +++ b/src/Fake/FakeApplicantSessionsApi.php @@ -68,7 +68,7 @@ public function uploadDocument(DocumentType $documentType, string $sessionToken, $applicantEmail = Arr::get($this->cache->get("{$sessionToken}:applicant:session"), 'email', ''); if (Str::contains($applicantEmail, 'snappt_fail_documents')) { - throw new SnapptDocumentUploadException(basename($filePath), 'This PDF appears to be a print-to-PDF. Please download an original PDF from your bank or financial institution.'); + throw new SnapptDocumentUploadException(basename($filePath), [], 'This PDF appears to be a print-to-PDF. Please download an original PDF from your bank or financial institution.'); } $id = Arr::get($this->cache->get("{$sessionToken}:applicant:session"), 'id');