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

如何不发起实际支付即可校验Stripe绑定银行卡是否有效且可正常使用

Stripe银行卡预校验实现方案

你要的提前验卡不需要发起真实扣款,用Stripe的预授权能力即可实现,对用户无感知,具体实现流程如下:

操作步骤

  • 首先获取用户待校验的银行卡支付方式ID:如果你的系统已经存储了用户默认绑定的支付方式ID可直接复用,否则调用stripe.customers.listPaymentMethods接口,指定type: "card"参数即可拉取该用户所有已绑定的银行卡列表。
  • 发起预授权请求校验卡片有效性,调用stripe.paymentIntents.create接口,传入参数示例如下:
    const paymentIntent = await stripe.paymentIntents.create({
      amount: 0, // 部分卡组织不支持0元授权可调整为100(对应1美元/1欧元等,单位为货币最小单位)
      currency: "usd", // 替换为你的业务对应结算货币
      customer: "cus_xxxxxx", // 替换为你持有的用户Stripe customer id
      payment_method: "pm_xxxxxx", // 替换为待校验的银行卡支付方式ID
      confirm: true, // 直接发起授权确认
      capture_method: "manual", // 标记为手动请款,不会实际扣款
      setup_future_usage: "off_session" // 标记后续为离线自动扣款,匹配你预约后扣费的场景
    });
    
  • 根据返回结果判断卡片状态:
    • 返回的PaymentIntent状态为requires_capture或succeeded:说明卡片状态正常,可正常发起后续扣款,你可以直接创建预约记录
    • 返回状态为requires_payment_method,或接口抛出卡过期、挂失、余额不足、银行拒付等异常:说明当前卡片不可用,直接提示用户更换新的银行卡即可
  • 校验完成后可主动调用stripe.paymentIntents.cancel(paymentIntent.id)取消本次预授权,即时释放用户额度,不手动取消的话预授权也会在1-7天内自动过期释放。

重要提示

不要直接通过stripe.paymentMethods.retrieve接口返回的支付方式状态判断卡片有效性,该状态仅代表卡片绑定时的有效性,后续卡片过期、被银行冻结、挂失等状态变更不会同步更新,只有发起真实的授权请求才能拿到当前最新的可用状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:06:02