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

如何通过集成测试完成Stripe 3DS支付流程验证?

解决Stripe 3DS端到端集成测试卡壳问题

针对支付卡在「等待用户确认」状态、旧版抓取返回URL HTML的方法因Stripe页面更新失效的问题,给出以下可行方案:

方案1:用Stripe测试卡号+自动化3DS参数跳过页面验证

Stripe测试环境支持自动完成3DS验证的配置,无需处理前端页面:

  • 使用Stripe指定的测试卡号(如4000000000003220)创建Payment Method
  • 确认PaymentIntent时,添加three_d_secure自动处理参数,测试环境会直接完成3DS验证流程:
stripe.PaymentIntent.confirm(
  "pi_your_payment_intent_id",
  payment_method="pm_card_threeDSecure2Required",
  payment_method_options={
    "card": {
      "three_d_secure": {
        "preferred": "automatic"
      }
    }
  }
)

调用后,PaymentIntent会直接从requires_action转为succeeded,可直接检查订单状态。

方案2:使用Stripe Test Helper API手动推进3DS流程

如果需要模拟分步验证,可通过Stripe的Test Helper API直接触发3DS完成动作:

  • 当PaymentIntent处于requires_action状态时,调用以下接口模拟用户完成3DS验证:
curl -X POST https://api.stripe.com/v1/test_helpers/payment_intents/{PI_ID}/confirm_card_payment \
  -u sk_test_your_secret_key:

该接口会直接将PaymentIntent状态更新为succeeded,无需处理前端页面。

方案3:改用Webhook事件驱动测试逻辑

调整测试流程,依赖Stripe Webhook事件而非主动轮询:

  • 配置监听payment_intent.succeeded事件,当测试服务收到该事件后,再执行订单状态检查
  • 测试环境下可使用Stripe CLI将Webhook事件转发到本地服务,确保流程和生产环境一致

方案4:用无头浏览器模拟真实用户验证流程

如果必须模拟真实浏览器操作(比如测试前端集成),改用无头浏览器工具:

  • 使用Playwright、Puppeteer等工具,模拟真实浏览器加载3DS确认页面(Stripe的页面会校验浏览器环境,直接HTTP请求无法获取完整渲染的内容)
  • 通过无头浏览器模拟输入验证信息、点击确认等动作,完成3DS流程后再继续后续测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:23