调至内容部分
创建账户
或
登录
Stripe 文档徽标
/
询问人工智能
创建账户
登录
开始
付款
销售收入
平台和交易市场
资金管理
开发人员工具
概览
版本管理
更改日志
升级您的 API 版本
升级 SDK 版本
开发人员工具
SDK
API
测试
    测试您的集成
    测试用例
    沙盒
    测试 Apple Pay 和 Google Pay 的渲染效果
Workbench
事件接收端
工作流程
Stripe CLI
Stripe Shell
开发人员管理平台
代理工具包
使用大语言模型构建Stripe for Visual Studio CodeStripe 健康警报文件上传
安全与隐私
安全
隐私
扩展 Stripe
Stripe 应用程序
Stripe Connector
合作伙伴
合作伙伴生态
合作伙伴认证
首页开发人员工具Testing

测试

模拟付款,测试您的集成。

复制页面

要确认您的集成能否正常工作,可以在不转移任何资金的情况下,在测试模式或沙盒中用特殊的值来模拟交易。

测试卡充当假信用卡,并允许您模拟以下几种情况:

  • 按卡品牌或国家/地区成功付款
  • 因银行拒付、欺诈或无效数据造成的卡错误
  • 争议和退款
  • 用 3DS 验证和 PIN 验证

测试非银行卡支付的方式与此类似。每个支付方式都有其自己的特殊值。由于速率限制,不建议使用测试环境对您的集成进行负载测试。相关替代方案请参阅负载测试。

如何使用测试卡

每次使用测试卡时,请在所有 API 调用中使用测试 API 密钥。无论是提供可交互测试的支付表单,还是编写测试代码,都该这样做。

常见错误

请勿使用真实的银行卡信息。Stripe 服务协议禁止在真实模式下用真实支付方式详情进行测试。请使用您的测试 API 密钥和下面的卡号。

交互测试

交互测试时,使用一个卡号,例如 4242 4242 4242 4242。在管理平台或任意支付表单中输入该卡号。

  • 使用有效的未来日期,例如 12/34。
  • 使用任意三位数 CVC(American Express 卡为四位)。
  • 其他表单字段可以使用任意值。
该支付表单示例显示了如何输入测试卡卡号。卡号为 "4242 4242 4242 4242",有效期是 "12/34",CVC 是 "567"。其他字段具有任意值。例如,邮件地址可以写 "test@example.com"

用测试卡卡号 4242 4242 4242 4242 交互式地测试表单

测试代码

编写测试代码时,请使用 PaymentMethod(例如 pm_card_visa)而非卡号。不建议直接在 API 调用或服务器端代码中使用这些卡号,即使是在测试环境中。如果一定要使用它们,您的代码在上线时可能会出现不合规的情况。默认情况下,PaymentMethod 不会附加到 Customer。

Command Line
cURL
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 和银联)的卡片可能会被收取跨境费用,即使在测试环境中也不例外。

品牌卡号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
欧洲和中东

安全提示

强客户认证规范要求对欧洲经济区内的线上付款进行 3DS 验证。这个部分的测试卡模拟的付款会在进行验证的情况下成功。还建议使用 3DS 测试卡测试涉及身份呢验证的场景。

