Не удается отловить ошибки в платежном шлюзе Stripe в Codeigniter 3 - PullRequest
0 голосов
/ 08 октября 2018

Я очень плохо знаком с интеграцией платежного шлюза.У меня проблема с обнаружением ошибок.Я видел их официальную документацию для отлова ошибок, но ничего не работает.Мой платеж работает нормально, и когда я ввожу правильную информационную полосу, он берет мой платеж и успешно перенаправляет на страницу успеха, но проблема возникает, когда я пытался с неверной информацией, она не дает мне никакой ошибки, просто показывает HTTP 500 error (в производственной среде).Когда я устанавливаю error_reporting (E_ALL), он показывает мне фактические ошибки, но я не могу отловить эти ошибки в Try Catch.

Вот мой контроллер

    //check whether stripe token is not empty
    if (!empty($_POST['stripeToken'])) {
        $stripe = array(
            "secret_key" => "secret key",
            "publishable_key" => "public key"
        );

        \Stripe\Stripe::setApiKey($stripe['secret_key']);

        //add customer to stripe
        $customer = \Stripe\Customer::create(array(
                    'email' => $email,
                    'source' => $token
        ));


        try {
            $charge = \Stripe\Charge::create(array(
                        'customer' => $customer->id,
                        'amount' => $itemPrice * 100,
                        'currency' => $currency,
                        'description' => $itemNumber,
                        'metadata' => array(
                            'item_id' => $itemNumber
                        )
            ));
            $chargeJson = $charge->jsonSerialize();
        } 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\RateLimit $e) {
            // Too many requests made to the API too quickly
        } catch (\Stripe\Error\InvalidRequest $e) {

            echo "I am this error";
            $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\Authentication $e) {
            // Authentication with Stripe's API failed
            // (maybe you changed API keys recently)
        } catch (\Stripe\Error\ApiConnection $e) {
            // Network communication with Stripe failed
        } catch (\Stripe\Error\Base $e) {
            // Display a very generic error to the user, and maybe send
            // yourself an email
        } catch (Exception $e) {
            // Something else happened, completely unrelated to Stripe
        }

Вот ошибка, еслиЯ включаю сообщение об ошибке (E_ALL) Ошибка PHP .Согласно документации на Strip я должен отлавливать ошибки в блоке Try Catch, но я не могу их отследить.Он находится на локальном сервере, но на живом сервере он такой же.

...