Полоса исключения не работает. Предоставление ошибок Laravel вместо ошибок исключений - PullRequest
1 голос
/ 02 ноября 2019

Я использую полосовой платежный шлюз в своем проекте. Я пытаюсь отобразить ошибки исключения, когда пользователь ввел номер карты с истекшим сроком действия. но вместо того, чтобы показать мне ошибку исключения, он показывает мне ошибку laravel. Примечание: он не работает ни с какими исключениями, а только с номером карты с истекшим сроком действия.

Я использую исключение, предоставленное Stripe.

public function recharge(Request $request)
{
    $this->validate($request, [
        'amount'        => 'required',

    ]);

    $amount = $request->input('amount');
    \Stripe\Stripe::setApiKey('key_here');

    try {
        $token  = $_POST['stripeToken'];

        $charge = \Stripe\Charge::create([
            'amount'      => $amount * 100,
            'currency'    => 'usd',
            'description' => 'Example charge',
            'source'      => $token,
        ]);

        $user = User::find(Auth::user()->id);
        $user->deposit($amount);

        Session::flash('success', 'Your Wallet is recharged!');
        return back();
    } catch (\Stripe\Error\Card $e) {
        // Since it's a decline, \Stripe\Error\Card will be caught
        $body = $e->getJsonBody();
        $err  = $body['error'];

        print('Status is:' . $e->getHttpStatus() . "\n");
        print('Type is:' . $err['type'] . "\n");
        print('Code is:' . $err['code'] . "\n");

        // param is '' in this case
        print('Param is:' . $err['param'] . "\n");
        print('Message is:' . $err['message'] . "\n");
    } catch (\Stripe\Error\InvalidRequest $e) {
        return "error";
    } catch (\Stripe\Error\Authentication $e) {
        return "error";
    } catch (\Stripe\Error\ApiConnection $e) {
        // Network communication with Stripe failed
        return "error";
    } catch (\Stripe\Error\Base $e) {

        return "error";
    } catch (Exception $e) {
        return "error";
    }
}

Я хочу отобразить указанную мной ошибку в блоке catch.

1 Ответ

4 голосов
/ 02 ноября 2019

Вы не получаете исключение Stripe\Exception\CardException. Вы, вероятно, на самом деле тоже не перехватываете Exception, если только вы не указали псевдоним Exception в верхней части вашего файла.

Добавьте use Exception; перед объявлением класса вверху или измените Exception в перехватев \Exception.

Похоже, что более новая версия библиотеки stripe-php генерирует исключения из Stripe\Exception и больше не имеет пространства имен Stripe\Error FYI.

Справочник по Stripe API- Обработка ошибок

...