> ## 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 切到生产时到底有哪些变化、集成验收要求什么以及什么时候可以用简化模板、你这边需要做哪些技术准备，以及已经上线后如何新增国家或支付方式。

本页是一张地图。每个阶段都有各自的页面；此前缺的是一页能说清有哪些阶段、顺序如何、哪些由你自己推进的内容。

## 上线收款有哪些前置阶段？

四个，且是顺序进行的——Portal 首页会把前三个显示为按顺序解锁的卡片：

| 阶段 | 由谁推进 | 在哪里说明 |
| - | - | - |
| 1. 账户验证 | 你 | [自助注册、Sandbox 与账户验证](/docs/zh/support/getting-started-self-serve-faq) |
| 2. 对你提交材料的审核 | Waffo | 同一页——包括申请被退回意味着什么 |
| 3. 支付方式开通——你的支付方式完成登记 | Waffo，按支付方式逐个进行 | [支付方式开通](/docs/zh/support/payment-enrollment-faq) |
| 4. 集成验收 | 你，由 Waffo 确认 | 已发布的[验收标准](/docs/zh/developer-docs/tools-and-references/references/acceptance-criteria) |

从这个顺序可以得出两点：

* \*\*审核通过之前，支付方式开通无法开始。\*\*首页卡片会保持锁定并明确提示。验证尚未完成时催开通，不会有任何推进。
* **集成验收在 sandbox 中进行**，所以在阶段 3 仍在进行时你可以完成阶段 4 的全部工作。你不需要空等。

通过验证不等于可以收款——这个区别，以及如何解读每个支付方式的开通状态，见
[支付方式开通](/docs/zh/support/payment-enrollment-faq)的第一节。

## 切到生产环境时到底有哪些变化？

| 项目 | Sandbox | Production |
| - | - | - |
| API 域名 | sandbox 域名 | 生产域名 |
| SDK 环境 | `Environment.SANDBOX` | `Environment.PRODUCTION` |
| API 密钥 | sandbox 密钥 | **另一把**独立的生产密钥 |
| 签名密钥 | 预生成的一对，私钥半边可在 Portal 中看到 | 由**你**生成的一对；私钥半边永远不会展示给你，也永远不会发给 Waffo |
| 支付方式 | 你 sandbox 配置开启的那些 | 你 Payin 协议约定的那些——是另一份列表 |
| 限额与退款规则 | Sandbox 配置 | 你协议中的值——请重新读取 |
| 支付行为 | 模拟器按钮，没有真实渠道 | 真实支付方式，真实资金 |
| Merchant ID | 独立的 sandbox 商户 ID | 另一个不同的 ID——Integration 页面会标明你当前登录的是哪个 |

两个环境如何相互隔离，以及其他所有 sandbox 特有的内容，见
[Sandbox 环境与访问](/docs/zh/support/sandbox-environment-and-access-faq)。

需要特别留意的是两行密钥。**不要把 sandbox 凭证或 sandbox 密钥对带到生产环境**——它们不可互换，用了错误环境的密钥会以无效密钥失败，而不是以权限问题失败。逐项检查清单（包括生成生产密钥对的命令）在已发布的
[上线检查清单](/docs/zh/developer-docs/getting-started/go-live)；为什么会以这种方式失败，见
[我的订单被拒绝时](/docs/zh/support/order-rejection-self-diagnosis-faq)。

## 我这边需要做哪些技术准备？

已发布的[上线检查清单](/docs/zh/developer-docs/getting-started/go-live)是权威依据，其中有四项值得在这里点出来，好让你把它们排进迭代计划，而不是在切换当天才发现：

* **超时**——推荐的调用超时时间，含下限。
* **DNS**——推荐的 TTL，以及不要固定 IP 地址。
* **日志与告警**——特别是针对订单创建、订单查询和Webhook 通知处理，因为这是上线问题最先暴露的三个地方。
* **部署位置**——关于区域和延迟的建议，如果部署在中国大陆则多一步。

如果你是在 App 内集成，还有第五组内容，关于你的 WebView 必须允许什么。有几种支付方式依赖拉起外部 App、下载二维码图片或在跳转过程中保留 query 参数——见已发布的
[支付方式集成说明](/docs/zh/developer-docs/tools-and-references/references/payment-method-integration-notes)。

## 集成验收要求什么？

你在 sandbox 中跑一组用例，把结果记录到模板中，再把模板提交给你的 Waffo 技术支持群，由其确认。检查的内容包括：支付成功与失败路径、Webhook 通知处理**以及Webhook 通知幂等**、退款和订阅（如果你集成了）、你对异常场景的处理、参数质量，以及你是否持久化了正确的标识符。

两个容易漏掉的实际要点：

