要确认您的集成能否正常工作,可以在不转移任何资金的情况下,在测试模式 或沙盒 中用特殊的值来模拟交易。
测试卡充当假信用卡,并允许您模拟以下几种情况:
测试非银行卡支付的方式与此类似。每个支付方式 都有其自己的特殊值。由于速率限制 ,不建议使用测试环境对您的集成进行负载测试。相关替代方案请参阅负载测试 。
如何使用测试卡 每次使用测试卡时,请在所有 API 调用中使用测试 API 密钥 。无论是提供可交互测试的支付表单,还是编写测试代码,都该这样做。
常见错误 请勿使用真实的银行卡信息。Stripe 服务协议 禁止在真实模式下用真实支付方式详情进行测试。请使用您的测试 API 密钥和下面的卡号。
交互测试 交互测试时,使用一个卡号,例如 4242 4242 4242 4242 。在管理平台或任意支付表单中输入该卡号。
使用有效的未来日期,例如 12/34 。 使用任意三位数 CVC(American Express 卡为四位)。 其他表单字段可以使用任意值。 用测试卡卡号 4242 4242 4242 4242 交互式地测试表单
测试代码 编写测试代码时,请使用 PaymentMethod
(例如 pm_card_visa )而非卡号。不建议直接在 API 调用或服务器端代码中使用这些卡号,即使是在测试环境中。如果一定要使用它们,您的代码在上线时可能会出现不合规的情况。默认情况下,PaymentMethod
不会附加到 Customer 。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2
:" \
-d amount = 500 \
-d currency = gbp \
-d payment_method = pm_card_visa \
-d "payment_method_types[]" = card
多数集成已不再使用令牌,但我们提供了测试用的令牌,例如 tok_visa ,方便您在需要时使用。
准备好将您的集成上线时,将您测试用的可发布的 API 密钥 换成真实密钥即可。如果您的集成仍在使用您的测试 API 密钥,则您不能处理真实付款。
银行卡(按品牌) 要模拟特定银行卡品牌的成功付款,请使用以下列表中的测试卡。
注意 跨境费用根据发卡行所在的国家/地区进行评估。若发卡行所在的国家/地区非美国(如 JCB 和银联)的卡片可能会被收取跨境费用,即使在测试环境中也不例外。
品牌 PaymentMethod
Visa pm_ card_ visa
Visa(借记卡) pm_ card_ visa_ debit
Mastercard pm_ card_ mastercard
Mastercard(借记卡) pm_ card_ mastercard_ debit
Mastercard(预付卡) pm_ card_ mastercard_ prepaid
American Express pm_ card_ amex
Discover pm_ card_ discover
Diners Club pm_ card_ diners
JCB pm_ card_ jcb
银联 pm_ card_ unionpay
多数 Cartes Bancaires 和销售点电子转账卡是与 Visa 或 Mastercard 联名的。下表中的测试卡模拟的是使用联名卡成功付款的情形。
品牌 PaymentMethod Cartes Bancaires/Visa pm_ card_ visa_ cartesBancaires
Cartes Bancaires/Mastercard pm_ card_ mastercard_ cartesBancaires
澳大利亚销售点电子转账 / Visa pm_ card_ visa_ debit_ eftposAuCoBranded
澳大利亚销售点电子转账 / Mastercard pm_ card_ mastercard_ debit_ eftposAuCoBranded
银行卡(按国家/地区) 要模拟特定国家的成功付款,使用以下部分的测试卡。
国家/地区 PaymentMethod 品牌
美洲 美国 (US) pm_ card_ us
Visa 阿根廷 (AR) pm_ card_ ar
Visa 巴西 (BR) pm_ card_ br
Visa 加拿大 (CA) pm_ card_ ca
Visa 智利 (CL) pm_ card_ cl
Visa 哥伦比亚 (CO) pm_ card_ co
Visa 哥斯达黎加 (CR) pm_ card_ cr
Visa 厄瓜多尔 (EC) pm_ card_ ec
Visa 墨西哥 (MX) pm_ card_ mx
Visa 巴拿马 (PA) pm_ card_ pa
Visa 巴拉圭 (PY) pm_ card_ py
Visa 秘鲁 (PE) pm_ card_ pe
Visa 乌拉圭 (UY) pm_ card_ uy
Visa 欧洲和中东 阿联酋 (AE) pm_ card_ ae
Visa 阿联酋 (AE) pm_ card_ ae_ mastercard
Mastercard 奥地利 (AT) pm_ card_ at
Visa 比利时 (BE) pm_ card_ be
Visa 保加利亚 (BG) pm_ card_ bg
Visa 白俄罗斯 (BY) pm_ card_ by
Visa 克罗地亚 (HR) pm_ card_ hr
Visa 塞浦路斯 (CY) pm_ card_ cy
Visa 捷克 (CZ) pm_ card_ cz
Visa 丹麦 (DK) pm_ card_ dk
Visa 爱沙尼亚 (EE) pm_ card_ ee
Visa 芬兰 (FI) pm_ card_ fi
Visa 法国 (FR) pm_ card_ fr
Visa 德国 (DE) pm_ card_ de
Visa 直布罗陀 (GI) pm_ card_ gi
Visa 希腊 (GR) pm_ card_ gr
Visa 匈牙利 (HU) pm_ card_ hu
Visa 爱尔兰 (IE) pm_ card_ ie
Visa 意大利 (IT) pm_ card_ it
Visa 拉脱维亚 (LV) pm_ card_ lv
Visa 列支敦士登 (LI) pm_ card_ li
Visa 立陶宛 (LT) pm_ card_ lt
Visa 卢森堡 (LU) pm_ card_ lu
Visa 马耳他 (MT) pm_ card_ mt
Visa 荷兰 (NL) pm_ card_ nl
Visa 挪威 (NO) pm_ card_ no
Visa 波兰 (PL) pm_ card_ pl
Visa 葡萄牙 (PT) pm_ card_ pt
Visa 罗马尼亚 (RO) pm_ card_ ro
Visa 斯洛文尼亚 (SI) pm_ card_ si
Visa 斯洛伐克 (SK) pm_ card_ sk
Visa 西班牙 (ES) pm_ card_ es
Visa 瑞典 (SE) pm_ card_ se
Visa 瑞士 (CH) pm_ card_ ch
Visa 英国 (GB) pm_ card_ gb
Visa 英国 (GB) pm_ card_ gb_ debit
Visa(借记卡) 英国 (GB) pm_ card_ gb_ mastercard
Mastercard 亚太地区 2 澳大利亚 (AU) pm_ card_ au
Visa 中国内地 (CN) pm_ card_ cn
Visa 香港 (HK) pm_ card_ hk
Visa 印度 (IN) pm_ card_ in
Visa 日本 (JP) pm_ card_ jp
Visa 日本 (JP) pm_ card_ jcb
JCB 马来西亚 (my) pm_ card_ my
Visa 新西兰 (NZ) pm_ card_ nz
Visa 新加坡 (SG) pm_ card_ sg
Visa 中国台湾 (TW) pm_ card_ tw
Visa 泰国 (TH) pm_ card_ th_ credit
Visa(信用卡) 泰国 (TH) pm_ card_ th_ debit
Visa(借记卡)
拒绝付款的情形 要通过模拟发卡行因各种原因拒绝的付款来测试您的集成的错误处理逻辑,请使用此部分的测试卡。使用包含给定错误代码 和拒付代码 的银行卡错误 中的这些结果之一。
常见错误 要模拟一个错误的银行卡安全码 (CVC),您必须提供一个任意三位数的 CVC。如果不提供 CVC,Radar 不会执行 CVC 检查,因此检查不会失败。
描述 卡号 错误代码 拒付代码
一般拒付 pm_ card_ visa_ chargeDeclined
card_ declined
generic_ decline
资金不足拒付 pm_ card_ visa_ chargeDeclinedInsufficientFunds
card_ declined
insufficient_ funds
失卡拒付 pm_ card_ visa_ chargeDeclinedLostCard
card_ declined
lost_ card
被盗卡拒付 pm_ card_ visa_ chargeDeclinedStolenCard
card_ declined
stolen_ card
过期卡拒付 pm_ card_ chargeDeclinedExpiredCard
expired_ card
不适用 错误 CVC 拒付 pm_ card_ chargeDeclinedIncorrectCvc
incorrect_ cvc
不适用 处理错误拒付 pm_ card_ chargeDeclinedProcessingError
processing_ error
不适用 因超过速率限制而被拒绝 pm_ card_ visa_ chargeDeclinedVelocityLimitExceeded
card_ declined
card_ velocity_ exceeded
不能将上表中的卡绑定到 Customer 对象。要通过成功绑定的卡模拟拒绝付款的情形,请使用下面这张卡。
描述 PaymentMethod 详情 绑定后拒付 pm_ card_ chargeCustomerFail
此卡成功绑定至 Customer 对象,但尝试扣款的操作失败。
欺诈预防 在付款具有高风险等级或未通过验证检查时,Stripe 的欺诈预防系统 Radar 可以阻止付款。您可以用此部分的卡测试您的 Radar 设置,还可以用这些卡来测试您的集成对被阻止付款的响应情况。
每张卡模拟一些具体的风险因素。您的 Radar 设置决定着哪些风险因素会使 Radar 阻止付款。被阻止的付款会产生附有欺诈错误代码的银行卡错误 。
常见错误 要模拟失败的银行卡安全码 (CVC) 检查,您必须提供一个任意三位数的 CVC。要模拟失败的邮编检查,您必须提供任意一个有效的邮编。如果不提供这些值,Radar 不会执行相应的检查,因此检查不会失败。
描述 PaymentMethod 详情
始终阻止
pm_ card_ radarBlock
收款的风险等级为“最高”
Radar 始终会阻止付款。
最高风险
pm_ card_ riskLevelHighest
收款的风险等级为“最高”
Radar 可能根据您的设置阻止付款。
风险升高
pm_ card_ riskLevelElevated
收款的风险等级为“升高”
如果您使用 Radar 风控团队版,Radar 可能将付款放入审核队列 。
CVC 检查失败
pm_ card_ cvcCheckFail
如果您提供 CVC 号码,则 CVC 检查失败。
Radar 可能根据您的设置 阻止付款
邮编检查失败
pm_ card_ avsZipFail
如果您提供邮编,则邮编检查失败。
Radar 可能根据您的设置 阻止付款
CVC 检查失败,风险升高
pm_ card_ cvcCheckFailElevatedRisk
如果提供 CVC 编号,则 CVC 检查失败时必须显示为风险级别“升高”
Radar 可能根据您的设置 阻止它。
邮政编码检查失败,风险升高
pm_ card_ avsZipFailElevatedRisk
如果提供邮政编码,则邮政编码检查失败时必须显示为风险级别“升高”
Radar 可能根据您的设置 阻止它。
第 1 行检查失败
pm_ card_ avsLine1Fail
地址第 1 行检查失败。
付款成功,除非您用自定义 Radar 规则阻止付款 。
地址检查失败
pm_ card_ avsFail
地址的邮编检查和地址第 1 行检查均失败。
Radar 可能根据您的设置 阻止付款
地址不可用
pm_ card_ avsUnchecked
地址的邮编检查和地址第 1 行检查均不可用。
付款成功,除非您用自定义 Radar 规则阻止付款 。
数据无效 要测试无效数据造成的错误,请提供无效信息。不需要为此使用专门的测试卡。任何无效值均可。例如:
争议 要模拟有争议的交易 ,请使用此部分的测试卡。然后,模拟赢了或输了争议的情形,提供赢或输的证据 。
描述 PaymentMethod 详情 欺诈 pm_ card_ createDispute
使用默认账户设置时,收款成功,但以欺诈 为由被提出争议。完成 3DS 验证后,这类争议会受保护 。 未收到 pm_ card_ createDisputeProductNotReceived
使用默认账户设置时,收款成功,但以未收到产品 为由被提出争议。完成 3DS 验证后,这类争议不会受保护 。 查询 pm_ card_ createDisputeInquiry
使用默认账户设置时,收款成功,但以查询 为由被提出争议。 警告 pm_ card_ createIssuerFraudRecord
使用默认账户设置时,收款成功,仅会收到早期欺诈预警 。 多项争议 pm_ card_ createMultipleDisputes
使用默认账户设置时,收款成功,但被多次 提出争议。 Visa 有说服力的证据 3.0 pm_ card_ createCe3EligibleDispute
使用默认账户设置时,收款成功,但以符合 Visa 有说服力的证据 3.0 的争议 被提出争议。 Visa 合规 pm_ card_ createComplianceDispute
使用默认账户设置时,收款成功,仅会以 Visa 合规争议 为由被提出争议。
证据 要模拟赢了或输了争议的情形,请用下表中的某个证据值来响应。
证据 描述 winning_ evidence
该争议已关闭且标记为赢。收款金额和相关费用已贷记到您的账户。 losing_ evidence
该争议已关闭且标记为输。系统不会贷记您的账户。
退款 真实模式下的退款是异步的:退款可能看上去是成功的,然后会失败;也可能先是 pending
,然后成功。要模拟包含这些行为的退款,请使用此部分的测试卡。(对于其他所有测试卡,退款会立即成功,且之后不会更改状态。)
描述 PaymentMethod 详情 异步成功 pm_ card_ pendingRefund
扣款成功。如果您发起退款,其状态最初会是 pending
。一段时间后,其状态变为 succeeded
,并发送一个 refund. updated
事件 。 异步失败 pm_ card_ refundFail
扣款成功。如果您发起退款,其状态最初会是 succeeded
。一段时间后,其状态变为 failed
,并发送一个 refund. failed
事件 。
您只能使用管理平台取消银行卡退款。在真实模式下,您可以在短暂但非特定的时间内取消银行卡退款。测试环境通过允许您在 30 分钟内取消银行卡退款来模拟该时段。
可用余额 要将测试交易中的资金直接发送到您的可用余额,请使用此部分的测试卡。其他测试卡会将从成功付款得到的资金发送到您的待收余额。
描述 PaymentMethod 详情 绕过待收余额 pm_ card_ bypassPending
美国扣款成功。资金直接进入您的可用余额,绕过您的待收余额。 绕过待收余额 pm_ card_ bypassPendingInternational
国际扣款成功。资金直接进入您的可用余额,绕过您的待收余额。
3DS 验证 3DS 验证要求对信用卡交易进行额外一层验证。本节中的测试卡可供您在不同的支付流程中模拟如何触发身份验证。
只有本节中的卡可以通过模拟定义的 3DS 验证行为(如验证流程或不支持的卡)来有效测试您的 3DS 验证集成。其他 Stripe 测试卡可能仍会触发 3DS 验证,但我们会返回 attempt_ acknowledged
以绕过额外的步骤,因为 3DS 验证测试不是这些卡的目标。
不支持管理平台 对于直接在 Stripe 管理平台中创建的付款,不会发生 3DS 验证重定向,而是会使用您的集成自身的前端或调用 API。
验证和设置 要模拟包含验证的付款流程,请使用此部分的测试卡。一些卡也可以设置 为供未来付款所用,或已经这样设置了。
描述 PaymentMethod 详情
不设置即验证 pm_ card_ authenticationRequiredOnSetup
该卡要求对每笔付款进行验证,除非您将其设置 为供未来付款使用。完成设置后,它将不再要求验证。 始终验证 pm_ card_ authenticationRequired
无论是如何设置的,该卡仍要求验证所有交易。 已设置 pm_ card_ authenticationRequiredSetupForOffSession
该卡已设置为在会话外使用。该卡要求验证一次性 及其他会话内 付款。但是,所有的会话外付款都会成功,就好像该卡之前已设置 过一样。 资金不足 pm_ card_ authenticationRequiredChargeDeclinedInsufficientFunds
该卡要求验证一次性付款 。所有付款都被拒绝,且显示 insufficient_ funds
失败代码,即使已成功验证或之前设置 过也一样。
支持及可用性 有法规要求,或者您的 Radar 规则或自定义代码触发时,Stripe 会要求验证。即使是请求了验证,也并非总是执行——例如,客户的卡可能未注册,或可能发生错误。用此部分的测试卡模拟这些因素的各种组合。
3DS 验证的使用情况 结果 PaymentMethod 详情
必填 正常 pm_ card_ threeDSecure2Required
必须完成 3DS 验证,付款才能成功。默认情况下,Radar 规则会为该卡请求 3DS 验证。 必填 已拒绝 pm_ card_ threeDSecureRequiredChargeDeclined
要求 3DS 验证,但验证后付款会被拒绝,显示 card_ declined
失败代码。默认情况下,Radar 规则会为该卡请求 3DS 验证。 必填 错误 pm_ card_ threeDSecureRequiredProcessingError
要求 3DS 验证,但 3DS 验证查找请求会失败,显示处理错误。付款被拒绝,显示 card_ declined
失败代码。默认情况下,Radar 规则会为该卡请求 3DS 验证。 支持 正常 pm_ card_ threeDSecureOptional
可能仍可执行 3DS 验证,但不是必须的。默认情况下,Radar 规则不会为该卡请求 3DS 验证。 支持 错误 pm_ card_ threeDSecureOptionalProcessingError
可能仍可执行 3DS 验证,但不是必须的。但是,尝试执行 3DS 验证会导致处理错误。默认情况下,Radar 规则不会为该卡请求 3DS 验证。 支持 未注册 pm_ card_ visa
该卡支持 3DS 验证,但未在 3DS 验证中注册。即使您的 Radar 规则要求 3DS 验证,也不会提示客户进行身份验证。默认情况下,Radar 规则不会为该卡请求 3DS 验证。 不支持 pm_ card_ amex_ threeDSecureNotSupported
该卡不支持 3DS 验证,无法调用。PaymentIntent 或 SetupIntent 会在不执行验证的情况下处理。
3DS 验证移动端验证流程 在移动端付款时,可以使用多个验证流程——客户必须与 UI 中的提示信息交互。用此部分的测试卡,为测试而触发特定的验证流程。这些卡不能在基于网页的支付表单或 API 调用中使用。在上述环境中,这些卡能用,但不会触发任何特殊行为。因为这些卡在 API 调用中无法使用,我们不提供测试用的任何 PaymentMethod
或 Token
值。
验证流程 卡号 详情
带外数据 4000 5826 0000 0094 必须对所有交易进行 3DS 2.0 验证。用带外数据 (Out of Band) UI 触发验证流程。 一次性密码 4000 5826 0000 0045 必须对所有交易进行 3DS 2.0 验证。用一次性密码 (One Time Passcode) UI 触发验证流程。 单选 4000 5826 0000 0102 必须对所有交易进行 3DS 2.0 验证。用单选 (single-select) UI 触发验证流程。 多选 4000 5826 0000 0110 必须对所有交易进行 3DS 2.0 验证。用多选 (multi-select) UI 触发验证流程。
验证码验证 为防止欺诈,Stripe 可能会在支付页面上向用户显示验证码验证。用下方的测试卡模拟该流程。
描述 卡号 详情 验证码验证 4000 0000 0000 1208 如果用户正确回答了验证码验证,则收款成功。 验证码验证 4000 0000 0000 3725 如果用户正确回答了验证码验证,则收款成功。
用 PIN 码付款 用此部分的测试卡模拟涉及 PIN 码且成功地线下付款的情形。还有很多测试线下付款的选项,包括模拟的读卡器和物理测试卡。有关更多信息,请查看测试 Stripe Terminal 。
事件接收端 To test your webhook endpoint or event destination , choose one of these two options:
Perform actions in a sandbox 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 .
Send transaction emails in a sandbox After you collect the bank account details and accept a mandate, send the mandate confirmation and microdeposit verification emails in a sandbox . To do this, provide an email in the payment_ method_ data. billing_ details[email]
field in the form of {any-prefix}+test_ email@{any_ domain}
when you collect the payment method details .
测试账号 Stripe 提供了几个测试账号和相应的令牌,您可以用它们来确保您的手动输入银行账户的集成已经可以投入生产。
账号 令牌 路径号码 行为 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 注意 Don’t store real user data in sandbox Link accounts. Treat them as if they’re publicly available, because these test accounts are associated with your publishable key.
Currently, Link only works with credit cards, debit cards, and qualified US bank account purchases. Link requires domain registration .
You can create sandbox accounts for Link using any valid email address. The following table shows the fixed one-time passcode values that Stripe accepts for authenticating sandbox accounts:
值 结果 非下方所列的任意 6 位数 成功 000001 错误,验证码无效 000002 错误,验证码已过期 000003 错误,超过了最大尝试次数
多个资金来源 由于 Stripe 增加了额外的资金来源支持,因此您不需要更新您的集成。Stripe 会自动为它们提供与卡和银行账户支付相同的交易结算时间和担保。
重定向 要通过模拟使用重定向流程(例如,iDEAL)的付款来测试您的集成的直接处理逻辑,可使用支持的要求重定向 的支付方式。
要创建成功或失败的测试 PaymentIntent
:
导航到管理平台的支付方式设置部分 ,在测试环境中点击开启 ,启用受支持的支付方式。 收集付款详情。 向 Stripe 提交付款。 授权测试付款或让其失败。 确保您网站上的页面(对应于 return_ url
)提供付款的状态。
另见