为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
回首忆惘然 2022-08-19 16:48:22
我一直在使用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消息,但它没有,所以它是否有可能捕获和处理错误以及如何?感谢您的阅读,问候。
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

例外情况可能有所不同。但是在你的代码中,你只是试图赶上一个例外,那就是.但是,如果例外是另一个呢?显然,PHP执行流不会转到您的捕获块,因此您看不到消息。在图像中,显示您的代码捕获了 。PayPal\Exception\PayPalConnectionExceptionlolPayPalHttp\HttpException


因此,您需要尝试设置多个块。这意味着您可以根据需要添加任意数量的异常,如下面的代码所示:catch


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 (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


希望这对你有所帮助!


查看完整回答
反对 回复 2022-08-19
?
墨色风雨

TA贡献1853条经验 获得超6个赞

我有一个路由问题到类,所以这就是代码在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();

    }


查看完整回答
反对 回复 2022-08-19
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信