如何在Cartalyst / Stripe Laravel中捕获异常并重定向到我的on消息?我想在catch块中捕获错误

问题描述

如何在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());
        

    } 

        
    

    }
    }