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

如何使用Stripe与Node.js模拟失败扣款测试?

模拟Stripe失败扣款(Node环境)

当客户已绑定信用卡作为支付方式时,你可以通过Stripe提供的测试卡号创建测试用支付方式,再发起扣款来模拟各种失败场景。

核心逻辑

用Stripe官方测试卡号生成关联客户的支付方式,发起PaymentIntent扣款请求时,会自动触发对应卡号预设的失败逻辑。

常用测试卡号及对应失败场景

以下是Stripe官方提供的测试卡号,覆盖常见扣款失败情况:

  • 硬拒绝(无法重试):4000 0000 0000 0002
  • 软拒绝(可重试):4000 0000 0000 0119
  • 过期卡:4000 0000 0000 0069
  • 余额不足:4000 0000 0000 0341
  • 需要3D验证(需客户操作):4000 0000 0000 3220

Node代码示例(使用已保存的测试支付方式)

假设你已通过测试卡号为客户创建并保存了支付方式,可通过以下代码模拟失败扣款:

const stripe = require('stripe')('你的Stripe测试Secret Key');

// 替换为实际的客户ID和已保存的测试支付方式ID
const customerId = 'cus_XXXXXX';
const savedPaymentMethodId = 'pm_XXXXXX';

async function simulateFailedCharge() {
  try {
    // 创建并立即确认扣款请求
    const paymentIntent = await stripe.paymentIntents.create({
      amount: 1000, // 单位为分,代表10美元
      currency: 'usd',
      customer: customerId,
      payment_method: savedPaymentMethodId,
      confirm: true,
      automatic_payment_methods: { enabled: false },
    });
  } catch (error) {
    // 捕获并输出失败详情
    console.error('扣款失败:', error.type, error.raw.message);
    // 常见错误类型:card_declined、insufficient_funds、expired_card等
  }
}

simulateFailedCharge();

注意事项

  • 必须使用Stripe测试环境密钥(以sk_test_开头),禁止在生产环境测试
  • 若模拟3D验证场景,需在错误处理中处理requires_action状态,引导客户完成验证流程

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:07:20