From faee59ee1590890985e72dd8ac9766215545f394 Mon Sep 17 00:00:00 2001 From: erio Date: Sat, 11 Apr 2026 17:51:06 +0800 Subject: [PATCH] fix(payment): propagate reason/metadata in API error responses The API client's error interceptor was dropping the reason and metadata fields from backend error responses. This caused PaymentView to miss specific error codes (TOO_MANY_PENDING, CANCEL_RATE_LIMITED) and fall back to generic error messages. --- frontend/src/api/client.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 95f9ff31..6be2d543 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -92,10 +92,13 @@ apiClient.interceptors.response.use( response.data = apiResponse.data } else { // API error + const resp = apiResponse as Record return Promise.reject({ status: response.status, code: apiResponse.code, - message: apiResponse.message || 'Unknown error' + message: apiResponse.message || 'Unknown error', + reason: resp.reason, + metadata: resp.metadata, }) } } @@ -268,7 +271,9 @@ apiClient.interceptors.response.use( status, code: apiData.code, error: apiData.error, - message: apiData.message || apiData.detail || error.message + message: apiData.message || apiData.detail || error.message, + reason: apiData.reason, + metadata: apiData.metadata, }) }