问题描述
如何在Cartalyst / Stripe Laravel中捕获异常并重定向到我的开机邮件。我试图在下面提到的代码中添加catch块,我想在catch块中捕获错误
<?PHP
namespace App\Http\Controllers;
use Cartalyst\Stripe\Laravel\Facades\Stripe;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
class BuyNowController extends Controller
{
public function buyNow(Request $request)
{
try {
$charge = Stripe::charges()->create([
'amount' => $request->total,'currency' => 'CAD','source' => $request->stripetoken,'description' => 'Description goes here','receipt_email' => $request->email,'Metadata' => [
'country'=>$request->country,'address'=>$request->address,'postal code'=>$request->postalcode,'data1' => 'Metadata 1','data2' => 'Metadata 2','data3' => 'Metadata 3',],]);
}
catch (CardErrorException $e) {
// save info to database for Failed
return back()->withErrors('Error! ' . $e->getMessage());
}
}
}
解决方法
您应该在try块中以throw new CardErrorException()
的形式创建一个对象。
try {
$charge = Stripe::charges()->create([
'amount' => $request->total,'currency' => 'CAD','source' => $request->stripeToken,'description' => 'Description goes here','receipt_email' => $request->email,'metadata' => [
'country'=>$request->country,'address'=>$request->address,'postal code'=>$request->postalcode,'data1' => 'metadata 1','data2' => 'metadata 2','data3' => 'metadata 3',],]);
if ({charge_error_condition}) {
throw new CardErrorException();
}
}
catch (CardErrorException $e) {
// save info to database for failed
return back()->withErrors('Error! ' . $e->getMessage());
}
,
// solve by adding \Cartalyst\Stripe\Exception\ in
// catch(\Cartalyst\Stripe\Exception\CardErrorException $e)
<?php
namespace App\Http\Controllers;
use Cartalyst\Stripe\Laravel\Facades\Stripe;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
class BuyNowController extends Controller
{
public function buyNow(Request $request)
{
try {
$charge = Stripe::charges()->create([
'amount' => $request->total,'metadata' => [
'country'=>$request->country,]);
}
// solve by addind \Cartalyst\Stripe\Exception\ before ecxeption name
catch (\Cartalyst\Stripe\Exception\CardErrorException $e) {
// save info to database for failed
return back()->withErrors('Error! ' . $e->getMessage());
}
}
}