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

如何捕获Stripe中未捕获的Promise IntegrationError并执行数据库回滚

解决Stripe redirectToCheckout无法捕获IntegrationError的问题

问题原因

你遇到的Uncaught (in promise) IntegrationError是因为测试环境生成的Checkout Session ID,被搭配了生产环境的Stripe Publishable Key使用。而且这个错误属于同步抛出的验证错误,并非Promise的reject,所以你原来的.catch()只能捕获Promise异步拒绝的错误,抓不到这种同步抛出的异常。

修复方案

要同时捕获同步错误和Promise异步错误,推荐用async/await配合try/catch的写法,覆盖所有错误场景,之后在catch块里执行AJAX回滚操作即可:

修改后的代码

createCheckoutSession(formdata.get("plan"), formdata.get("email"))
  .then(async function(responseData) {
    try {
      // 调用Stripe跳转方法,同步错误会被try/catch捕获
      const result = await stripe.redirectToCheckout({
        sessionId: responseData.id
      });
      
      // 处理跳转失败的异步错误(如网络问题)
      if (result.error) {
        console.log(result.error.message);
        // 可选:此处也可根据需求执行回滚
        // await rollbackDatabaseEntries();
      }
    } catch (error) {
      // 捕获同步抛出的IntegrationError或其他异常
      console.log("支付服务连接异常: ", error);
      // 执行AJAX回滚数据库操作
      fetch('/your-rollback-endpoint', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          // 若需CSRF令牌,添加对应请求头
          // 'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content
        },
        body: JSON.stringify({
          sessionId: responseData.id,
          // 传入其他需要回滚的标识参数,比如订单ID、用户ID等
        })
      })
      .then(rollbackResponse => {
        rollbackResponse.ok ? console.log("数据库回滚成功") : console.error("数据库回滚失败");
      })
      .catch(rollbackError => {
        console.error("回滚请求发送失败: ", rollbackError);
      });
    }
  })
  .catch(function(createSessionError) {
    // 捕获createCheckoutSession本身的创建错误
    console.log("创建Checkout Session失败: ", createSessionError);
  });

额外注意事项

  • 严格区分测试/生产环境的Stripe密钥:测试环境用pk_test_xxx,生产环境用pk_live_xxx,从根源避免环境不匹配的错误。
  • 回滚接口需做好权限验证,防止恶意调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:52:38