> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sandbox 环境与访问 FAQ

> Waffo sandbox 是如何开通的、哪些 URL 和商户 ID 属于它、sandbox 设置向导如何工作以及每个选项会改变什么、sandbox 密钥从哪里来，以及 sandbox 与生产环境究竟是如何隔离的。

有四个页面涵盖 sandbox 相关工作，它们回答不同的问题：

| 问题 | 页面 |
| - | - |
| 用哪个 URL、哪张测试卡、怎么模拟结果？ | [Sandbox 与测试](/docs/zh/developer-docs/getting-started/sandbox)和 [Sandbox 模拟器](/docs/zh/developer-docs/tools-and-references/developer-tools/sandbox-simulator) |
| 我怎么进入、我的 sandbox 商户 ID 是什么、设置向导改变什么、什么与生产隔离？ | **本页** |
| 什么能模拟、什么不能，哪些保留金额有什么作用？ | [Sandbox 模拟限制 FAQ](/docs/zh/support/sandbox-simulation-limits-faq) |
| 上线前我必须完成什么？ | [上线检查清单](/docs/zh/developer-docs/getting-started/go-live)和[集成验收标准](/docs/zh/developer-docs/tools-and-references/references/acceptance-criteria) |

## 我需要请 Waffo 给我开一个 sandbox 吗？

不需要。sandbox 是自助的，会自动为您创建。当您
注册并提交业务信息后，会自动为您的账户开通一个默认 sandbox，
无需任何进一步请求，也无需 Waffo 员工参与。
没有需要填写的*申请*表单。

您接下来做的是可选的细化：设置向导让您告诉 Waffo
您希望 sandbox 呈现哪些产品、定价模式、市场和支付方式，
以便 sandbox 反映您实际正在构建的集成。

## 哪些 URL 是 sandbox，哪些是生产？

它们是不同主机名上的独立环境。Portal 中没有任何东西
可以在两者间切换——您登录的是其中之一。

| 层面 | Sandbox | 生产 |
| - | - | - |
| 商户 Portal | `https://dashboard-sandbox.waffo.com` | `https://dashboard.waffo.com` |
| API | `https://api-sandbox.waffo.com` | `https://api.waffo.com` |
| 托管收银台 | `https://checkout-sandbox.waffo.com` | `https://checkout.waffo.com` |
| 收银台 / 订阅管理页面 | `https://cashier-sandbox.waffo.com` | `https://cashier.waffo.com` |
| 静态资源 | `https://cdn.waffo.com` | `https://cdn.waffo.com` |

您当前登录环境的 API 地址也显示在
**商户 Portal → Integration**，所以您始终可以在
Portal 内部确认，而不是靠文档。

如果您使用 Waffo SDK，请设置 `Environment.SANDBOX` 或 `Environment.PRODUCTION`，
而不是手动编辑 URL。

## 我的防火墙或 CSP 需要放行哪些域名？

对于您自己的页面和网络策略，上面的域名就是面向客户的
完整集合。实践中：

| 您在配置什么 | 放行什么 |
| - | - |
| 服务端对 Waffo 的出站调用 | 该环境的 API 主机 |
| 打开或嵌入 Waffo 收银台的页面 | 该环境的收银台和 cashier 主机 |
| 从 Waffo 渲染的图片和 logo | 静态资源主机 |

两点值得从一开始就纳入的注意事项：

* \*\*放行主机名，不是 IP。\*\*上线检查清单建议 DNS TTL
  为 60 秒，并明确警告不要固定 Waffo 的 IP 地址；它们
  不稳定，也不公开。
* **Sandbox 和生产的主机名不同**，所以针对一个环境编写的策略
  会静默地拦截另一个。请按环境参数化主机，
  而不是硬编码。

## 我的 sandbox 和生产是同一个商户 ID 吗？

不是——sandbox 有自己的商户 ID，您在 sandbox 环境中时，
您的用户账户挂在该 sandbox 商户 ID 下。

您永远不需要猜自己在看哪一个。**商户 Portal →
Integration** 在凭证表格上方显示您当前登录环境的商户 ID，
以及该环境的 API 地址。
sandbox Portal 会话还带有一个常驻横幅，说明您
在 sandbox 中，且所有数据都是测试数据。

对您集成的影响：sandbox 凭证只能操作
sandbox 数据，生产凭证只能操作生产数据。用一个环境的 API key 认证、
却请求另一个环境主机的请求，会在凭证检查环节失败，而不是在您的业务逻辑
——确切的错误码见
[认证与签名 FAQ](/docs/zh/support/auth-signature-faq)。

