接口控制文档 · ICD

仙津 SRM 接口规格书

第三节是 10 个既定接口的端点、字段表、报文样例与幂等口径; 第四节是九个定制场景里 6 处与外部系统的交界(汇联易费控、银企、ERP 补充接口、BOM、OA)。 拿到本文即可开始编码。

2026-09-15 ERP · 鼎捷 T100 面向 IT 开发
API 基址
xj-api.forming-ai.com.cn/api
我方出口 IP
8.159.128.124请加白名单
可立即联调
5 / 10 不必等待
贵司开发点
4 处 其余为权限与凭据
定制场景交界
6 处 见第四节

10 个接口总览

这张表回答最关心的问题:每个接口我要做什么、什么时候能开始。

#接口方向 贵司 IT 要做什么可联调依赖优先级
1ERP 物料主数据 ERP → SRM开发 推送程序 端点确认后P0
2ERP 库存快照 ERP → SRM开发 推送程序 端点确认后接口 1 先行P0
3ERP 采购订单 SRM → ERP开发 接收端 Z1Z1P0
4ERP 收货单 SRM → ERP开发 接收端 现在接口 1P0
5ERP 签收回传 ERP → SRM开发 回传程序 现在接口 3P1
6ERP 供应商主数据 SRM → ERP接收端 + 编码规则 待编码口径编码口径P1
7飞书组织架构与免登 SSO 飞书 → SRM不写代码,开权限 权限到位后飞书管理员P1
8飞书消息 / 审批卡 / 群 SRM → 飞书不写代码,开权限 现在飞书管理员P0
9电子签平台 双向确认企业账号归属 现在P2
10工商信息核验 SRM → 三方提供天眼查 Token 现在P2

读法 贵司 IT 的实际开发量集中在 4 处:接口 1/2 的推送程序、接口 3/4/6 的接收端、接口 5 的回传程序。

接口 7 / 8 不需要写代码,只需飞书管理员开通权限与凭据; 9 / 10 是凭据交接与账号确认,无开发量。

标「现在」的,SRM 侧收发端已在线上运行,今天就能开始对接测试,不必等待。

接口 1 / 2 端点地址将在联调启动前最终确认,字段表与口径已定稿、不会变推送程序可以照本文先写,届时只改一个 URL。

📌 这张表只是 10 个既定接口。 九个定制场景另有 6 处与外部系统交界(汇联易费控银企付款、 ERP 项目号 / 凭证 / 转固、BOM、OA 流程)——见 第四节那些的准备周期更长(要去找外部对接方要文档和测试环境),建议与本节并行启动。

公共约定

所有接口通用,下面逐条规格里不再重复。

2.1 基址与鉴权

API 基址https://xj-api.forming-ai.com.cn/api
我方出口 IP8.159.128.124 — 请加入 T100 白名单
入站鉴权 ERP → SRM请求头 X-Erp-Secret: <密钥>,密钥由我方生成后线下交接
出站鉴权 SRM → ERP默认 Authorization: Bearer <token>T100 若要求其他方式请提前告知,我方适配
Content-Typeapplication/json; charset=utf-8

