开发者工具
测试用信用卡号一览
汇总 Stripe、PayPal、Square、Braintree 的测试卡号,按品牌及成功/失败模式分类,支持一键复制。适用于支付功能开发与测试。
[[ labels.stripe_hint ]]
| Service | [[ labels.col_number ]] | [[ labels.col_brand ]] | [[ labels.col_behavior ]] | |
|---|---|---|---|---|
| [[ card.service ]] | [[ formatNumber(card.number) ]] | [[ card.brand ]] [[ labels['subtype_' + card.subtype] ]] | [[ behaviorLabel(card.behavior) ]] |
使用提示
- Stripe 测试模式下,CVC 填写任意 3 位数字(Amex 为 4 位),有效期填写未来任意日期,邮政编码填写任意 5 位数字即可通过。使用测试密钥不会产生真实扣款。
- 所有测试卡号均经过专门设计,可通过 Luhn 校验(卡号验证算法)。因此不会被前端验证拦截,可直接在网关端复现测试场景。
- 3D Secure(3DS) 测试需使用专用卡号。
4000002500003155会触发认证弹窗,4000000000003220用于测试 3DS 2 流程。 - 在生产环境中使用测试卡号会导致交易被拒。请务必将测试密钥与测试卡号配套使用。Stripe 的测试密钥以
sk_test_开头。
常见问题
只要与测试密钥(如
sk_test_)配合使用,就不会产生任何真实扣款。如果误用了生产密钥,即使是测试卡号也会尝试处理交易,请务必注意不要混用。在 Stripe 中,CVC 填写任意数字(Visa/Mastercard 为 3 位,Amex 为 4 位),有效期填写未来任意日期(如 12/34),邮政编码填写任意 5 位数字即可通过。PayPal、Square、Braintree 的沙盒环境同样不会严格验证这些输入值。
这是一种用于验证卡号位数和排列是否有效的计算公式。从右端起每隔一位数字乘以 2,将所有位数之和相加,若结果能被 10 整除则判定为有效。此算法能识别大多数手误,但无法判断卡片是否真实存在。
"4242..." 因重复数字而便于记忆,且经过专门设计可通过 Luhn 校验。由于 Stripe 多年来在官方文档中持续使用该号码,它已成为支付开发者之间的事实标准。
闲话 ― Luhn 算法 ― 自 1954 年守护卡号的校验机制
信用卡号末尾的"校验位"由 IBM 工程师 Hans Peter Luhn 于 1954 年设计的算法进行验证。从右端起每隔一位数字乘以 2,将所有位数之和相加,结果能被 10 整除即为有效。这一简单算法至今仍被 Visa、Mastercard、Amex 等主要品牌采用,能有效识别大多数因手误造成的输入错误。
但 Luhn 校验仅用于检测数字输入错误,无法判断卡片是否真实存在。在前端表单中使用 Luhn 校验仅是 UX 优化(即时错误提示),无法防止欺诈。真正的授权验证必须通过服务端的支付网关来完成。
测试卡号是各支付服务刻意设计为能通过 Luhn 校验的固定号码。例如 Stripe 的 4242424242424242 不仅便于记忆,也能通过 Luhn 验证。卡号本身没有实际意义,只是在 Stripe 系统内被映射到特定行为(如"成功"或"失败")。