开放平台、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/v2、service/v2 | 新版本兼容入口 |
兼容原则
- 不随意删除字段,只能新增可选字段。
- 状态值不能改语义,旧状态要保留展示和解析。
- 错误码和错误文案要兼容调用方判断。
- 老接口入参常有历史拼写或大小写问题,不能轻易“修正”。
- 外部接口必须保留幂等字段、签名字段和来源字段。
排查流程
- 根据 URL 或 code 查
apis.php/appapis.php/routes.php。 - 找到实际 service 类和方法。
- 确认调用方:App、SAAS、全车件、订单中心、第三方。
- 查接口日志表:
t_sys_apis_log*。 - 查业务表状态是否已改变。
- 如果接口返回成功但业务失败,继续查 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:登录态、
sid、JXCUID、版本兼容。 - SAAS:外部订单号、幂等、回调状态。
- 全车件:路由、导入导出、支付和退款。
- 日志:接口日志必须能按单号和来源追踪。