我一直在努力让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
}
});
我一直在看这个太长时间,def需要另一双眼睛来帮助我。
答案 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()
]);
}