## sandbox 设置向导到底改变什么？

共六步，每个选项塑造的是您的 sandbox 长什么样，而不是
它被允许做什么：

| 步骤 | 您输入的内容 | 影响 |
| - | - | - |
| 1 | 公司法定名称、官网、业务类型、注册国家 | 您 sandbox 中显示的商户身份，包括收银台页面上渲染的商户名称 |
| 2 | 产品：一次性支付、订阅，或两者 | 您的 sandbox 为哪些产品流程配置 |
| 3 | 定价策略：`GLOBAL_USD` 或 `LOCAL_CURRENCY` | 您的 sandbox 是设置为呈现单一结算币种，还是按市场本地币种定价 |
| 4 | 目标市场 | 候选支付方式列表从哪些国家抽取 |
| 5 | 支付方式 | 您的 sandbox 中启用哪些支付方式 |
| 6 | Sandbox 就绪 | 显示您的 sandbox API key 和密钥对 |

第 3 步和第 4 步共同驱动第 5 步：候选支付方式列表
由您选择的产品、定价策略和市场推导得出。如果
您期待的某种方式在第 5 步没有出现，原因几乎总是两步之前
的市场或定价选择，而不是缺少权限。

## 之后我能修改 sandbox 配置吗？编辑是追加还是替换？

可以修改，且编辑**替换整个已选集合**——不是
追加。重新提交时，您发送的选择成为完整
配置：您遗漏的任何内容都不再是其中一部分。

实际影响：编辑前，先打开当前配置，从已选内容出发，
而不是只发送您心里想的增量。只发送"新增的那个方式"
会移除其他所有内容。

## 我按了"Clear all"或"Reset"，能撤销吗？

可以——在您保存之前，两者都不会触及已保存的配置。

| 操作 | 作用 |
| - | - |
| **Clear all** | 在进行中的编辑里，取消当前所查看市场的所有支付方式选择 |
| **Reset** | 丢弃未保存的市场和支付方式变更，恢复您上次保存的配置 |

所以 `Reset` *就是* `Clear all` 的撤销，不保存直接离开页面
同样不会改动已保存的配置。两个操作都会先要求确认，
因为在未保存的编辑中，它们会破坏您进行中的
选择。

同一向导中有两个相关行为，比按钮更让人意外：更改
**产品**或**定价策略**会清空下方的支付方式和币种选择，
因为之前的选择在新选项下可能不再有效；没有任何已启用方式
的市场会从您的市场列表中移除，而不是作为空市场保留。

## 我的 sandbox 状态一直卡在 PROCESSING，每个状态是什么意思？

配置经历三个状态，只有最后一个表示
sandbox 对您可用：

| 状态 | 含义 |
| - | - |
| `PROCESSING` | 已提交；Waffo 正在异步应用 |
| `COMPLETED` | 已应用；您的账户已挂到 sandbox 商户 ID，密钥生成正在完成 |
| `ACTIVE` | 已生效；您的 Portal 会话正在 sandbox 中运行 |

因为是异步应用，短暂的 `PROCESSING` 是正常的，
向导的最后一步会轮询直到您的密钥存在，而不是让您
刷新。如果没有进展，配置记录会带有一条 Portal 展示出来的错误
信息，该失败也会在 Waffo 侧触发告警
——所以有用的做法是携您的 sandbox 商户 ID 联系集成支持，
而不是反复重新提交。

## 我的 sandbox 密钥从哪里来？我需要提交公钥吗？

Waffo 为您生成 sandbox 密钥对。向导最后一步和
**商户 Portal → Integration** 显示您的 sandbox API key、公钥和
私钥，您可以立即开始签名。

这与生产环境有意不同：

| | Sandbox | 生产 |
| - | - | - |
| 密钥对 | 由 Waffo 生成并展示给您，含私钥 | 由您生成；Waffo 从不持有您的私钥 |
| 提交公钥 | 不可用——没有什么可提交 | 由您在 Integration 页面提交，然后审核 |
| 密钥轮换和版本历史 | 不适用 | 在 Integration 页面可用 |

由此得出两条规则，均在
[上线检查清单](/docs/zh/developer-docs/getting-started/go-live)中：

* \*\*绝不要把 sandbox 密钥材料带入生产。\*\*生成一对新的
  生产密钥。私钥曾在浏览器中显示过的密钥不是
  生产机密。
* \*\*主机和凭证一起切换。\*\*它们是一组；只改一个
  不改另一个会产生看起来像代码 bug 的签名失败。

