Я пытаюсь перехватить InvalidCreditCardException
и любое другое исключение, используя Omnipay Bridge из PayumBundle.
Я пытался:
try {
return $this->forward('PayumBundle:Capture:do', array(
'payum_token' => $captureToken,
));
} catch (\Exception $e) {
$exceptions = array();
do {
$exceptions[] = $e->getMessage();
} while ($e = $e->getPrevious());
$response = new Response(json_encode(array('status' => 'failed', 'Message' => $exceptions)));
return $response;
}
Но прежде чем код доберется до моего улова, Omnipay
выбрасывает свой собственный Исключение, когда номер кредитной карты недействителен.
В комментариях также написано:
Как правило, если вы хотите самостоятельно проверить кредитную карту с помощью настраиваемых сообщений об ошибках, вам следует использовать библиотеку проверки вашей платформы, а не этот метод.
Это именно то, что я пытаюсь сделать, как я могу проверить карту с пользовательской ошибкой, используя Symfony PayumBundle исключение?
Пожалуйста, не отвечайте на этот вопрос, давая ссылку, как первый ответ ниже. Я ценю его помощь, но это не помогает мне использовать это исключение в моем коде.
Очень важно
Я пытаюсь лучше понять PayumBundle, поэтому мне нужно понять, что я делаю неправильно, и шаги (не на английском языке, а в реальном примере кода с объяснением), которые я должен предпринять, чтобы поймать исключение в моем действии и отобразить удобное для пользователя сообщение. . Пожалуйста, поймите, я действительно новичок в symfony, и я пытаюсь учиться, если вы собираетесь попросить меня создать сервис и сделать то или иное, то это мне не поможет, пожалуйста, посмотрите пример здесь, я очень ценю помощь, но тогда я действительно теряюсь.
Обратите внимание, что если введен правильный номер кредита, транзакция проходит нормально, это только исключение, которое мне нужно отловить, когда введен неправильный номер карты, срок действия карты истек или что-то еще.
Если это поможет, вот как выглядит мой config.yml
contexts:
paypal:
paypal_express_checkout_nvp:
username: %paypal_username%
password: %paypal_password%
signature: %paypal_signature%
sandbox: %paypal_sandbox%
stripe_omnipay:
omnipay:
type: Stripe
options:
apiKey: xxxx
testMode: true
extensions:
PaymentExtension:
class: Payum\Core\Extension\PaymentExtention