You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用paypal/rest-api-sdk-php执行支付时遇400错误及银行拒付问题

问题排查与解决办法

错误原因

当银行拒绝支付时,PayPal API会抛出**PayPal\Exception\PayPalConnectionException**异常,但你的代码没有添加异常捕获逻辑,直接执行后续代码导致脚本报错终止。

解决步骤

  1. 添加异常捕获逻辑
    在执行支付的代码块外层包裹try-catch,捕获PayPal抛出的异常,处理拒付等错误场景:

    try {
        $payment = Payment::get($payment_id, $this->apiContext);
        
        $execution = new PaymentExecution();
        $execution->setPayerId($request->PayerID);
        
        // 执行支付
        $result = $payment->execute($execution, $this->apiContext);
        
        if ($result->getState() == 'approved') {
            $paypalPaymentInfos->payment_status = 1;
            $paypalPaymentInfos->transaction_id = $payment_id;
            $paypalPaymentInfos->save();
        }
    } catch (\PayPal\Exception\PayPalConnectionException $ex) {
        // 获取PayPal返回的错误详情
        $errorData = json_decode($ex->getData(), true);
        
        // 根据错误信息更新支付状态为失败
        $paypalPaymentInfos->payment_status = 0;
        $paypalPaymentInfos->error_msg = $errorData['message'] ?? '支付被银行拒绝';
        $paypalPaymentInfos->save();
        
        // 可根据业务需求返回错误提示给用户
        // echo '支付失败:' . $errorData['message'];
    } catch (\Exception $ex) {
        // 捕获其他未知异常
        $paypalPaymentInfos->payment_status = 0;
        $paypalPaymentInfos->error_msg = $ex->getMessage();
        $paypalPaymentInfos->save();
    }
    
  2. 建议迁移到新版SDK
    你当前使用的paypal/rest-api-sdk-php已被PayPal官方弃用,不再维护。推荐迁移到官方最新的PayPal Checkout SDK(v2)(包名paypal/paypal-checkout-sdk),新版SDK更稳定,支持更多新特性,能避免旧版本的潜在问题。

内容的提问来源于stack exchange,提问作者Karthikvijayaveni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:06:27