开放平台、OpenAPI 与老接口兼容专题

本文整理 DGJ2.0 老开放接口、App code 映射、SAAS API、全车件显式路由和历史兼容策略。老接口通常被外部系统长期调用,改动风险高于普通页面接口。

业务目标

  • 保持历史外部接口可用。
  • 通过接口 code 映射到实际 service。
  • 支持 SAAS、全车件、APP、老开放平台等多种调用方。
  • 接口改动时兼容旧字段、旧状态和旧错误码。

入口文件

  • 开放接口入口:application/controllers/Openapi.php
  • 老接口映射:application/config/apis.php
  • App 接口映射:application/config/appapis.php
  • SAAS 接口映射:application/config/SaasApis.php
  • 全车件路由:application/config/routes.php
  • 老 API Service:application/service/api/*
  • App API Service:application/service/api/app/*
  • v2 接口:application/controllers/v2/*application/service/v2/*

接口类型

| 类型 | 入口 | 特点 | | --- | --- | --- | | 老 OpenAPI | Openapi.php + apis.php | code 到 service 映射,外部系统调用 | | App API | appapis.php | App 端 code 映射,依赖登录态和服务站 | | SAAS API | SaasApis.php | SAAS 对接 | | 全车件 | routes.php + allcarpart/* | 显式 URL 路由 | | v2 | controllers/v2service/v2 | 新版本兼容入口 |

兼容原则

  • 不随意删除字段,只能新增可选字段。
  • 状态值不能改语义,旧状态要保留展示和解析。
  • 错误码和错误文案要兼容调用方判断。
  • 老接口入参常有历史拼写或大小写问题,不能轻易“修正”。
  • 外部接口必须保留幂等字段、签名字段和来源字段。

排查流程

  1. 根据 URL 或 code 查 apis.php / appapis.php / routes.php
  2. 找到实际 service 类和方法。
  3. 确认调用方:App、SAAS、全车件、订单中心、第三方。
  4. 查接口日志表:t_sys_apis_log*
  5. 查业务表状态是否已改变。
  6. 如果接口返回成功但业务失败,继续查 Service 内部异常处理。

常用 rg 命令

rg -n "\"shm|Openapi|apis.php|SaasApis|appapis" application/config application/controllers application/service
rg -n "allcarpart|route\\['allcarpart|purchase/|sale/|storage/" application/config/routes.php application/controllers/allcarpart
rg -n "SYS_APIS_LOG|t_sys_apis_log|api log|接口日志" application
rg -n "class .* extends|public function" application/service/api application/service/api/app application/service/v2 application/controllers/v2

改动风险和回归清单

  • 老 OpenAPI:原请求字段、原响应字段、错误码。
  • App API:登录态、sidJXCUID、版本兼容。
  • SAAS:外部订单号、幂等、回调状态。
  • 全车件:路由、导入导出、支付和退款。
  • 日志:接口日志必须能按单号和来源追踪。