要确认您的集成应用能否正常工作,可以不转移任何资金,在测试模式下用特殊的值来模拟交易。
利用测试卡,可以模拟多种场景:
非银行卡支付方式的测试方法与此类似。每种支付方式都有自己的特殊值。由于速率限制,不建议使用测试模式对您的集成进行负载测试。可查看我们的负载测试文档。
如何使用测试卡
每次使用测试卡时,请在所有 API 调用中使用测试 API 密钥。无论是提供可交互测试的支付表单,还是编写测试代码,都该这样做。
常见错误
请勿使用真实的银行卡信息。Stripe 服务协议禁止在真实模式下用真实支付方式详情进行测试。请使用您的测试 API 密钥和下面的卡号。
交互测试
交互测试时,使用一个卡号,例如 4242 4242 4242 4242。在管理平台或任意支付表单中输入该卡号。
- 使用有效的未来日期,例如 12/34。
- 使用任意三位数 CVC(American Express 卡为四位)。
- 其他表单字段可以使用任意值。
用测试卡卡号 4242 4242 4242 4242 交互式地测试表单
测试代码
编写测试代码时,使用一个 PaymentMethod
,例如 pm_card_visa,不要使用卡号。不建议直接在 API 调用或服务器端代码中使用这些卡号,即使是在测试模式下也是这样。如果一定要使用这些卡号,您的代码在上线时可能会出现不符合 PCI 规范的情况。默认情况下,PaymentMethod
不会附到 Customer。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount=500 \
-d currency=gbp \
-d payment_method=pm_card_visa \
-d "payment_method_types[]"=card
多数集成应用已不再使用令牌,但我们提供了测试用的令牌,例如 tok_visa,方便您在需要时使用。
准备好将您的集成应用上线时,将您测试用的可发布的 API 密钥换成真实密钥即可。如果您的集成应用仍在使用您的测试 API 密钥,则您不能处理真实付款。
银行卡(按品牌)
要模拟特定银行卡品牌的成功付款,请使用以下列表中的测试卡。
注意
跨境费用根据发卡行所在的国家/地区进行评估。发行国不是美国的卡(如 JCB 和银联)可能需要支付跨境费用,即使在测试模式下也是如此。
品牌 | 卡号 | CVC | 日期 |
---|
|
---|
Visa | | 任意 3 位数 | 任意未来的日期 |
Visa(借记卡) | | 任意 3 位数 | 任意未来的日期 |
Mastercard | | 任意 3 位数 | 任意未来的日期 |
Mastercard(以 2 开头) | | 任意 3 位数 | 任意未来的日期 |
Mastercard(借记卡) | | 任意 3 位数 | 任意未来的日期 |
Mastercard(预付卡) | | 任意 3 位数 | 任意未来的日期 |
American Express | | 任意 4 位数 | 任意未来的日期 |
American Express | | 任意 4 位数 | 任意未来的日期 |
Discover | | 任意 3 位数 | 任意未来的日期 |
Discover | | 任意 3 位数 | 任意未来的日期 |
Discover(借记卡) | | 任意 3 位数 | 任意未来的日期 |
Diners Club | | 任意 3 位数 | 任意未来的日期 |
Diners Club(14 位卡号) | | 任意 3 位数 | 任意未来的日期 |
BCcard 和 DinaCard | | 任意 3 位数 | 任意未来的日期 |
JCB | | 任意 3 位数 | 任意未来的日期 |
银联 | | 任意 3 位数 | 任意未来的日期 |
银联(借记卡) | | 任意 3 位数 | 任意未来的日期 |
银联(19 位卡号) | | 任意 3 位数 | 任意未来的日期 |
多数 Cartes Bancaires 和销售点电子转账卡是与 Visa 或 Mastercard 联名的。下表中的测试卡模拟的是使用联名卡成功付款的情形。
品牌/联名品牌 | 卡号 | CVC | 日期 |
---|
Cartes Bancaires/Visa | | 任意 3 位数 | 任意未来的日期 |
Cartes Bancaires/Mastercard | | 任意 3 位数 | 任意未来的日期 |
澳大利亚销售点电子转账 / Visa | | 任意 3 位数 | 任意未来的日期 |
澳大利亚销售点电子转账 / Mastercard | | 任意 3 位数 | 任意未来的日期 |
银行卡(按国家/地区)
要模拟特定国家的成功付款,使用以下部分的测试卡。
国家/地区 | 卡号 | 品牌 |
---|
|
---|
美洲 |
美国 (US) | | Visa |
阿根廷 (AR) | | Visa |
巴西 (BR) | | Visa |
加拿大 (CA) | | Visa |
智利 (CL) | | Visa |
哥伦比亚 (CO) | | Visa |
哥斯达黎加 (CR) | | Visa |
厄瓜多尔 (EC) | | Visa |
墨西哥 (MX) | | Visa |
墨西哥 (MX) | | Carnet |
巴拿马 (PA) | | Visa |
巴拉圭 (PY) | | Visa |
秘鲁 (PE) | | Visa |
乌拉圭 (UY) | | Visa |
欧洲和中东 |
阿联酋 (AE) | | Visa |
阿联酋 (AE) | | Mastercard |
奥地利 (AT) | | Visa |
比利时 (BE) | | Visa |
保加利亚 (BG) | | Visa |
白俄罗斯 (BY) | | Visa |
克罗地亚 (HR) | | Visa |
塞浦路斯 (CY) | | Visa |
捷克 (CZ) | | Visa |
丹麦 (DK) | | Visa |
爱沙尼亚 (EE) | | Visa |
芬兰 (FI) | | Visa |
法国 (FR) | | Visa |
德国 (DE) | | Visa |
直布罗陀 (GI) | | Visa |
希腊 (GR) | | Visa |
匈牙利 (HU) | | Visa |
爱尔兰 (IE) | | Visa |
意大利 (IT) | | Visa |
拉脱维亚 (LV) | | Visa |
列支敦士登 (LI) | | Visa |
立陶宛 (LT) | | Visa |
卢森堡 (LU) | | Visa |
马耳他 (MT) | | Visa |
荷兰 (NL) | | Visa |
挪威 (NO) | | Visa |
波兰 (PL) | | Visa |
葡萄牙 (PT) | | Visa |
罗马尼亚 (RO) | | Visa |
沙特阿拉伯 (SA) | | Visa |
斯洛文尼亚 (SI) | | Visa |
斯洛伐克 (SK) | | Visa |
西班牙 (ES) | | Visa |
瑞典 (SE) | | Visa |
瑞士 (CH) | | Visa |
英国 (GB) | | Visa |
英国 (GB) | | Visa(借记卡) |
英国 (GB) | | Mastercard |
亚太地区 |
澳大利亚 (AU) | | Visa |
中国内地 (CN) | | Visa |
香港 (HK) | | Visa |
印度 (IN) | | Visa |
日本 (JP) | | Visa |
日本 (JP) | | JCB |
马来西亚 (MY) | | Visa |
新西兰 (NZ) | | Visa |
新加坡 (SG) | | Visa |
中国台湾 (TW) | | Visa |
泰国 (TH) | | Visa(信用卡) |
泰国 (TH) | | Visa(借记卡) |
拒绝付款的情形
要通过模拟发卡行因各种原因拒绝的付款来测试您的集成应用的错误处理逻辑,请使用此部分的测试卡。使用包含给定错误代码和拒付代码的银行卡错误中的这些结果之一。
常见错误
要模拟一个错误的银行卡安全码 (CVC),您必须提供一个任意三位数的 CVC。如果不提供 CVC,Radar 不会执行 CVC 检查,因此检查不会失败。
不能将上表中的卡绑定到 Customer 对象。要通过成功绑定的卡模拟拒绝付款的情形,请使用下面这张卡。
描述 | 卡号 | 详情 |
---|
绑定后拒付 | | 此卡成功绑定至 Customer 对象,但尝试扣款的操作失败。 |
欺诈预防
在付款具有高风险等级或未通过验证检查时,Stripe 的欺诈预防系统 Radar 可以阻止付款。您可以用此部分的卡测试您的 Radar 设置,还可以用这些卡来测试您的集成应用对被阻止付款的响应情况。
每张卡模拟一些具体的风险因素。您的 Radar 设置决定着哪些风险因素会使 Radar 阻止付款。被阻止的付款会产生附有欺诈错误代码的银行卡错误。
常见错误
要模拟失败的银行卡安全码 (CVC) 检查,您必须提供一个任意三位数的 CVC。要模拟失败的邮编检查,您必须提供任意一个有效的邮编。如果不提供这些值,Radar 不会执行相应的检查,因此检查不会失败。
描述 | 卡号 | 详情 |
---|
|
---|
始终阻止 | | 收款的风险等级为“最高” Radar 始终会阻止付款。 |
最高风险 | | 收款的风险等级为“最高” Radar 可能根据您的设置阻止付款。 |
风险升高 | | 收款的风险等级为“升高” 如果您使用 Radar 风控团队版,Radar 可能将付款放入审核队列。 |
CVC 检查失败 | | 如果您提供 CVC 号码,则 CVC 检查失败。 Radar 可能根据您的设置阻止付款 |
邮编检查失败 | | 如果您提供邮编,则邮编检查失败。 Radar 可能根据您的设置阻止付款 |
第 1 行检查失败 | | 地址第 1 行检查失败。 付款成功,除非您用自定义 Radar 规则阻止付款。 |
地址检查失败 | | 地址的邮编检查和地址第 1 行检查均失败。 Radar 可能根据您的设置阻止付款 |
地址不可用 | | 地址的邮编检查和地址第 1 行检查均不可用。 付款成功,除非您用自定义 Radar 规则阻止付款。 |
数据无效
要测试无效数据造成的错误,请提供无效信息。不需要为此使用专门的测试卡。任何无效值均可。例如:
争议
要模拟有争议的交易,请使用此部分的测试卡。然后,模拟赢了或输了争议的情形,提供赢或输的证据。
描述 | 卡号 | 详情 |
---|
欺诈 | | 使用默认账户设置时,收款成功,但以欺诈为由被提出争议。完成 3DS 验证后,这类争议会受保护。 |
未收到 | | 使用默认账户设置时,收款成功,但以未收到产品为由被提出争议。完成 3DS 验证后,这类争议不会受保护。 |
查询 | | 使用默认账户设置时,收款成功,但以查询为由被提出争议。 |
警告 | | 使用默认账户设置时,收款成功,仅会收到早期欺诈预警。 |
多项争议 | | 使用默认账户设置时,收款成功,但被多次提出争议。 |
Visa 有说服力的证据 3.0 | | 使用默认账户设置时,收款成功,但以符合 Visa 有说服力的证据 3.0 的争议 被提出争议。 |
证据
要模拟赢了或输了争议的情形,请用下表中的某个证据值来响应。
证据 | 描述 |
---|
winning_evidence | 该争议已关闭且标记为赢。收款金额和相关费用已贷记到您的账户。 |
losing_evidence | 该争议已关闭且标记为输。系统不会贷记您的账户。 |
退款
真实模式下的退款是异步的:退款可能看上去是成功的,然后会失败;也可能先是 pending
,然后成功。要模拟包含这些行为的退款,请使用此部分的测试卡。(对于其他所有测试卡,退款会立即成功,且之后不会更改状态。)
描述 | 卡号 | 详情 |
---|
异步成功 | | 扣款成功。如果您发起退款,其状态最初会是 pending 。一段时间后,其状态变为 succeeded ,并发送一个 refund.updated 事件。 |
异步失败 | | 扣款成功。如果您发起退款,其状态最初会是 succeeded 。一段时间后,其状态变为 failed ,并发送一个 refund.failed 事件。 |
您只能通过管理平台取消银行卡退款。在真实模式下,您可以在较短但非特定时限内取消银行卡退款。测试模式允许您在 30 分钟内取消银行卡退款,以模拟该时限的情形。
可用余额
要将测试交易中的资金直接发送到您的可用余额,请使用此部分的测试卡。其他测试卡会将从成功付款得到的资金发送到您的待收余额。
描述 | 卡号 | 详情 |
---|
绕过待收余额 | | 美国扣款成功。资金直接进入您的可用余额,绕过您的待收余额。 |
绕过待收余额 | | 国际扣款成功。资金直接进入您的可用余额,绕过您的待收余额。 |
3DS 验证
3DS 验证要求对信用卡交易进行额外一层验证。本节中的测试卡可供您在不同的支付流程中模拟如何触发身份验证。
只有本节中的卡可以通过模拟定义的 3DS 验证行为(如验证流程或不支持的卡)来有效测试您的 3DS 验证集成应用。其他 Stripe 测试卡可能仍会触发 3DS 验证,但我们会返回 attempt_acknowledged
以绕过额外的步骤,因为 3DS 验证测试不是这些卡的目标。
不支持管理平台
对于直接在 Stripe 管理平台中创建的付款,不会发生 3DS 验证重定向,而是会使用您的集成应用自身的前端或调用 API。
验证和设置
要模拟包含验证的付款流程,请使用此部分的测试卡。一些卡也可以设置为供未来付款所用,或已经这样设置了。
描述 | 卡号 | 详情 |
---|
|
---|
不设置即验证 | | 该卡要求会话外付款验证,除非您设置用它进行未来的付款。设置后,将不再要求对会话外付款进行验证。但是,使用该卡进行的会话内付款始终要求验证。 |
始终验证 | | 无论是如何设置的,该卡仍要求验证所有交易。 |
已设置 | | 该卡已设置为在会话外使用。该卡要求验证一次性及其他会话内付款。但是,所有的会话外付款都会成功,就好像该卡之前已设置过一样。 |
资金不足 | | 该卡要求验证一次性付款。所有付款都被拒绝,且显示 insufficient_funds 失败代码,即使已成功验证或之前设置过也一样。 |
支持及可用性
有法规要求,或者您的 Radar 规则或自定义代码触发时,Stripe 会要求验证。即使是请求了验证,也并非总是执行——例如,客户的卡可能未注册,或可能发生错误。用此部分的测试卡模拟这些因素的各种组合。
3DS 验证的使用情况 | 结果 | 卡号 | 详情 |
---|
|
---|
要求 3DS 验证 | 正常 | | 必须完成 3DS 验证,付款才能成功。默认情况下,Radar 规则会为该卡请求 3DS 验证。 |
要求 3DS 验证 | 已拒绝 | | 要求 3DS 验证,但验证后付款会被拒绝,显示 card_declined 失败代码。默认情况下,Radar 规则会为该卡请求 3DS 验证。 |
要求 3DS 验证 | 错误 | | 要求 3DS 验证,但 3DS 验证查找请求会失败,显示处理错误。付款被拒绝,显示 card_declined 失败代码。默认情况下,Radar 规则会为该卡请求 3DS 验证。 |
支持 3DS 验证 | 正常 | | 可能仍可执行 3DS 验证,但不是必须的。默认情况下,Radar 规则不会为该卡请求 3DS 验证。 |
支持 3DS 验证 | 错误 | | 可能仍可执行 3DS 验证,但不是必须的。但是,尝试执行 3DS 验证会导致处理错误。默认情况下,Radar 规则不会为该卡请求 3DS 验证。 |
支持 3DS 验证 | 未注册 | | 该卡支持 3DS 验证,但未在 3DS 验证中注册。即使您的 Radar 规则要求 3DS 验证,也不会提示客户进行身份验证。默认情况下,Radar 规则不会为该卡请求 3DS 验证。 |
不支持 3DS 验证 | | 该卡不支持 3DS 验证,无法调用。PaymentIntent 或 SetupIntent 会在不执行验证的情况下处理。 |
3DS 验证移动端验证流程
在移动端付款时,可以使用多个验证流程——客户必须与 UI 中的提示信息交互。用此部分的测试卡,为测试而触发特定的验证流程。这些卡不能在基于网页的支付表单或 API 调用中使用。在上述环境中,这些卡能用,但不会触发任何特殊行为。因为这些卡在 API 调用中无法使用,我们不提供测试用的任何 PaymentMethod
或 Token
值。
验证流程 | 卡号 | 详情 |
---|
|
---|
带外数据 | | 必须对所有交易进行 3DS 2.0 验证。用带外数据 (Out of Band) UI 触发验证流程。 |
一次性密码 | | 必须对所有交易进行 3DS 2.0 验证。用一次性密码 (One Time Passcode) UI 触发验证流程。 |
单选 | | 必须对所有交易进行 3DS 2.0 验证。用单选 (single-select) UI 触发验证流程。 |
多选 | | 必须对所有交易进行 3DS 2.0 验证。用多选 (multi-select) UI 触发验证流程。 |
验证码验证
为防止欺诈,Stripe 可能会在支付页面上向用户显示验证码验证。用下方的测试卡模拟该流程。
描述 | 卡号 | 详情 |
---|
验证码验证 | | 如果用户正确回答了验证码验证,则收款成功。 |
验证码验证 | | 如果用户正确回答了验证码验证,则收款成功。 |
用 PIN 码付款
用此部分的测试卡模拟涉及 PIN 码且成功地线下付款的情形。还有很多测试线下付款的选项,包括模拟的读卡器和物理测试卡。有关更多信息,请查看测试 Stripe Terminal。
事件接收端
To test event destinations, choose one of these two options:
- Perform actions in test mode that send legitimate events to your event destination. For example, to trigger the charge.succeeded event, you can use a test card that produces a successful charge.
- Trigger events using the Stripe CLI or using Stripe for Visual Studio Code.
速率限制
如果您在测试模式下的请求开始收到 429
HTTP 错误,请降低请求的频率。这些错误来自我们的速率限制器,它在测试模式下比在真实模式下更严格。
在测试模式下,我们不建议用 Stripe API 对您的集成应用进行负载测试。原因是测试模式下的负载限制器更严格,会导致您看到在生产环境中不会出现的错误。关于替代方式,请查看负载测试。
非卡支付方式
每次使用测试用的非卡支付方式时,请在所有 API 调用中使用测试 API 密钥。无论是提供可交互测试的支付表单,还是编写测试代码,都该这样做。
测试程序因支付方式而异:
Learn how to test scenarios with instant verifications using Financial Connections.
在测试模式下发送交易电子邮件
在您收集了银行账户详情并接受授权后,请在测试模式下发送授权确认和微存款验证电子邮件。为此,请在收集支付方式详情时在 payment_method_data.billing_details[email]
字段中以 {any-prefix}+test_email@{any_domain}
格式提供电子邮件地址。
Test account numbers
Stripe 提供了几个测试账号和相应的令牌,您可以用它们来确保您的手动输入银行账户的集成已经可以投入生产。
Account number | 令牌 | Routing number | 行为 |
---|
000123456789 | pm_usBankAccount_success | 110000000 | 付款成功。 |
000111111113 | pm_usBankAccount_accountClosed | 110000000 | 付款因账户已关闭失败。 |
000111111116 | pm_usBankAccount_noAccount | 110000000 | 付款因查无账户失败。 |
000222222227 | pm_usBankAccount_insufficientFunds | 110000000 | 付款因资金不足失败。 |
000333333335 | pm_usBankAccount_debitNotAuthorized | 110000000 | 付款因扣款未获授权失败。 |
000444444440 | pm_usBankAccount_invalidCurrency | 110000000 | 付款因货币无效失败。 |
000666666661 | pm_usBankAccount_failMicrodeposits | 110000000 | 付款时未能发送微额存款。 |
000555555559 | pm_usBankAccount_dispute | 110000000 | 这笔付款触发了争议。 |
000000000009 | pm_usBankAccount_processing | 110000000 | The payment stays in processing indefinitely. Useful for testing PaymentIntent cancellation. |
000777777771 | pm_usBankAccount_weeklyLimitExceeded | 110000000 | The payment fails due to payment amount causing the account to exceed its weekly payment volume limit. |
在测试交易完成之前,您需要验证所有付款能够自动成功或失败的测试账户。为此,请使用下面测试用的微存款金额或描述符代码。
测试微存款金额和描述符代码
要模拟不同的场景,请使用这些微存款金额_或_ 0.01 此描述符代码值。
微存款金额 | 0.01 描述代码的值 | 场景 |
---|
32 and 45 | SM11AA | 模拟验证账户。 |
10 和 11 | SM33CC | 模拟次数超过允许的验证尝试次数。 |
40 和 41 | SM44DD | 模拟微存款超时。 |
Link
注意
不要在测试模式的 Link 账户中存储真实用户数据。将其视为可公开的数据,因为这些测试账户与您的公钥有关。
Currently, Link only works with credit cards, debit cards, and qualified US bank account purchases. Link requires domain registration.
您可以用任意有效的邮件地址为 Link 创建测试模式的账户。下表显示了在验证测试模式下的账户时, Stripe 接受的一次性固定密码值:
值 | 结果 |
---|
非下方所列的任意 6 位数 | 成功 |
000001 | 错误,验证码无效 |
000002 | 错误,验证码已过期 |
000003 | 错误,超过了最大尝试次数 |
多个资金来源
由于 Stripe 增加了额外的资金来源支持,因此您不需要更新您的集成。Stripe 会自动为它们提供与卡和银行账户支付相同的交易结算时间和担保。
重定向
要通过模拟使用重定向流程(例如,iDEAL)的付款来测试您的集成应用的直接处理逻辑,可使用支持的要求重定向的支付方式。
要创建成功或失败的测试 PaymentIntent
:
- 导航到管理平台的支付方式设置部分,在测试模式中点击开启,启用受支持的支付方式。
- 收集付款详情。
- 向 Stripe 提交付款。
- 授权测试付款或让其失败。
确保您网站上的页面(对应于 return_url
)提供付款的状态。
另见