Balanced-Payments Попробуйте поймать ответ

Я пытаюсь научиться настраивать платежи по кредитным картам и использовать тестовую торговую площадку Balanced Payments. Я никогда раньше не устанавливал оператор try catch, и у меня возникли проблемы с обработкой ответа.

Вот мой оператор try/catch контроллера:

try{
        $card->debits->create(array(
        "amount" => $amount,
        "appears_on_statement_as" => "test",
        "description" => $invoiceId,
        "order" => $order,
        ));

        } catch (Balanced\Errors\Declined $e) {
            $this->arrResponse['status'] = $e->getMessage();
            return Response::json($this->arrResponse);
        }
        $invoice->save();

         // send email function...
         //redirect
         $this->arrResponse['status'] = SUCCESS;
            return Response::json($this->arrResponse);

Я вижу ошибку в инструментах разработчика Chrome, но не могу сделать так, чтобы она отображалась в моем представлении.

Chrome dev tools 500 заявление об ошибке внутреннего сервера:

error: {type: "Balanced\Errors\Declined", message: "",…}
file:  "/Applications/MAMP/htdocs/testcc/vendor/balanced/balanced/src/Balanced/Errors/Error.php"
line: 42
message: ""
type: "Balanced\Errors\Declined

файл processpayment.js:

 jQuery.post(baseURL+'/processPayment', {
            uri: fundingInstrument.href,
            amount: amount,
            invoiceId: invoiceId,
        }, function(r) {
            // backend response
            if (r.status === 200) {
                $('#msgSection').empty().removeClass('alert-error alert-success').addClass('alert-success').text(' payment has been received').show();

            } else {
                // failure from backend
                $('#msgSection').empty().removeClass('alert-success').addClass('alert-warning').text('error').show();
            }
        });

Когда тестовая карта успешно обработана, все работает, и в моем представлении появляется сообщение об успешном завершении. Однако, когда я использую тестовую карту, которая была отклонена, на мое представление не отправляется сообщение. Кто-нибудь видит, что я делаю неправильно?


person retrograde    schedule 04.01.2015    source источник


Ответы (1)


попробуйте проверить набор тестов клиента balance-php, чтобы увидеть, как они используют блок try catch из здесь

поэтому ваш код будет похож.

  try{
       $card->debits->create(array(
          "amount" => $amount,
          "appears_on_statement_as" => "test",
          "description" => $invoiceId,
          "order" => $order,
        ));

  } catch (Balanced\Errors\Declined $e) {
         $this->arrResponse['status'] = $e->category_code;
         return Response::json($this->arrResponse);
  }
  $invoice->save();

  // send email function...
  //redirect
  $this->arrResponse['status'] = SUCCESS;
  return Response::json($this->arrResponse);

$e->category_code будет либо funding-destination-declined, либо authorization-failed, либо card-declined

person blitzen12    schedule 08.01.2015