如何使用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
相关产品推荐
相关产品推荐