生产公钥提交、字段接受的确切格式以及轮换
如何工作，见
[生产公钥与 API 操作类型](/docs/zh/support/production-api-key-and-public-key-faq)。

## sandbox 里的费率、结算周期、提现阈值和限额是我真实的商务条款吗？

不是。sandbox 配置从默认值开通，以便流程能端到端跑通；
它不是您商务协议的副本，您在 sandbox 中看到的任何数字
都不应被理解为报价或将在生产中适用的数值。
请把 sandbox 的金额、周期和阈值当作测试*机制*的脚手架——
字段有值、计算会跑、状态会流转——并在上线后
对照您的生产配置确认实际数值。

## sandbox 连接真实的支付通道吗？

不连接。sandbox 不连接真实支付通道，也没有真实资金
流动。sandbox 收银台页面不提供真实的支付方式选择，
而是给您模拟控件，让您直接决定结果。
模拟流程对所有支付方式都相同。

这是关于 sandbox 结果最需要内化的一点：
sandbox 证明的是**您的**集成正确处理了每种结果。它
不能证明某种具体支付方式对真实终端用户的表现。
能复现什么、不能复现什么，列在
[Sandbox 模拟限制 FAQ](/docs/zh/support/sandbox-simulation-limits-faq)。

## 在 sandbox 启用某支付方式会在生产也启用吗？

不会，两个方向都不同步。sandbox 配置和生产
配置是独立的：sandbox 设置向导只存在于
sandbox Portal，从生产环境完全无法访问，您对生产配置
所做的更改也不会流回 sandbox。

所以能用某种方式交易的 sandbox 说明您的代码路径
可行——它不是权限。生产可用性取决于您的
协议，为生产启用某方式是单独的步骤；见
[支付方式开通](/docs/zh/support/payment-enrollment-faq)。

## 我的 sandbox 交易会出现在真实的结算、账单或对账文件里吗？

不会。sandbox 是拥有自己数据的独立环境；sandbox 活动
只产生 sandbox 侧记录，sandbox 导出写入
sandbox 范围的位置。您在 sandbox 中做的任何事都不会进入生产
结算批次、生产对账单或生产对账文件。

这种隔离的另一面也值得规划：sandbox 结算
记录是为了测试您的文件解析和报表而存在的，它们携带的是
由默认值推导的 sandbox 金额，而不是来自您的协议。

## 我能在 sandbox 里用真实客户的邮箱和手机号吗？

不要。验收标准已经要求参数值看起来真实
而不是 `test` 占位符，推荐的客户
邮箱形式是每个测试用户唯一的 `userId@examples.com` 风格地址——
它同时满足两项要求，且永远不会指向真实收件箱。
参数要求见
[集成验收标准](/docs/zh/developer-docs/tools-and-references/references/acceptance-criteria)。

这件事重要的两个理由，超出礼貌层面：sandbox 流程确实会产生
通知，当您需要证明某条通知已产生时，一个您不控制的地址
无法检查。请使用您拥有的地址。

## 凭证或配置变更多久生效？

不同层面，不同窗口——两者都不是即时的：

| 变更 | 何时生效 |
| - | - |
| 公钥变为 `Active` | 激活后很快；只有 `Active` 的密钥能验证签名，请求路径上使用的查询按短间隔刷新，而不是即时 |
| IP 白名单编辑 | 几乎立即；保存同时会使缓存的查询失效 |

所以凭证变更后立即进行的测试可能合理地在旧配置上
失败。如果在您轮换或激活某项后请求立刻失败，请等过上述窗口，
用完全相同的请求重试，再去调试您的签名代码。

## 我团队里谁能看到 sandbox 凭证？

Integration 页面——API key、Waffo 公钥，以及 sandbox 中
生成的私钥——需要 **Dev** 或 **Admin** 角色。该页面上的生产密钥
材料以显示/隐藏控件遮蔽，并提供无需取消遮蔽即可
复制的操作；请使用复制操作，而不是在共享屏幕或
录制的通话中显示数值。

由于 sandbox 私钥材料是设计上就会显示的，请把 sandbox
凭证当作团队共享的测试材料，把生产凭证当作
有不同处理标准的机密。它们不是同一类东西。

***

准备好测试结果而不是访问了？请继续阅读
[Sandbox 模拟限制 FAQ](/docs/zh/support/sandbox-simulation-limits-faq)了解
能复现什么，以及
[Sandbox 测试 FAQ](/docs/zh/support/sandbox-testing-faq)了解模拟器
操作演练。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.