Я работаю над интеграцией платежей с использованием API Payway в приложении Symfony с шаблонами Twig. Когда я отправляю данные кредитной карты с истекшим сроком действия, API правильно возвращает ответ JSON, указывающий на ошибку. Однако вместо всплывающего окна с сообщением об ошибке полный ответ JSON отображается непосредственно на странице.
Вот ответ JSON от API, когда срок действия карты истек:
Вот ответ JSON от API, когда срок действия карты истек:
р>
Цель:
Я хочу, чтобы в случае сбоя платежа отображалось всплывающее окно с конкретным сообщением об ошибке (например, «Срок действия карты истек»), а не переход на новую страницу с полным ответом в формате JSON.
Код:
Вот мой код JavaScript, который обрабатывает отправку формы и запрос на получение:
Проблема:
Несмотря на попытки правильно обработать ошибки, я продолжаю получать полный ответ JSON, отображаемый напрямую, а не специальное сообщение об ошибке. Что я здесь упускаю или делаю неправильно? Как я могу гарантировать, что конкретное сообщение об ошибке (например, «Срок действия карты истек») отображается во всплывающем окне?
Я работаю над интеграцией платежей с использованием API Payway в приложении Symfony с шаблонами Twig. Когда я отправляю данные кредитной карты с истекшим сроком действия, API правильно возвращает ответ JSON, указывающий на ошибку. Однако вместо всплывающего окна с сообщением об ошибке полный ответ JSON отображается непосредственно на странице. Вот ответ JSON от API, когда срок действия карты истек: Вот ответ JSON от API, когда срок действия карты истек: р> [code]json Copy code { "error": "Payment failed", "details": { "transactionId": 3825557492, "receiptNumber": "3825557492", "status": "declined", "responseCode": "54", "responseText": "Expired card", "transactionType": "payment", "customerNumber": "DUMMYCUSTOMER123", "customerName": "2566", "orderNumber": "5240000123-061223", "currency": "aud", "principalAmount": 1000, "surchargeAmount": 12, "paymentAmount": 1012, "paymentMethod": "creditCard", "creditCard": { "cardNumber": "456471...012", "expiryDateMonth": "02", "expiryDateYear": "25", "cardScheme": "visa", "cardType": "credit", "cardholderName": "2566", "panType": "fpan" }, "merchant": { "merchantId": "TEST", "merchantName": "Test Merchant", "links": [ { "rel": "self", "href": "https://api.payway.com.au/rest/v1/merchants/TEST" } ] }, "transactionDateTime": "25 Jul 2024 05:11 AEST", "settlementDate": "25 Jul 2024", "declinedDate": "25 Jul 2024", "customerIpAddress": "127.0.0.1", "isVoidable": false, "isRefundable": false, "links": [ { "rel": "self", "href": "https://api.payway.com.au/rest/v1/transactions/3825557492" } ] } } [/code] Цель: Я хочу, чтобы в случае сбоя платежа отображалось всплывающее окно с конкретным сообщением об ошибке (например, «Срок действия карты истек»), а не переход на новую страницу с полным ответом в формате JSON. Код: Вот мой код JavaScript, который обрабатывает отправку формы и запрос на получение: [code]class ResponseError extends Error { constructor(message, response) { super(message); this.response = response; } }
if (!isset($data['singleUseTokenId'])) { return new JsonResponse($data, 400); }
return new JsonResponse(['singleUseTokenId' => $data['singleUseTokenId']]);
} catch (HttpExceptionInterface $e) { $responseContent = $e->getResponse()->getContent(false); $responseData = json_decode($responseContent, true); return new JsonResponse($responseData, $e->getStatusCode()); } catch (\Exception $e) { return new JsonResponse(['error' => 'An error occurred.', 'message' => $e->getMessage()], 500); } [/code] Проблема: Несмотря на попытки правильно обработать ошибки, я продолжаю получать полный ответ JSON, отображаемый напрямую, а не специальное сообщение об ошибке. Что я здесь упускаю или делаю неправильно? Как я могу гарантировать, что конкретное сообщение об ошибке (например, «Срок действия карты истек») отображается во всплывающем окне?
У меня есть всплывающее окно javascript window.open, и я хочу, чтобы всплывающее окно закрывалось, когда пользователь нажимает клавишу ESC. Я не могу понять, как перехватить событие нажатия клавиши (и на каком объекте?), чтобы перехватить клавишу...
Использование этого кода в Chrome с URL-адресом, ориентированным на файл .jpg, всегда возвращает «text/plain», но когда я делаю то же самое в Postman, тип содержимого — image/jpeg, чего я и ожидаю. Почему выборка дает мне другой тип контента? Мне...