📍 xj-api.forming-ai.com.cn 是本次为贵司对接开设的专用入口: 打开它就是本文档,/api/* 即接口。本文所有 curl 示例可直接复制执行。

注意 入站密钥未配置时,端点拒绝一切调用,不是放行。 入站是写入口,「没配就放行」等于把改动到货数据、对账金额的口子敞开。 ⇒ 联调第一步是拿到密钥,否则所有调用都返回 403。

2.2 幂等键一览

每个接口都必须可重放。我方口径:同键重放返回首次结果,不重复累加、不重复建单。

接口幂等键谁生成重放行为
1 物料主数据materialCode贵司upsert(更新,不重复建)
2 库存快照materialCode + plantCode + warehouseCode贵司upsert
4 收货单出站idempotencyKey(= receiptCode我方同键的后续报文是「更新」,不是新建
5 签收回传receiptRef贵司返回首次结果,replayed: true
对账单入站erpDocNo贵司同上

必读 接口 4 请务必按「更新」实现,不要按「新建」。 同一张收货单我方会推多次(收货 → 质检判定 → 办理入库 → 撤销入库 各触发一次)。 按新建实现的话,ERP 里会出现 3~4 张重复收货单,而两边都不会报错

2.3 排序:按报文自带的时刻,不要按到达顺序

方向字段含义
出站 我方 → ERPpushSeq单调递增的推送序号
pushedAt本次推送的时刻
入站 ERP → 我方occurredAt业务发生时刻,不是推送时刻

为什么必须有重试与补推是两条独立通道,彼此不排队,乱序到达是常态。 若按到达顺序处理,一次乱序就会用旧的结论覆盖新的,而两边都不报错。

⇒ 收货单的 receivedAt 判不出先后——它是收货时刻,多次推送里一模一样。 请用 pushSeq / pushedAt 判。

2.4 时间与数值格式

格式示例
时刻ISO-8601,UTC,带 Z2026-09-15T08:30:00Z
日期yyyy-MM-dd2026-09-15
数量 / 金额JSON number,不带千分位或单位1200.5
会计期间待双方对齐(见 2.6)2026-09 还是 202609

时区请勿省略 Z 双方机器时区不一定相同,不带时区的时刻串在跨时区比对时会静默偏移 8 小时, 而一个偏了 8 小时的到货日期看上去完全正常

2.5 错误与重试

HTTP含义贵司侧应当
200 + ok:true成功记录成功
200 + ok:false校验不通过,整批未落库errors 数组逐条修数据,不要重试
400报文结构错误修报文,不要重试
401 / 403密钥不匹配 / 密钥未配置联系我方,不要重试
404引用的单据不存在(如 batchId核对单号,不要盲目重试
5xx我方异常可重试,建议指数退避;幂等键保证安全

注意 导入类接口(1、2)是「有错整份不落」,不是部分成功。 失败回执里的 created / updated 都是 0——请勿显示成「部分成功」。 部分成功是导入场景里最难收拾的状态,我方刻意不做。

2.6 编码口径对齐 —— 最容易漏、返工最贵,请尽早提供

需贵司提供
物料编码SRM 与 T100 是否同一套?不是的话给映射规则
供应商编码ERP 编码规则;双方各存一套时,明确由谁存对方的码
品类编码以哪一套为准
工厂编码 plantCode全量清单
仓库编码 warehouseCode全量清单 + 归属工厂
计量单位 unit单位字典 + 换算关系(采购单位 ≠ 库存单位时尤其重要
币种 / 税率字典
会计期间格式2026-09 还是 202609

逐条规格

01ERP 物料主数据同步
ERP → SRMP0 最先做

为什么它排第一 物料不在 SRM 主数据里,选料、缺口补货、询价→PO 物料轴全部不可用——不是不好用,是做不到。 这一个接口卡住,下游一半功能无法验证。

POSThttps://xj-api.forming-ai.com.cn/api/erp/materials/import

⚠️ 该端点地址在联调启动前最终确认,字段表与口径已定稿、不会变 ⇒ 推送程序可以照本文先写,届时只改一个 URL。

// 请求体
{
  "source": "ERP_PUSH",
  "dryRun": false,
  "rows": [
    {
      "materialCode": "MAT-SYRUP-055",
      "materialName": "F55 果葡糖浆",
      "unit": "吨",
      "materialSpec": "浓度 77%,槽车",
      "categoryCode": "CAT-RAW-01",
      "categoryName": "原料/糖类",
      "costPrice": 3850.00,
      "active": true
    }
  ]
}
字段类型必填长度说明
sourcestring32固定 ERP_PUSH
dryRunbooltrue = 只校验不落库。联调期建议先用它试跑
materialCodestring64物料编码,唯一键
materialNamestring255物料名称
unitstring⚠️32计量单位。新物料必填;已有物料不给=不修改
materialSpecstring255规格型号
categoryCode / categoryNamestring64/255品类编码 / 名称
costPricenumber标准成本价
activebool停用必须显式给 false,见下方陷阱 1

单次上限 5000 行,超出整批拒收,请分批。

三条口径陷阱

1我方是 upsert,绝不全量覆盖。「这次没给的料」不会被删、也不会被停用。

那些料正被历史请购单 / 询价单 / 采购订单引用,删掉不报错, 历史单据会指向一个不存在的物料,而界面上只显示成空白。

⇒ 要停用某个物料,请显式给 "active": false不要靠「这次不推它」

2只覆盖本次给了值的字段,没给的保留原值。

好处:可以只推变更列。代价:「把某个字段改成空」做不到——这是刻意取舍,真要清空请单独告知。

3 批内同一个 materialCode 出现两行 → 整批报错,不静默取最后一条。 静默取最后一条会给出一个确定的错答案,而两行往往正是「改了一半」的证据。

联调验收用例

# 用例 1:dryRun 试跑 —— 应回 ok:true,且库里无变化
curl -X POST https://xj-api.forming-ai.com.cn/api/erp/materials/import \
  -H 'Content-Type: application/json' -H 'X-Erp-Secret: <密钥>' \
  -d '{"source":"ERP_PUSH","dryRun":true,"rows":[
       {"materialCode":"TEST-001","materialName":"联调测试料","unit":"个"}]}'

# 用例 2:缺 unit 的新物料      → 应回 ok:false 并点名第几行
# 用例 3:同批两行同编码        → 应回 ok:false 并指出重复
# 用例 4:正式导入后重放同一批  → created:0 / updated:N(证明幂等)
02ERP 库存快照
ERP → SRMP0

依赖:必须先完成接口 1。物料不在主数据里的库存行会被整批拒收,并点名是哪几个编码。

POSThttps://xj-api.forming-ai.com.cn/api/erp/inventory/import

⚠️ 同接口 1:端点地址在联调启动前最终确认,字段与口径不变。

{
  "source": "ERP_PUSH",
  "rows": [
    {
      "materialCode":  "MAT-SYRUP-055",
      "plantCode":     "XJ-GY-01",   "plantName":     "仙津贵阳工厂",
      "warehouseCode": "WH-RAW-A",   "warehouseName": "原料一号库",
      "onHand": 120.0, "reserved": 20.0,
      "available": 100.0, "safetyStock": 30.0
    }
  ]
}
字段类型必填说明
materialCodestring必须已存在于物料主数据
plantCodestring工厂编码
warehouseCodestring仓库编码
plantName / warehouseNamestring⚠️新库存行必填;已有行可省
onHandnumber现存量
reservednumber已占用 / 预留
availablenumber务必给可用量 —— 见陷阱 2
safetyStocknumber安全库存

唯一键materialCode + plantCode + warehouseCode。三者缺一定位不到唯一行,整行拒收。

两条口径陷阱

1「这个仓现在没货」请推一行 onHand: 0,不要不推它。

我方对「查不到行」与「查到 0」是两个分支: 前者=ERP 没同步过这个物料+工厂(缺口计算的期初库存留空);后者=真的没货(期初=0)。 两者在缺口计算与补货建议上走不同的路,而不会有任何报错

⇒ 漏推一行会把「库存为 0」静默变成「没同步过」。

2available 不给的话我方不猜。可用量直接决定缺口算出来是多少

· 同时给了 onHandreserved ⇒ 按 onHand − reserved 算,并在回执 derivedAvailable 里报出算了几行;
· 否则 ⇒ 报错。不拿 onHand 顶替——那等于假设「没有任何预留」。

推送频率建议每日一次全量 + 关键物料日内增量。 请告知 ERP 的结账 / 盘点窗口,那段时间的快照不应作为缺口计算依据。

03ERP 采购订单出站
SRM → ERPP0待 Z1 确认

待确认 本节在 Z1 确认前无法定稿。两个方向的接口形态、幂等键、状态机、谁能改单完全不同

Z1 的两种结论接口形态幂等键谁能改单
A. SRM 主导SRM → T100,贵司开接收端SRM 的 poCodeSRM 改,T100 只读
B. T100 主导T100 → SRM,贵司开推送程序T100 的订单号T100 改,SRM 只读

若定 A(SRM 推 T100),我方会推的字段

字段说明
poCodeSRM 采购订单号,幂等键
orderType订单类型:标准 / 退货 / 寄售 / 委外
supplierCode / supplierName供应商(编码口径见 2.6)
currency / totalAmount / taxRate币种、金额、税率
issuedAt下达时刻
lines[]lineNo · materialCode · materialDesc · materialSpec · unit · quantity · unitPrice · warehouseCode · requiredDate

必读回执必须带一个真实的 ERP 单号。

我方状态机对「已同步」有硬要求:只能由带真实单号的回执置位。 理由是——采购在列表上看到「已同步」就会据此认为 ERP 那头已经有单了, 而真去 ERP 里找不到时,既没有告警也没有失败记录可查

⇒ 回执格式 {"erpDocNo":"PO2609150001","message":"..."}erpDocNo 不可省略、不可为空串

勿混用 SRM 另有一条出站通道推到货计划批次poCode / batchSeq / quantity / planDate),与采购订单是不同单据、不同接口请勿复用同一个接收端

04ERP 收货单出站
SRM → ERP可立即联调P0

贵司侧工作:在 T100 开发一个接收端,把地址与 Token 给我方配置即可。
我方推送时机:扫码收货确认后自动推送;此外在质检判定、办理入库、撤销入库时各推一次。

// 我方发出的完整报文
{
  "docType": "GOODS_RECEIPT",
  "idempotencyKey": "GR-2026-0915-007",   // = receiptCode,同键=更新
  "receiptCode": "GR-2026-0915-007",
  "pushSeq": 2,                              // ← 排序用
  "pushedAt": "2026-09-15T08:30:00Z",      // ← 排序用
  "receivedAt": "2026-09-15T07:55:00Z",    // ⚠️ 多次推送里一模一样,判不出先后
  "receiver": "张仓管",
  "poCode": "PO-XJ-2609-106",
  "supplierCode": "SUP-0042", "supplierName": "某某食品",
  "asnCode": "ASN-2026-0915-003",
  "plateNo": "粤A·12345", "driverName": "李师傅",
  "lines": [
    {
      "lineNo": 1,
      "materialCode": "MAT-SYRUP-055",
      "materialDesc": "F55 果葡糖浆", "materialSpec": "浓度 77%",
      "unit": "吨", "batchNo": "B20260910", "quantity": 12.5,
      "warehouseCode": "WH-RAW-A", "warehouseName": "原料一号库",
      "productionDate": "2026-09-10", "expiryDate": "2027-03-10",
      "iqcStatus": "PASS",
      "stockedAt": "2026-09-15T09:10:00Z", "stockedQty": 12.5,
      "stockInWarehouseCode": "WH-RAW-A",
      "stockInWarehouseName": "原料一号库"
    }
  ]
}
字段组说明
idempotencyKeyreceiptCode同键的后续报文是【更新】,不是新建
pushSeq / pushedAt排序依据。请勿用 receivedAt 判先后
iqcStatus质检状态:PENDING / PASS / FAIL / CONCESSION(让步接收)
stockedAt / stockedQty / stockIn*入库办理信息,可能为 null——收货当时未办理入库即为空,后续会再推一次
warehouseCode可能为空,请接收端容忍;需要仓库维度时以 stockInWarehouseCode 为准

两条陷阱

1 同一张收货单会推多次(收货 / 判定 / 入库 / 撤销入库)。 按「新建」实现会产生重复单,而两边都不报错

2 推送失败不会让我方的收货回滚。收货是已经发生的事实,不因 ERP 不可达而撤销; 失败可人工重推 ⇒ 贵司接收端返回 5xx 是安全的,我方不会丢单。

05ERP 签收回传
ERP → SRM可立即联调P1

贵司侧工作:T100 完成签收 / 入库确认后,回传一条给我方。

POSThttps://xj-api.forming-ai.com.cn/api/erp/delivery-receipt

请求头 X-Erp-Secret: <密钥>

{
  "batchId":     "a3f2...",                  // 我方到货计划批次号,原样带回
  "receiptRef":  "T100-RCV-20260915-0007",  // ERP 收货流水号 = 幂等键
  "receivedQty": 12.5,
  "status":      "FULL",                     // 部分 / 全部
  "occurredAt":  "2026-09-15T07:55:00Z",    // ⚠️ 业务发生时刻,不是推送时刻
  "message":     "全部签收"
}
字段必填说明
batchId我方到货计划批次号——我方出站时会给,请原样带回
receiptRefERP 侧收货流水号 = 幂等键。缺它无法防重放
receivedQty实收数量
status签收状态(部分 / 全部)
occurredAt务必给业务发生时刻,不是推送时刻
message备注

回执里的两个标志位

replayed: true这是一次重放,返回首次结果、未改数据。属正常响应,不是错误。
superseded: true这条回传发生得比已记录的那条更早,已被忽略,以免用旧结论覆盖新结论。

必读幂等有两半,只做一半会被真实回调打穿。

第一半:同一个 receiptRef 重放 → 返回首次结果。
第二半不同 receiptRef、同一批次(分批签收、先部分后全部)→ 我方按 occurredAt 判新旧。

请为每一次签收动作生成一个新的 receiptRef,不要复用批次号当流水号。

06ERP 供应商主数据出站
SRM → ERPP1

贵司侧工作:开发 T100 侧接收端 + 给出供应商编码规则(后者比接口本身更卡)。
我方推送时机:供应商准入通过 / 资料变更 / 冻结解冻 / 退出。

字段说明
supplierCodeSRM 供应商编码,幂等键
supplierName / unifiedCode企业全称 / 统一社会信用代码
lifecycleStatus生命周期状态(准入中 / 合格 / 冻结 / 退出等)
category[]供货品类范围
contact联系人 / 电话 / 邮箱
bankAccounts[]开户行 / 账号 / 开户行地址
payTerms / settlementMethod付款条件、结算方式
taxNo / invoiceType税号、发票类型
changedAt / changeReason变更时刻与原因

必须先定:供应商编码由谁生成

方案说明代价
A. ERP 生成准入通过后 SRM 调 ERP 建档,ERP 回码准入流程要等 ERP 响应
B. SRM 生成SRM 建档后推 ERPERP 需接受外部编码
C. 各存一套 + 映射双方各自编码,维护对照表不推荐,见下

C 方案的代价要说在前面 两处各存一份编码,迟早出现「SRM 说是 A 家、ERP 说是 B 家」,而谁对谁错事后无法判定。 真要走 C,必须明确由哪一方存对方的码(单向,不是双向各存)。

银行账号是敏感字段,传输需 HTTPS,建议 ERP 侧对该字段做访问控制。

07飞书组织架构与免登 SSO
飞书 → SRMP1

好消息 这一项贵司 IT 不需要写代码——数据源是飞书开放平台,不是贵司自建系统。 要做的是:飞书管理员开通权限 + 提供应用凭据

目标效果:组织与账号不在 SRM 二次维护,离职消息监听自动停用。

能力需飞书管理员开通
免登 SSO
员工在飞书内打开 SRM 免密登录
获取用户基本信息;以应用 / 用户身份访问
组织架构同步
部门树 + 员工
通讯录读取:部门列表、部门下用户、用户详情
离职 / 变更事件监听 事件订阅:员工离职、员工信息变更、部门变更

贵司侧需提供

权限点的精确标识符以飞书开放平台后台为准——我方会在联调启动时给出逐条清单, 避免此处措辞与飞书后台对不上,让管理员找不到对应项。

08飞书消息、审批卡与群协同
SRM → 飞书可立即联调P0

好消息 同样不需要写代码,只需凭据与权限。

已支持的业务场景:待办推送、审批卡、供应商协同群(自动建群 + 看板卡 + 订单接单卡)、跟催消息。

贵司侧需提供 / 确认

时序 供应商群这条链一旦开启,消息会发给真实供应商。 我方所有对外发送均由开关控制、默认关闭,上线时按「先发到内部群验证渲染 → 再对外开」两步走。

09电子签平台(签署与回调)
双向可立即联调P2
平台e签宝(openapi.esign.cn
回调地址(我方接收)https://xj-api.forming-ai.com.cn/api/esign/callback
覆盖单据合同、补充协议、承诺书、合作协议

贵司侧需确认

10工商信息核验数据源
SRM → 三方可立即联调P2

SRM 已接入多个工商数据源并按优先级自动降级,用于供应商注册预填与风险扫描。

贵司侧需提供

定制场景的对接接口

九个定制场景里有 6 个要与外部系统交界。这些不在第三节那 10 个之内, 但同属本次要打通的链路,请一并纳入准备。

关键区别本节与第三节由谁出接口文档,不一样:

· 第三节多数是「我方定规格、贵司按格式推」——字段表在本文里已经给全;

· 本节多数是「我方调用贵司或第三方系统」 ⇒ 需要对方提供接口文档。本文只说明我方需要什么能力、会传什么、需要什么返回, 便于贵司去对口要文档。

4.0 一张表:哪个场景要找哪个系统

场景名称交界系统需要的对接本文位置
1预立项与立项管理ERP · 飞书项目号出站;飞书 H5 全员免登4.3① · 3.7
2物料需求运算与补货计划ERPBOM 结构 + 库存快照4.4 · 3.2
3打样测试全流程电子签小试通过自动触发签署3.9
5请款包、对账与财务集中审汇联易 · ERP请款包推送、发票回传、凭证号回写、三作业触发4.1② ③ · 4.3② ④
6预算全周期管控与费用扫码验收汇联易预算四动作(查/占/冻/释)4.1①
7不合格品隔离与整改闭环OAG013 检测流程与异常处理流程线上化4.6
8来料检验结论与电子批记录电子签检验记录签署 + 防篡改 PDF3.9
9付款执行、资产转固与非物料月结银企 · ERP付款结果回传;资产转固出站4.2 · 4.3③

4.1 汇联易费控 (场景 5 / 6)

这是本节体量最大的一块,且是我方调用汇联易 ⇒ 请提供汇联易的接口文档与测试环境

① 预算四动作 —— 场景 6

预算定位维度(四段联合定位,缺一不可)预算科目 + 成本中心 + 部门 + 年度

动作触发时点我方会传需要返回
查询额度请购填单四段定位 + 预算类型年度预算额、已占用、已使用、可用余额
占用立项四段定位 + 金额 + 单据号占用流水号(幂等键
冻结合同签订占用流水号 + 金额冻结流水号
释放取消 / 变更时占用或冻结流水号 + 金额释放结果

两类预算各自一张表费用预算固定资产预算 ⇒ 请求里需要一个 budgetType 维度区分(摊销规则与执行在 ERP 侧,SRM 不碰)。

弱管控 超预算只提醒不阻断,并显示超年度预算多少。 ⇒ 查询接口必须返回具体的可用余额数值,不能只返回一个「够 / 不够」的布尔—— 只给布尔的话,「超了多少」这句话我方显示不出来。

必读 占用与释放必须是幂等的,并请明确幂等键。 网络重试、用户重复点击都会让同一笔占用到达两次;若按「每次调用都累加」实现, 预算会被一笔单据吃掉两次,而两边账面都看不出异常——直到有人发现额度莫名少了。

② 请款包推送 —— 场景 5

我方会推的内容:合同 + 请款单 + 对账单 + 发票及附件(财务与领导在汇联易侧审批)。

需要明确说明
附件怎么传随报文 base64?先传文件拿 fileId 再引用?还是给一个上传端点?这一条直接决定实现方式
单据结构一个请款包 = 一张请款单 + N 张对账单 + N 张发票?请给出汇联易侧的单据模型
幂等键同一个请款包重推时如何识别
审批结果回传汇联易审批完成后怎么通知 SRM:回调我方端点,还是我方轮询查询?

注意 审批结果必须能回到 SRM,否则 SRM 里的请款单会永远停在「已推送」。 若汇联易不支持回调,请提供可查询的接口,我方改用轮询。

③ 发票 PDF 与验真结果回传 —— 场景 5

口径已定:发票只进费控,ERP 侧不接收发票。

我方会传说明
发票 PDF 原件供应商在门户上传的原件
验真结果验真状态、验真时间、税局返回的关键字段
关联单据请款单号 / 对账单号 / 供应商编码

4.2 银企 / 付款执行 (场景 9)

业务口径:付款执行走银企直连或引擎机器人付款结果回传 SRM 更新状态并核销

要害 这条的价值全在「回传」两个字上。 付款状态一旦靠人工回写就一定会漏,而漏掉的那笔在对账单上看起来和没付一模一样 ——下个月它会被再算一次。

我方需要的是一个入站通道(银企 / 机器人 / 财务系统 → SRM):

字段必填说明
paymentRef付款流水号 —— 幂等键
requestNo对应的 SRM 请款单号 / 支付单号
paidAmount实付金额
status成功 / 失败 / 部分 / 退票
paidAt实际付款时刻
bankRef银行回单号
failReason失败原因(失败时必填)

4.3 ERP 补充接口 (场景 1 / 5 / 9)

这四个都在第三节那 10 个之外,同属 ERP 侧。

① 项目号出站 —— 场景 1

预立项转正式立项后,SRM 项目主档 → ERP 建项目并回项目号

  • 我方会推:项目名称、类型、预算科目、成本中心、部门、年度、负责人、立项金额
  • 需要返回:ERP 项目号(与接口 3 同理——回执必须带真实单号,否则我方无法置「已同步」)
  • 请提供 ERP 项目建档接口文档

② 凭证号回传 —— 场景 5

口径:凭证链落点与凭证号回传支付单,两类 —— 暂估转应付付款凭证

  • 方向:ERP → SRM(入站)
  • 需要字段:凭证类型、凭证号、凭证日期、金额、对应的 SRM 单据号
  • 请明确:ERP 侧生成凭证后主动推我方,还是我方定时查?

③ 资产转固出站 —— 场景 9

口径已定:转固动作在 ERP 侧执行,SRM 只推「这批货要转固 / 费用化」的判定结果。

  • 流程:收货 → 取件码扫码验收 → 标记转固 / 费用化 → 结果推 ERP
  • 我方会推:资产名称、数量、金额、使用部门、使用人、采购单号、收货单号、转固 or 费用化
  • 请提供 ERP 资产接收接口文档,以及固定资产类别编码清单

④ 发票 / 请款 / 核销三个作业的自动触发 —— 场景 5

口径已定:这三个 ERP 作业改由流程自动触发,不再人工点。

  • 请明确触发方式:ERP 提供可调用的接口?还是由 ERP 侧监听某个状态位?
  • 若为接口,请提供三个作业各自的接口文档与前置条件

4.4 BOM 结构 (场景 2)

用于:按成品需求展开物料需求(MRP)、缺口计算的需求侧。

建议 走「视图 + 独立只读账号」而不是开发接口。 BOM 数据量大、结构稳定、实时性要求低,视图方式对贵司 IT 的开发量最小。

4.5 对账单推送 ERP → SRM 可立即联调

POSThttps://xj-api.forming-ai.com.cn/api/erp/settlement-statement

请求头 X-Erp-Secret · 幂等键 erpDocNo

字段必填说明
erpDocNoERP 对账单号 —— 幂等键
supplierCode供应商编码
accountingPeriod会计期间
goodsAmount货款金额
claimAmount扣款金额
returnAmount退货冲减
totalAmount对账金额(不给则按 货款 − 扣款 − 退货 自动算)
currency默认 CNY

请明确对账以哪边为准:若以 ERP 为准,这个接口的优先级会高于本文多数 P1 项; 若以 SRM 为准,则需要反向的出站接口。

4.6 OA 流程线上化 (场景 7)

口径:OA 现有检测流程(G013)异常处理流程做线上化改造。

联调里程碑

M0
环境打通
网络可达、白名单、密钥交接、测试账套。前置 Z3
完成判据:贵司能 curl 通任一端点并拿到 401 以外的响应
M1
主数据 不依赖我方开发进度,建议立即启动
接口 1接口 2前置 M0
完成判据:20 个真实物料 + 对应库存快照进入 SRM,可被选到
M2
单据链
接口 345前置 M1 + Z1
完成判据:一张真实 PO 走完「下达 → 收货 → 签收回传」全链
M3
协同与扩展
接口 6 / 7 / 8 / 9 / 10前置 M1
完成判据:各自独立验收
M4
定制场景对接 瓶颈在拿文档,不在开发
汇联易预算四动作 → 请款包 → 银企回传ERP 项目号 / 凭证 / 转固前置:对方接口文档 + 测试环境
完成判据:预算查得到额度、请款包推得过去、付款结果回得来

联调窗口约 5 周,排在开发之后。 M1 不依赖我方开发进度,建议立即启动——提前打通主数据, 等于把联调窗口留给真正难的部分(单据链、Z1 相关项)。

联调需要贵司提供的测试数据:至少 20 个真实物料、5 家真实供应商、3 张真实 PO 的样例数据。

⚠️ M4 的瓶颈不在开发,在拿到对方的接口文档与测试环境。 汇联易、银企、OA 各自是独立的对接方,找人、走流程、开测试环境这几步往往比写代码久 ⇒ 请在 M0 阶段就同步启动,不要等 M3 做完。

开工清单

勾选状态保存在这台设备的浏览器里,刷新不丢。

三个待确认项 —— 不定住,下面一部分接口是白做

编号待决影响
Z1采购订单谁主导:SRM 生成推 T100,还是 T100 生成推 SRM?3.3 整节3.6
Z2点对点直连,还是走中间件 / ESB?2.1 鉴权、2.5 重试归属
Z3联调环境:测试账套 + 网络可达路径第五节整节

可并行 Z1 未定不影响接口 1 / 2 / 4 / 5 / 7 / 8 / 9 / 10 开工,建议主数据先行、Z1 并行决策。

最小启动集 —— 拿到这 6 样,M1 即可开工

并行可做(不阻塞 M1)

定制场景的准备项 —— 建议现在就启动,周期最长

为什么现在启动 这些多数要去找外部对接方(汇联易、银企、OA)要文档和测试环境, 找人与走流程的时间通常比开发久

汇联易费控(场景 5 / 6)

银企 / 付款(场景 9)

ERP 补充接口(场景 1 / 5 / 9)

OA(场景 7)

贵司 IT 的实际开发工作量集中在 4 处

工作对应接口形态
T100 推送程序1、2定时任务,按 JSON POST 到我方
T100 接收端3、4、6HTTP 接收 + 落 T100 单据
T100 回传程序5签收后 POST 回我方
只读视图 + 账号BOM、库存无需写代码

接口 7 / 8 / 9 / 10 无开发量,只需权限、凭据与账号确认。

端点速查

通道端点方向鉴权
物料主数据POST /api/erp/materials/importERP → SRMX-Erp-Secret
库存快照POST /api/erp/inventory/importERP → SRMX-Erp-Secret
签收回传POST /api/erp/delivery-receiptERP → SRMX-Erp-Secret
对账单推送POST /api/erp/settlement-statementERP → SRMX-Erp-Secret
电子签回调POST /api/esign/callback三方 → SRM平台签名
收货单出站配置 T100 接收地址即可SRM → ERPBearer
到货计划出站配置 T100 接收地址即可SRM → ERPBearer
采购订单出站待 Z1 确认SRM → ERP
供应商主数据出站待编码口径确认SRM → ERP