Stripe Try / Catch块在Laravel 5中为AJAX请求返回500

时间:2016-07-22 19:35:57

标签: php ajax laravel

我一直在努力让Stripe卡错误与我的AJAX调用一起正常工作。它返回500错误,而不是返回一些不错的JSON。当然,我需要能够显示错误供用户查看。我不确定这是否是特定的Laravel所以我认为值得一提。这是我的try / catch块:

public function charge($type, $amount, $isSubscription = false)
    {
        try {
            Charge::create([
                'amount' => $amount,
                'currency' => 'usd',
                'description' => $type,
                'customer' => $this->customer['id'],
            ]);
        } catch (\Stripe\Error\Card $e) {
            $body = $e->getJsonBody();
            dd($body); // This does not work
        }

似乎我从未到达dd()代码块,但我在控制台中得到500,当我预览错误时,它就像Laravel异常一样在html中。我尝试使用echo json_encode()来返回错误,但是,如果我甚至没有进入dd()部分,那么我永远不会达到echo json_encode。< / p>

这是我的AJAX电话:

$.ajax({
  url: url,
  data: data,
  type: 'POST',
  dataType: 'JSON',
  success: function (data) {
    console.log(data);
    _.showSuccess();
    _.clearForm();
  },
  error: function (response) {
    _.hideSubmitProcessing();
    console.log(response); // This is returning html and a 500 in the console
  }
});

以下是控制台中错误的屏幕截图: enter image description here

我一直在看这个太长时间,def需要另一双眼睛来帮助我。

1 个答案:

答案 0 :(得分:1)

我知道这是一篇过时的文章,如果有人还在寻找,这里是解决方法:

\ Stripe \ Exception \ CardException -现在,这已被用作任何条纹卡异常的主要异常。

 } catch (\Stripe\Exception\CardException $e) {
        return response()->json([
            'status' => 5,
            'message' => $e->getMessage()
        ]);
    } catch (Exception $e) {
        return response()->json([
            'status' => 5,
            'message' => $e->getMessage()
        ]);
    }