阿联酋 (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(借记卡)

HSA 和 FSA 测试卡

以下是用于模拟使用健康储蓄账户 (HSA) 和灵活支出账户 (FSA) 进行交易的测试卡号。这些账户通常用于支付医疗费用,使用它们进行测试可确保您的应用程序能正确处理与医疗保健相关的交易。

品牌/类型卡号CVC日期
维萨灵活支出账户 (FSA) 卡任意 3 位数任意未来的日期
维萨健康储蓄账户 (HSA) 卡任意 3 位数任意未来的日期
万事达卡灵活支出账户 (FSA) 卡任意 3 位数任意未来的日期

拒绝付款的情形

要通过模拟发卡行因各种原因拒绝的付款来测试您的集成的错误处理逻辑,请使用此部分的测试卡。使用包含给定错误代码和拒付代码的银行卡错误中的这些结果之一。

常见错误

要模拟一个错误的银行卡安全码 (CVC),您必须提供一个任意三位数的 CVC。如果不提供 CVC,Radar 不会执行 CVC 检查,因此检查不会失败。

描述卡号错误代码拒付代码
一般拒付card_declinedgeneric_decline
资金不足拒付card_declinedinsufficient_funds
失卡拒付card_declinedlost_card
被盗卡拒付card_declinedstolen_card
过期卡拒付expired_card不适用
错误 CVC 拒付incorrect_cvc不适用
处理错误拒付processing_error不适用
错误卡号拒付incorrect_number不适用
因超过速率限制而被拒绝card_declinedcard_velocity_exceeded

不能将上表中的卡绑定到 Customer 对象。要通过成功绑定的卡模拟拒绝付款的情形,请使用下面这张卡。

描述卡号详情
绑定后拒付此卡成功绑定至 Customer 对象,但尝试扣款的操作失败。

欺诈预防

在付款具有高风险等级或未通过验证检查时,Stripe 的欺诈预防系统 Radar 可以阻止付款。您可以用此部分的卡测试您的 Radar 设置,还可以用这些卡来测试您的集成对被阻止付款的响应情况。

每张卡模拟一些具体的风险因素。您的 Radar 设置决定着哪些风险因素会使 Radar 阻止付款。被阻止的付款会产生附有欺诈错误代码的银行卡错误。

常见错误

要模拟失败的银行卡安全码 (CVC) 检查,您必须提供一个任意三位数的 CVC。要模拟失败的邮编检查,您必须提供任意一个有效的邮编。如果不提供这些值,Radar 不会执行相应的检查,因此检查不会失败。

描述卡号详情

始终阻止

收款的风险等级为“最高”

Radar 始终会阻止付款。

最高风险

收款的风险等级为“最高”

Radar 可能根据您的设置阻止付款。

风险升高

收款的风险等级为“升高”

如果您使用 Radar 风控团队版,Radar 可能将付款放入审核队列。

CVC 检查失败

如果您提供 CVC 号码,则 CVC 检查失败。

Radar 可能根据您的设置阻止付款

邮编检查失败

如果您提供邮编,则邮编检查失败。

Radar 可能根据您的设置阻止付款

CVC 检查失败,风险升高

如果提供 CVC 编号,则 CVC 检查失败时必须显示为风险级别“升高”

Radar 可能根据您的设置阻止付款

邮政编码检查失败,风险升高

如果提供邮政编码,则邮政编码检查失败时必须显示为风险级别“升高”

Radar 可能根据您的设置阻止它。

第 1 行检查失败

地址第 1 行检查失败。

付款成功,除非您用自定义 Radar 规则阻止付款。

地址检查失败

地址的邮编检查和地址第 1 行检查均失败。

Radar 可能根据您的设置阻止付款

地址不可用

地址的邮编检查和地址第 1 行检查均不可用。

付款成功,除非您用自定义 Radar 规则阻止付款。

数据无效

要测试无效数据造成的错误,请提供无效信息。不需要为此使用专门的测试卡。任何无效值均可。例如:

  • invalid_expiry_month:使用一个无效的月份,例如13。
  • invalid_expiry_year:使用过去最长 50 年中的一个年份,例如95。
  • invalid_cvc:使用一个两位数卡号,例如99。
  • incorrect_number: 使用不能通过 Luhn 检查的卡号,例如 。

争议

要模拟有争议的交易,请使用此部分的测试卡。然后,模拟赢了或输了争议的情形,提供赢或输的证据。

描述卡号详情
欺诈使用默认账户设置时,收款成功,但以欺诈为由被提出争议。完成 3DS 验证后,这类争议会受保护。
未收到使用默认账户设置时,收款成功,但以未收到产品为由被提出争议。完成 3DS 验证后,这类争议不会受保护。
查询使用默认账户设置时,收款成功,但以查询为由被提出争议。
警告使用默认账户设置时,收款成功,仅会收到早期欺诈预警。
多项争议使用默认账户设置时,收款成功,但被多次提出争议。
Visa 有说服力的证据 3.0使用默认账户设置时,收款成功,但以符合 Visa 有说服力的证据 3.0 的争议 被提出争议。
Visa 合规使用默认账户设置时,收款成功,仅会以 Visa 合规争议为由被提出争议。

证据

要模拟赢了或输了争议的情形,请用下表中的某个证据值来响应。

  • 如果您用 API 进行响应,请以 uncategorized_text 传递此表中的值。
  • 如果您在管理平台中响应,请在其他信息字段输入此表中的值。然后,点击提交证据。
证据描述
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 2.0 验证。

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。

描述卡号详情
离线 PIN 码该卡模拟的付款,会提示持卡人输入离线 PIN。这个方式产生的扣款,它的 cardholder_verification_method 会设置为 offline_pin。
离线 PIN 码重试模拟一个触发了 SCA 的重试流程,持卡人最初的非接触式扣款失败,然后读卡器提示用户插入卡并输入离线 PIN。这个方式产生的扣款,它的 cardholder_verification_method 会设置为 offline_pin。
在线 PIN 码该卡模拟的付款,会提示持卡人输入在线 PIN。这个方式产生的扣款,它的 cardholder_verification_method 会设置为 online_pin。
在线 PIN 码重试模拟一个触发了 SCA 的重试流程,持卡人最初的非接触式扣款失败,然后读卡器提示用户插入卡并输入在线 PIN。这个方式产生的扣款,它的 cardholder_verification_method 会设置为 online_pin。

事件接收端

要测试您的 Webhook 端点或事件接收端,请选择以下两种选项之一:

  1. 在沙盒中执行操作,将合法事件发送到您的事件接收端。例如,要触发 charge.succeeded 事件,您可以使用一个产生成功收款的测试卡。
  2. 用 Stripe CLI 触发事件或使用 Stripe 的 Visual Studio Code。

速率限制

如果您在测试环境中的请求中开始收到 429 HTTP 错误,请降低它们的频率。这些错误来自我们的速率限制器,它在测试环境中比在真实模式下更严格。

在测试环境中,我们不建议用 Stripe API 对您的集成应用进行负载测试。原因是测试环境中的负载限制器更严格,会导致您在生产环境中看到不希望看到的错误。关于替代方式,请查看负载测试。

非卡支付方式

每次使用测试用的非卡支付方式时,请在所有 API 调用中使用测试 API 密钥。无论是提供可交互测试的支付表单,还是编写测试代码,都该这样做。

测试程序因支付方式而异:

了解如何使用 Financial Connections 进行即时验证来测试各种场景。

在沙盒中发送交易电子邮件

在您收集了银行账户详情并接受授权后,在沙盒中发送授权确认和微存款验证电子邮件。

如果您的域名为 “example.com”,则使用邮件格式(如 info+testing@example.com)来测试非银行卡付款。您可以将“info”换成一个标准的本地术语,例如“support”。此格式可确保电子邮件正确路由。

常见错误

您需要激活您的 Stripe 账户后才能在测试时触发这些邮件。

测试账号

Stripe 提供了几个测试账号和相应的令牌,您可以用它们来确保您的手动输入银行账户的集成已经可以投入生产。

账号令牌路径号码行为
000123456789pm_usBankAccount_success110000000付款成功。
000111111113pm_usBankAccount_accountClosed110000000付款因账户已关闭失败。
000000004954pm_usBankAccount_riskLevelHighest110000000由于高欺诈风险,该支付被 Radar 阻止了。
000111111116pm_usBankAccount_noAccount110000000付款因查无账户失败。
000222222227pm_usBankAccount_insufficientFunds110000000付款因资金不足失败。
000333333335pm_usBankAccount_debitNotAuthorized110000000付款因扣款未获授权失败。
000444444440pm_usBankAccount_invalidCurrency110000000付款因货币无效失败。
000666666661pm_usBankAccount_failMicrodeposits110000000付款时未能发送微额存款。
000555555559pm_usBankAccount_dispute110000000这笔付款触发了争议。
000000000009pm_usBankAccount_processing110000000付款无限期地停留在处理状态。对测试 PaymentIntent cancellation 很有用。
000777777771pm_usBankAccount_weeklyLimitExceeded110000000付款因支付金额导致账户超过每周支付限额失败了。

在测试交易完成之前,您需要验证所有付款能够自动成功或失败的测试账户。为此,请使用下面测试用的微存款金额或描述符代码。

测试微存款金额和描述符代码

要模拟不同的场景,请使用这些微存款金额_或_ 0.01 此描述符代码值。

微存款金额0.01 描述代码的值场景
32 和 45SM11AA模拟验证账户。
10 和 11SM33CC模拟次数超过允许的验证尝试次数。
40 和 41SM44DD模拟微存款超时。

测试结算行为

测试交易会即时结算并添加到您的可用测试余额中。该行为与真实模式不同,真实模式的交易可能需要数天才能结算到您的可用余额中。

Link

注意

不要在沙盒 Link 账户中存储真实用户数据。将其视为可公开的数据,因为这些测试账户与您的公钥有关。

目前 Link 仅支持用信用卡、借记卡以及符合条件的美国银行账户进行购买。Link 需要域名注册。

您可以用任意有效的邮件地址为 Link 创建沙盒账户。下表显示的是 Stripe 接受的在验证沙盒账户时可使用的一次性固定密码值:

值结果
非下方所列的任意 6 位数成功
000001错误,验证码无效
000002错误,验证码已过期
000003错误,超过了最大尝试次数

多个资金来源

由于 Stripe 增加了额外的资金来源支持,因此您不需要更新您的集成。Stripe 会自动为它们提供与卡和银行账户支付相同的交易结算时间和担保。

重定向

要通过模拟使用重定向流程(例如,iDEAL)的付款来测试您的集成的直接处理逻辑,可使用支持的要求重定向的支付方式。

要创建成功或失败的测试 PaymentIntent:

  1. 导航到管理平台的支付方式设置部分,在测试环境中点击开启,启用受支持的支付方式。
  2. 收集付款详情。
  3. 向 Stripe 提交付款。
  4. 授权测试付款或让其失败。

确保您网站上的页面(对应于 return_url)提供付款的状态。

另见

  • 测试您的 Connect 集成
  • 测试您的 Billing 集成
  • 测试您的 Terminal 集成
  • 负载测试
此页面的内容有帮助吗?
是否
需要帮助?联系支持。
加入我们的早期使用计划。
查看我们的更改日志。
有问题?联系销售。
LLM? Read llms.txt.
Powered by Markdoc
相关指南
测试用例
API 密钥