podczas moich testów paskowych w witrynie, I zbudował kodu:Catching błędy naszywka z try/catch metody 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();
}
Problem polega na tym, że czasami występuje błąd z kartą (nie przechwycony przez argumenty "catch", które mam) i "próba" kończy się niepowodzeniem, a strona natychmiastowo wysyła błąd na ekranie zamiast do "if" i przekierowuje z powrotem do checkout.php.
W jaki sposób powinienem uporządkować obsługę błędów, więc pojawia się błąd i natychmiast przekierowuję z powrotem do checkout.php i wyświetla tam błąd?
Dzięki!
Błąd rzucony:
Fatal error: Uncaught exception 'Stripe_CardError' with message 'Your card was declined.' in ............
/lib/Stripe/ApiRequestor.php on line 92
dodałem błąd rzucony na ekranie. Pochodzi z jednego z błędów obsługi plików Stripe. Pytanie brzmiałoby, jak sam mógłbym złapać błąd, a następnie przekierować, zamiast rzucać wiadomość od Stripe'a ... – samyb8
Mam już zmodyfikowany kod. Nie uwzględniono wszystkich wyjątków (na przykład ** Stripe_CarError **), więc nie można ich wszystkich przechwycić, aby wyświetlić własny komunikat o błędzie. –
Problem polega na tym, że kod przechodzi przez ApiRequestor.php (plik Stripe'a) i tam się nie udaje i nie przechodzi dalej przez moje "połowy". – samyb8