第2章 参数配置总览:核心参数分类、必填与选填标识、参数值格式约定
本章为支付SDK参数配置的全局视图。在正式配置任何参数之前,必须理解参数的三层结构:分类决定了参数归属域;必填/选填标识决定了配置完整性;值格式约定决定了运行时解析成功率。本章提供标准总览表与快速定位指南。
适用场景
- 首次接入支付SDK时,需要系统性地了解所有可配置参数。
- 迁移或升级SDK版本时,对比旧版参数是否被弃用或新增。
- 排查初始化失败或支付异常时,认定问题是否落在参数遗漏或格式错误区域。
- 团队内多人协作配置时,统一对必填/选填项的理解。
前置条件
- 已获取当前SDK版本的参数配置清单(通常位于集成文档附录或配置文件模板中)。
- 已明确接入环境(测试/预发布/生产)对应的商户号、AppID、等基础凭据。
- 确定SDK运行平台的参数输入方式:JSON / 属性文件 / 代码初始化块。
操作步骤
- 阅读参数总览表(见下方表格),熟悉五大核心分类的边界。
- 标记必填项:将表中
必填列标注为M的参数逐条列出,优先完成配置。 - 确认选填项的影响:对于
必填列为O的参数,了解其默认值及省略后的行为变化。 - 解析值格式:按照
格式约定列的要求(如字符串长度、数字范围、日期格式、枚举关键字),准备合法值。 - 组装参数对象:按SDK要求的嵌套结构(通常是JSON键值对)填入参数并校验。
输入输出物
| 类别 | 输入物 | 输出物 |
|---|---|---|
| 文档 | 支付SDK参数配置表(官方发布) | 已填写的项目配置清单(Excel/JSON) |
| 工具 | 生成器、签名验证器 | 签名密钥对、校验结果报告 |
| 代码库 | SDK初始化代码模板 | 已注入正式参数的初始化片段 |
责任边界
- 后端开发者:负责商户参数、安全参数、接口参数的实际填写与签名运算。
- 前端或客户端开发者:负责回调参数、业务参数的配置(如支付结果通知URL)。
- 技术负责人/架构师:负责审核参数总览表,确认是否满足安全规范与业务需求。
- 测试人员:根据必填和格式约定编写参数校验用例,验证配置完全性。
记录材料
- 《项目参数配置审查表》(包含每项参数的值、来源、审批人、配置日期)
- 参数配置的Git提交记录或版本标记
- 初始化日志截图(成功加载参数后的SDK日志输出)
异常处理
| 异常场景 | 典型表现 | 处理方案 |
|---|---|---|
| 必填参数缺失 | SDK初始化报错E_PARAM_MISSING,如缺少appId |
对照总览表补全缺失项,重新加载 |
| 值格式不匹配 | 签名验签失败、日期解析异常、数值超出边界 | 按格式约定列修改值,使用示例值进行对照 |
| 选填参数被错误忽略 | 回调未触发、超时时间异常 | 若业务依赖该参数的默认值,需明确确认默认行为是否符合预期 |
| 平台与参数版本不对应 | 旧版参数名在新版SDK中废弃,或新参数未被识别 | 严格使用与SDK匹配的参数配置页 / 自动迁移工具 |
验收标准
- 所有必填参数(表内M)均已赋值且通过SDK初始化校验。
- 选填参数至少按业务需求或推荐默认值配置,无未预见行为。
- 参数值格式严格遵循表格中
格式约定:如日期为yyyy-MM-dd HH:mm:ss,金额单位为分(整数),签名类型为RSA2或HMAC-SHA256。 - SDK初始化日志无
ERROR或WARN级别的参数相关告警。
核心参数分类总览
下表覆盖支付SDK常见的五个参数域。标记M(Mandatory)为必填,O(Optional)为选填。所有示例以JSON形式呈现。
| 分类 | 参数名 | 必填 | 格式约定 | 示例 |
|---|---|---|---|---|
| 商户参数 | appId | M | 字符串,长度 16~32 位 | "appId":"wx2025abcdef123456" |
| mchId | M | 字符串,纯数字,10~15 位 | "mchId":"1491234567" |
|
| 安全参数 | apiSecret | M | Base64字符串(32字节密钥) | "apiSecret":"dGhpcyBpcyBhIHNlY3JldA==" |
| signType | O | 枚举:RSA2 / HMAC-SHA256 |
"signType":"RSA2" |
|
| 接口参数 | gatewayUrl | M | URL,以 https:// 开头,不可包含路径参数 |
"gatewayUrl":"https://api.pay.example.com/v3" |
| timeout | O | 整数,单位秒,范围 5~120 | "timeout":30 |
|
| 回调参数 | notifyUrl | M | URL,支持 HTTPS,长度≤200 | "notifyUrl":"https://yourdomain.com/pay/notify" |
| returnUrl | O | URL,仅用于前端跳转回流 | "returnUrl":"https://yourdomain.com/order/result" |
|
| 业务参数 | outTradeNo | M | 字符串,商户唯一订单号,≤64 字符 | "outTradeNo":"ORD20250315001" |
| totalAmount | M | 整数,单位分,1~100000000 | "totalAmount":100(代表1元) |
最佳实践:初次接入时先复制官方提供的示例JSON,将其中占位符逐项替换为真实值。替换完成后用JSON验证器做一次格式校验,避免括号或引号漏缺。
注意:部分选填参数如果没有显式传递,SDK会使用默认值。务必在文档中确认默认值是否与你的业务场景一致,例如
timeout 的默认值可能是 10 秒,若支付流程通常耗时更长,必须主动配置更大超时。
参数配置JSON示例(完整结构)
{
"appId": "wx2025abcdef123456",
"mchId": "1491234567",
"apiSecret": "dGhpcyBpcyBhIHNlY3JldA==",
"signType": "RSA2",
"gatewayUrl": "https://api.pay.example.com/v3",
"timeout": 30,
"notifyUrl": "https://yourdomain.com/pay/notify",
"returnUrl": "https://yourdomain.com/order/result",
"outTradeNo": "ORD20250315001",
"totalAmount": 100,
"currency": "CNY",
"subject": "示例商品描述"
}
上述JSON中
currency 和 subject 为选填参数,但强烈建议填写以提升对账清晰度。
图1:参数分类与关系 —— 五大核心参数域分别连接到中心校验节点(必填标识+格式约定),确保所有参数在配置阶段就被合法性约束。
检查清单:配置完成后,使用以下命令(伪代码)验证参数完整性:
# 假设 SDK 提供 validateConfig 方法
校验结果 = sdk.validateConfig(configObject)
if 校验结果.hasErrors():
打印 校验结果.errorList
else:
输出 "参数配置通过"