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

PayPal Smart Buttons信用卡支付报错无法捕获的处理方案咨询

问题修复方案

错误原因

你的异常捕获逻辑失效,核心是order.capture()属于异步Promise方法,你当前代码只调用了该方法并通过.then()处理成功回调,但没有等待异步执行结果,外层的同步try/catch无法捕获Promise链抛出的异步异常,因此错误直接抛到了全局控制台。

修复代码方案

方案1:统一使用async/await语法(推荐)

直接用await等待order.capture()执行结果,外层try/catch即可正常捕获异常:

onApprove: async (data: any, actions: any) => {
  const order = await actions.order;
  this.logger.log(order);
  try {
    // 加await等待异步执行结果,异常会被外层catch捕获
    const details = await order.capture();
    this.logger.log('[PAYPAL onApprove : ]' + details);
    const payPalCreateOrderResponse: PayPalCreateOrderResponse = new PayPalCreateOrderResponse();
    payPalCreateOrderResponse.details = details;
    this.checkOutEventsStore.paymentDetails = payPalCreateOrderResponse;
  } catch (e) {
    // 这里可以正常拿到完整错误对象,解析业务错误码
    this.managePaypalError(params, e);
    this.logger.error('====> Paypal Order Capture ERROR ' + e);
    // 解析业务错误示例:
    if (e.details && Array.isArray(e.details)) {
      e.details.forEach(detail => {
        if (detail.issue === 'INSTRUMENT_DECLINED') {
          // 处理卡被拒的场景,提示用户更换支付方式
        }
        // 其他错误码按业务需求处理
      })
    }
  }
}

方案2:补充Promise的.catch回调

如果你不想修改现有then写法,直接在then后追加.catch处理异常即可:

onApprove: async (data: any, actions: any) => {
  const order = await actions.order;
  this.logger.log(order);
  order.capture().then((details: any) => {
    this.logger.log('[PAYPAL onApprove : ]' + details);
    const payPalCreateOrderResponse: PayPalCreateOrderResponse = new PayPalCreateOrderResponse();
    payPalCreateOrderResponse.details = details;
    this.checkOutEventsStore.paymentDetails = payPalCreateOrderResponse;
  }).catch(e => {
    // 这里处理异常,逻辑和上面catch块一致
    this.managePaypalError(params, e);
    this.logger.error('====> Paypal Order Capture ERROR ' + e);
  });
}

错误字段说明

PayPal返回的业务错误对象会直接挂载到捕获的异常实例上,你可以直接读取以下字段做业务处理:

  • name:错误大类,比如你遇到的UNPROCESSABLE_ENTITY代表业务校验失败
  • details:错误详情数组,每个元素包含具体错误码issue和错误描述description
  • message:通用错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:24:03