Durante il mio test di STRISCIA in un sito web, ho costruito il codice come questo:Catching errori della banda con il try/catch metodo 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();
}
Il problema è che a volte c'è un errore con la scheda (non catched con gli argomenti "catch" che ho lì) e il "try" fallisce e la pagina pubblica immediatamente l'errore nello schermo invece di entrare nel "se" e reindirizzare nuovamente a checkout.php.
Come devo strutturare la gestione degli errori in modo da ottenere l'errore e immediatamente reindirizzare nuovamente a checkout.php e visualizzare l'errore lì?
Grazie!
errore gettato:
Fatal error: Uncaught exception 'Stripe_CardError' with message 'Your card was declined.' in ............
/lib/Stripe/ApiRequestor.php on line 92
ho aggiunto l'errore gettato su schermo. Viene da uno degli errori di gestione dei file Stripe. La domanda sarebbe, come ho potuto rilevare l'errore me stesso e poi reindirizzare, invece di lanciare il messaggio di Stripe ... – samyb8
Ho modificato il codice. Non hai considerato tutte le eccezioni (ad esempio ** Stripe_CarError **) e quindi non puoi prenderle tutte per visualizzare il tuo messaggio di errore. –
Il problema è che il codice passa attraverso ApiRequestor.php (il file di Stripe) e in questo modo fallisce e non continua a passare attraverso i miei "fermi" – samyb8