第3章:商户号与配置

3.1 适用场景

  • 新商户首次接入支付SDK,需完成商户号激活与绑定。
  • 存量商户因密钥泄露或安全合规要求,需轮换(rotate)。
  • 多环境(开发/测试/生产)部署时,需分别配置商户号与密钥。

3.2 前置条件

条件项验证标准
已签约支付服务并获取商户注册邮箱邮箱内收到“商户号开通通知”
企业认证资料已通过审核商户后台状态显示“已认证”
具备管理员(Admin)角色权限可访问“密钥管理”菜单项
系统环境已安装最新支付SDKSDK版本号 >= 2.1.0

3.3 操作步骤

步骤1:获取商户号

  1. 登录商户管理后台(URL由支付机构提供,通常为 https://merchant.xxx.com)。
  2. 进入「账户中心」→「商户信息」页面。
  3. 复制显示为 mch_xxxxxxxxxxxx 格式的字符串,即为商户号(Merchant ID)。
  4. 通过安全通道(企业邮箱或加密IM)下发给应用开发负责人。
提示:商户号在支付机构内全局唯一,区分大小写,必须原样复制,不要手动输入。

步骤2:生成

  1. 在商户后台进入「安全设置」→「管理」。
  2. 点击「生成新密钥」。系统弹出密钥生成规则弹窗。
  3. 确认密钥类型为HMAC-SHA256,长度32字节,编码为十六进制字符串(64字符)。
  4. 点击「确认生成」,系统返回密钥明文(仅展示一次)。
  5. 立即复制密钥并存入受管密钥库(见步骤3)。
    安全警告:密钥明文离开页面后,商户后台将不再以任何形式再次展示。丢失密钥只能重新生成,不可找回。

步骤3:密钥存储与安全规范

存储方式安全等级推荐场景
硬件安全模块(HSM)最高生产环境、金融级合规
密钥管理服务(KMS)高云原生部署、自动轮换
环境变量 + 加密配置文件中内部测试/开发环境
硬编码在源代码中不允许—
  • 密钥必须使用AES-256-GCM加密后静态存储。
  • 访问密钥的代码必须通过最小权限原则控制,仅支付模块可读取。
  • 禁止在日志、监控、报错信息中输出密钥明文或密钥推导值。
  • 密钥轮换周期:生产环境≤90天,测试环境≤180天。

步骤4:在SDK配置文件中注入参数

将商户号和密钥写入SDK初始化配置文件(YAML格式示例):

# payment_sdk_config.yaml
merchant:
  id: "mch_t8k3m1p9q2r7"
  : "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1"
  _encrypted: true
  key_store: "kms://projects/payment/locations/global/keyRings/sdk/cryptoKeys/"
timeout_ms: 5000
retry_max: 3
关键:若配置文件中存储的是加密后的密钥,需在应用启动时通过密钥服务解密并加载到内存,不可在配置文件中保存明文。

3.4 输入输出物

角色输入物输出物
商户运营商户注册资料、企业认证结果商户号(MCH ID)
安全管理员密钥生成请求(密文信封)
开发工程师商户号、加密密钥、SDK配置文件模板已注入参数的SDK配置文件

3.5 责任边界

  • 商户运营:对商户号的正确性和唯一性负责,承担因商户号泄漏导致的资金风险。
  • 安全管理员:负责密钥的生成、分发、轮换策略制定;不得将明文密钥直接传递给开发人员。
  • 开发工程师:负责SDK配置文件的结构正确性和密钥解密逻辑安全性;对配置文件版本管理负责。
  • QA测试员:验证配置在不同环境下的注入效果,确认密钥无法从运行时内存或日志中被非法读取。

3.6 记录材料

  • 商户号签收确认单(含签字或邮件回执)。
  • 密钥签发记录表:时间、操作人、密钥指纹(SHA-256摘要)、使用环境。
  • 密钥轮换计划与执行记录。
  • SDK配置文件的版本历史(Git提交记录)。

3.7 异常处理

异常场景处理措施
商户号格式不正确返回「商户号格式错误」提示,检查长度与前缀;联系运营重新获取。
密钥解密失败检查KMS权限、加密算法匹配、Base64或Hex解码是否一致;重建密钥信封。
密钥已被吊销(403响应)立即停用旧密钥,触发紧急轮换流程;更新配置文件并重启服务。
重复生成密钥导致旧密钥失效确认支付机构策略(部分机构会保留上一个有效密钥并行的过渡期);协调降级窗口。
SDK初始化报401 Unauthorized校验商户号与密钥是否匹配;确认密钥未过期;检查配置文件中是否有隐藏字符。

3.8 验收标准

  1. 功能验收:使用商户号+密钥发起一笔查询交易(如余额查询),返回200 OK且业务数据正确。
  2. 安全验收:
    • 开发者无法从代码仓库或日志中找到明文密钥。
    • 静态分析工具未检出密钥硬编码。
    • 密钥存储路径权限仅为支付服务进程可读。
  3. 文档验收:商户号签收记录、密钥生成日志、配置文件版本号三者对齐可追溯。
商户号与配置流程 商户运营 获取商户号 安全管理员 生成 密钥存储服务 HSM / KMS 开发工程师 注入SDK配置 支付SDK 解密并加载密钥 验收测试 余额查询 → 200 OK 关键安全规范:密钥仅暴露一次、禁止硬编码、强制轮换、最小权限原则 所有节点以加密通道传输,密钥存储与业务运行环境隔离