* \*\*有些用例是用 sandbox 预留金额复现的。\*\*它们会故意返回对应的错误。请使用已发布的列表，不要自己编金额——见
  [Sandbox 模拟器](/docs/zh/developer-docs/tools-and-references/developer-tools/sandbox-simulator)。
* \*\*你不必测试每一种支付方式。\*\*覆盖按代表性来：至少一张卡、每个国家每种类型至少一种支付方式，加上任何需要特殊参数的支付方式，以及在真机上测试钱包原生支付方式。

## 我以前集成过，这次只加一种支付方式，还要全部重做吗？

不需要——有一份**面向后续一次性支付集成的简化模板**，正是为这种情况准备的。只有你已至少通过过一次验收才能使用；首次集成使用完整模板。

它要求你先声明范围——你的商户 ID、签约产品、本次集成覆盖的支付方式和 API——然后只跑真正在范围内的用例：订单支付成功与失败、支付通知、取消、退款与退款通知，其中取消和退款仅在本次集成包含它们时才需要。两份模板及选择规则都在已发布的
[验收标准](/docs/zh/developer-docs/tools-and-references/references/acceptance-criteria)页面。

## 我已经在跑一次性支付，现在想做订阅，算第二次上线吗？

不是第二个账户，但确实是第二次集成，并且有自己的验收路径：在一次性支付模板旁边有一份独立的订阅验收模板，包含自己的用例——首期支付激活订阅、模拟续订、以及取消。

两个后果：

* 两种产品在你的协议上是分开的，所以为一次性支付签约的支付方式并不自动适用于订阅。请查看 Service → Payin 的 `Product` 列，以及支付方式配置响应中的 product 字段。
* Sandbox 允许你不用等待真实计费周期就模拟续订，续订用例就是这样跑的——见 [Sandbox 测试](/docs/zh/support/sandbox-testing-faq)。

订阅合约本身的一切——周期、重试、通知——从
[订阅 FAQ](/docs/zh/support/subscription-faq)开始。

## 上线第一天我应该关注什么？

四件事，而且全部可以由你自己查看，不需要问任何人：

| 关注点 | 在哪里看 |
| - | - |
| Webhook 通知是否到达你这边并被确认？ | Portal 的Webhook 通知日志——见[Webhook 通知日志](/docs/zh/support/portal-webhook-log-faq) |
| 订单是否被拒绝，因为什么？ | 先看错误码，再看[我的订单被拒绝时](/docs/zh/support/order-rejection-self-diagnosis-faq) |
| 支付是否在创建后失败，原因是什么？ | 交易记录上的失败码和描述——见[交易字段参考](/docs/zh/support/transaction-field-reference-faq) |
| 你自己针对订单创建、查询和Webhook 通知处理的告警是否触发？ | 你这边——这是已发布检查清单中的日志项 |

第一天就值得养成的一个习惯：\*\*以Webhook 通知或查询接口作为支付结果的权威依据，永远不要以客户跳转回你网站作为依据。\*\*为什么如此、跳转能证明和不能证明什么，见[支付结果](/docs/zh/support/payment-results-faq)。

## 上线后还能继续测试吗？

可以。Sandbox 不会消失，它仍然是不动真实资金复现问题的地方。在你的配置中把两套凭证清楚分开——判断一个凭证属于哪个环境的最快自检方法在
[哪些是我自己能改的？](/docs/zh/support/self-service-boundaries-faq)。

## 上线之后，怎么新增国家或支付方式？

机制与你拿到第一批支付方式时相同：Waffo 侧创建一条协议记录，随后它会出现在 **Service → Payin** 和支付方式配置响应中。你不需要重新配置任何东西，也没有停机——已有记录不受影响，你的集成是否需要改动，取决于你是否显式指定支付方式。这一点，以及国家与区域的问题，见
[币种与支付方式开通](/docs/zh/support/currency-and-method-enablement-faq)。

如果新支付方式需要单独登记，其状态可在支付方式开通详情中按支付方式查看——就是你首次上线前用过的同一个视图。

## 接下来我该看哪里？

| 问题 | 页面 |
| - | - |
| 逐项的生产前检查清单 | 已发布的[上线检查清单](/docs/zh/developer-docs/getting-started/go-live) |
| 注册路径每个阶段要求什么 | [自助注册、Sandbox 与账户验证](/docs/zh/support/getting-started-self-serve-faq) |
| 我的支付方式开通状态各是什么意思 | [支付方式开通](/docs/zh/support/payment-enrollment-faq) |
| 我签约了什么，限额和退款规则是什么 | [Payin 协议与交易限额](/docs/zh/support/payin-agreements-and-limits-faq) |
| 哪些设置是我可以自己改的 | [哪些是我自己能改的？](/docs/zh/support/self-service-boundaries-faq) |
| 如何在 sandbox 中测试各个场景 | [Sandbox 测试](/docs/zh/support/sandbox-testing-faq) |


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