捕获并处理PayPal SDK HTTP 异常 PHP yii2

我一直在使用PayPal SDK,我有一个验证付款顺序的操作。


我想在事务期间捕获并处理PayPal错误,以便稍后在消息上显示它。


我尝试在捕获上添加PayPal\Exception\PayPalConnectionException,但没有任何结果。


这是它如何显示错误:


https://i.stack.imgur.com/zlRge.png


我的代码操作:


public static function actionGetorder($orderId)

{

    try 

    {

        // 3. Call PayPal to get the transaction details

        $client = PayPalClient::client();

        $response = $client->execute(new OrdersGetRequest($orderId)); //The order ID isn't valid so it will give the error


        var_dump ($response->result->payer->email_address);

        print "Status: {$response->result->status}\n";

    } 

    catch (PayPal\Exception\PayPalConnectionException $ex) 

    {

        echo "lol";

    }


}

这个想法是,在代码中,它应该显示lol消息,但它没有,所以它是否有可能捕获和处理错误以及如何?


感谢您的阅读,问候。


回首忆惘然
浏览 107回答 2
2回答

qq_遁去的一_1

例外情况可能有所不同。但是在你的代码中,你只是试图赶上一个例外,那就是.但是,如果例外是另一个呢?显然,PHP执行流不会转到您的捕获块,因此您看不到消息。在图像中,显示您的代码捕获了 。PayPal\Exception\PayPalConnectionExceptionlolPayPalHttp\HttpException因此,您需要尝试设置多个块。这意味着您可以根据需要添加任意数量的异常,如下面的代码所示:catchpublic static function actionGetorder($orderId){    try {        // 3. Call PayPal to get the transaction details        $client = PayPalClient::client();        $response = $client->execute(new OrdersGetRequest($orderId)); //The order ID isn't valid so it will give the error        var_dump ($response->result->payer->email_address);        print "Status: {$response->result->status}\n";    } catch (PayPalHttp\HttpException $e) {        echo $e->getMessage();    } catch (PayPal\Exception\PayPalConnectionException $e) {        echo $e->getMessage();    } finally {        echo 'If no exception has already been caught, show your own custom message';    }}现在的问题是,您如何知道应该使用哪些例外?好吧,可以从您在块内部使用的代码中知道它。try {}在这种情况下,请检查$client->execute(new OrdersGetRequest($orderId));引发任何异常。如果这样做,请在块中使用它们。PayPalClient::client(); orcatch希望这对你有所帮助!

墨色风雨

我有一个路由问题到类,所以这就是代码在yii2上的工作方式,我希望它能帮助别人:try     {        // $orderId = base64_decode($orderId);        $client = PayPalClient::client();        $response = $client->execute(new OrdersGetRequest($orderId));        $status = $response->result->status;        $email_cliente = $response->result->payer->email_address;        if ($status != 'COMPLETED')         {            \Yii::$app->session->setFlash('error', \Yii::t("app", "problema_pago"));            return $this->redirect(['../web/pagar']);        }    }    catch (\PayPalHttp\HttpException $e) {    echo $e->getMessage();    } catch (\PayPal\Exception\PayPalConnectionException $e) {        echo $e->getMessage();    }
打开App,查看更多内容
随时随地看视频慕课网APP