Trong thử nghiệm của tôi về STRIPE trong một trang web, tôi đã xây dựng các mã như thế này:Bắt lỗi sọc với try/catch phương pháp 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();
}
Vấn đề là đôi khi có lỗi với các thẻ (không đánh bắt bởi các đối số "bắt" tôi có) và "try" thất bại và trang ngay lập tức đăng lỗi trong màn hình thay vì đi vào "if" và chuyển hướng trở lại checkout.php.
Tôi nên cấu trúc xử lý lỗi của mình như thế nào để nhận được lỗi và ngay lập tức chuyển hướng trở lại checkout.php và hiển thị lỗi ở đó?
Cảm ơn!
Lỗi được tạo ra:
Fatal error: Uncaught exception 'Stripe_CardError' with message 'Your card was declined.' in ............
/lib/Stripe/ApiRequestor.php on line 92
tôi đã thêm lỗi ném trên màn hình. Nó xuất phát từ một trong các lỗi xử lý tệp Stripe. Câu hỏi đặt ra là, làm cách nào tôi có thể tự mình bắt lỗi và sau đó chuyển hướng, thay vì gửi thông điệp của Stripe ... – samyb8
Tôi đã chỉnh sửa mã. Bạn không xem xét tất cả các trường hợp ngoại lệ (ví dụ ** Stripe_CarError **) và vì vậy bạn không thể bắt tất cả ngoại lệ để hiển thị thông báo lỗi của riêng bạn. –
Vấn đề là mã đi qua ApiRequestor.php (tập tin của Stripe) và nó không thành công ở đó và không tiếp tục đi qua "catches" của tôi – samyb8