Во время моего тестирования полоски сайта, я построил такой код:Ловля ошибок нашивки с Try/Выгодой методом PHP
try {
$charge = Stripe_Charge::create(array(
"amount" => $clientPriceStripe, // amount in cents
"currency" => "usd",
"customer" => $customer->id,
"description" => $description));
$success = 1;
$paymentProcessor="Credit card (www.stripe.com)";
}
catch (Stripe_InvalidRequestError $a) {
// Since it's a decline, Stripe_CardError will be caught
$error3 = $a->getMessage();
}
catch (Stripe_Error $e) {
// Since it's a decline, Stripe_CardError will be caught
$error2 = $e->getMessage();
$error = 1;
}
if ($success!=1)
{
$_SESSION['error3'] = $error3;
$_SESSION['error2'] = $error2;
header('Location: checkout.php');
exit();
}
Проблема заключается в том, что иногда возникает ошибка с картой (не поймает по «уловным» аргументам, которые у меня есть), и «try» терпит неудачу, и страница сразу же отправляет ошибку на экране вместо перехода в «if» и перенаправляет обратно на checkout.php.
Как я должен структурировать обработку ошибок, чтобы получить ошибку и сразу перенаправить обратно на checkout.php и отобразить там ошибку?
Спасибо!
Ошибка брошено:
Fatal error: Uncaught exception 'Stripe_CardError' with message 'Your card was declined.' in ............
/lib/Stripe/ApiRequestor.php on line 92
Я добавил ошибку брошенную на экране. Он исходит из одной из ошибок обработки файлов Stripe. Вопрос будет в том, как я мог поймать ошибку сам, а затем перенаправить, а не бросать сообщение Stripe ... – samyb8
Я редактировал код. Вы не учитывали все исключения (например, ** Stripe_CarError **), и поэтому вы не можете их поймать, чтобы отобразить собственное сообщение об ошибке. –
Проблема в том, что код проходит через ApiRequestor.php (файл Stripe), и он вроде как терпит неудачу там и не продолжает проходить через мои «уловы» – samyb8