OpenApi
    • API 说明文档
    • 基础档案
      • 游戏列表
        GET
      • 平台列表
        GET
      • 区服列表(树形)
        GET
      • 产品分类列表(树形)
        GET
      • 产品列表
        GET
      • 批量设置产品成本价
        POST
      • 批量设置产品毛利率
        POST
    • 采购商
      • 请购单
        • 订单列表
        • 订单详情
        • 更新订单
        • 删除订单
        • 创建订单
        • 暂停订单
        • 恢复订单
        • 取消订单
        • 放弃剩余数量
        • 追加询价
        • 重新派单
      • 询价
        • 询价单列表
        • 询价单详情
        • 从订单创建询价单(创建后自动发布)
        • 发布询价单
        • 取消询价单
        • 手动添加供应商
        • 移除供应商
      • 报价
        • 报价列表
        • 报价详情
      • 比价
        • 比价单列表
        • 比价单详情
        • 从询价单创建比价单
        • 选标(分配中标+生成PO)
        • 取消比价单
      • 采购订单
        • 采购订单列表
        • 采购订单详情
        • 暂停采购订单
        • 恢复采购订单
        • 取消采购订单
        • 处理问题单
      • 订单变更
        • 变更列表
        • 变更详情
        • 发起变更
      • 对账单
        • 对账单列表
        • 对账单详情
        • 采购商确认对账
        • 采购商发起争议
        • 解决争议
        • 作废对账单
        • 重新生成对账单
      • 付款
        • 付款列表
        • 付款详情
        • 发起付款申请
        • 审批通过
        • 审批驳回
        • 重新提交
        • 登记付款
    • 供应商
      • 询价
        • 询价单列表
        • 询价单详情
      • 报价
        • 报价列表
        • 报价详情
        • 提交报价
        • 作废报价
        • 报价结果列表(含报价明细)
        • 报价结果详情
      • 客户订单
        • 客户订单列表
        • 客户订单详情
        • 开始发货
        • 完成发货
        • 上报问题
      • 订单变更
        • 变更列表
        • 变更详情
        • 确认变更
        • 拒绝变更
      • 对账单
        • 对账单列表
        • 对账单详情
        • 供应商确认对账
        • 供应商发起争议
      • 收款
        • 收款列表
        • 收款详情
        • 关联对账单
    • 数据模型
      • CallbackPayload
      • CallbackDataOrderCreated
      • CallbackDataOrderDispatched
      • CallbackDataOrderCompleted
      • CallbackDataOrderCancelled
      • CallbackDataOrderPaused
      • CallbackDataOrderResumed
      • CallbackDataPurchaseOrderCompleted
      • CallbackDataProblemReported
      • CallbackDataProblemResolved
      • CallbackDataChangeRequested
      • CallbackDataChangeConfirmed
      • CallbackDataChangeRejected
      • CallbackDataInquiryPublished
      • CallbackDataQuotationSubmitted
      • CallbackDataComparisonCreated
      • CallbackDataReconciliationCreated
      • CallbackDataReconciliationBuyerConfirmed
      • CallbackDataReconciliationSupplierConfirmed
      • CallbackDataReconciliationDisputed
      • CallbackDataReconciliationResolved
      • CallbackDataReconciliationVoided
      • CallbackDataPaymentPaid

    API 说明文档

    一、概述#

    FS-OMS 平台会在订单业务关键节点,主动向使用方配置的回调地址发送 HTTP 通知。使用方无需轮询接口,即可实时感知订单状态变化。

    二、通信协议#

    项目说明
    请求方法POST
    Content-Typeapplication/json
    连接超时3 秒
    读取超时5 秒
    成功应答响应 body 返回纯文本 success(不含引号、不含换行)
    失败判定HTTP 非 2xx、超时、或响应 body ≠ success

    三、重试策略#

    回调失败后,系统按以下间隔自动重试,最多 5 次:
    重试次数间隔
    第 1 次15 秒
    第 2 次30 秒
    第 3 次1 分钟
    第 4 次5 分钟
    第 5 次10 分钟
    超过最大重试次数后,任务标记为「最终失败」,可在后台「队列任务」页面手动重试。

    四、消息体结构#

    每次回调通知的 POST body 为统一 JSON 结构:
    {
      "event": "order.created",
      "timestamp": 1722412800,
      "nonce_str": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
      "data": {
        "out_order_no": "OO202507310001",
        "status": 0,
        "status_text": "待派单",
        "game_name": "原神",
        "total_quantity": 100,
        "total_amount_cny": "5000.00"
      },
      "sign": "A3F8B2C1D4E5F60718293A4B5C6D7E8F"
    }

    字段说明#

    字段类型说明
    eventstring事件类型标识(见第六节)
    timestampintUnix 时间戳(秒)
    nonce_strstring32 位随机字符串,防重放
    dataobject业务数据,各事件不同(见第七节)
    signstring签名值,MD5 大写(见第五节)

    五、签名验证#

    签名规则#

    与 OpenAPI 接口签名规则一致(参考微信支付):
    1.
    取所有字段(不含 sign),其中 data 字段使用 JSON 字符串参与签名
    2.
    过滤空值(空字符串、null)
    3.
    按 key 字典序(ASCII)升序排序
    4.
    拼接为 key1=value1&key2=value2&... 格式
    5.
    末尾追加 &key={AppSecret}
    6.
    对拼接字符串取 strtoupper(md5(...))

    签名示例#

    假设收到消息体:
    {
      "event": "order.created",
      "timestamp": 1722412800,
      "nonce_str": "abc123",
      "data": {"out_order_no": "OO001", "status": 0},
      "sign": "..."
    }
    签名计算步骤:
    // 1. 移除 sign,data 转 JSON 字符串
    params = {
      "data": "{\"out_order_no\":\"OO001\",\"status\":0}",
      "event": "order.created",
      "nonce_str": "abc123",
      "timestamp": "1722412800"
    }
    
    // 2. 按 key 字典序排序(已排好)
    // 3. 拼接
    stringA = "data={\"out_order_no\":\"OO001\",\"status\":0}&event=order.created&nonce_str=abc123&timestamp=1722412800"
    
    // 4. 追加 secret
    stringSignTemp = stringA + "&key=your_app_secret"
    
    // 5. 签名
    sign = strtoupper(md5(stringSignTemp))

    PHP 验签示例#

    Java 验签示例#


    六、事件类型一览#

    通知采购商的事件#

    event 值说明触发时机
    order.created订单创建请购单创建成功
    order.dispatched订单派单比价选标完成,生成采购订单
    order.completed订单完成所有采购订单均已完成
    order.cancelled订单取消手动取消订单
    order.paused订单暂停手动暂停订单
    order.resumed订单恢复暂停后恢复执行
    purchase_order.completed采购订单完成供应商完成发货
    purchase_order.problem_reported问题上报供应商上报问题
    purchase_order.change_confirmed变更确认供应商确认变更
    purchase_order.change_rejected变更拒绝供应商拒绝变更
    quotation.submitted供应商报价供应商提交报价
    comparison.created比价单创建比价单创建成功
    reconciliation.supplier_confirmed供应商确认对账供应商确认,对账完成

    通知供应商的事件#

    event 值说明触发时机
    inquiry.published询价单发布询价单发布,通知供应商报价
    purchase_order.problem_resolved问题处理采购商处理问题后恢复
    purchase_order.change_requested变更申请采购商发起订单变更
    reconciliation.created对账单生成对账单创建成功
    reconciliation.buyer_confirmed采购商已确认采购商确认对账
    reconciliation.disputed对账争议任一方发起争议
    reconciliation.resolved争议解决采购商解决争议
    reconciliation.voided对账单作废采购商人工作废
    payment.paid已付款登记付款完成

    七、各事件 data 字段详解#

    7.1 order.created — 订单创建#

    {
      "out_order_no": "OO202507310001",
      "status": 0,
      "status_text": "待派单",
      "game_name": "原神",
      "total_quantity": 100,
      "total_amount_cny": "5000.00"
    }
    字段类型说明
    out_order_nostring请购单号
    statusint订单状态码(0=待派单)
    status_textstring状态中文描述
    game_namestring游戏名称
    total_quantityint总数量
    total_amount_cnystring总金额(元)

    7.2 order.dispatched — 订单派单#

    {
      "out_order_no": "OO202507310001",
      "status": 3,
      "status_text": "已派单",
      "purchase_order_count": 2
    }
    字段类型说明
    out_order_nostring请购单号
    statusint订单状态码(3=已派单)
    status_textstring状态中文描述
    purchase_order_countint本次生成的采购订单数量

    7.3 order.completed — 订单完成#

    {
      "out_order_no": "OO202507310001",
      "status": 5,
      "status_text": "已完成"
    }
    字段类型说明
    out_order_nostring请购单号
    statusint订单状态码(5=已完成)
    status_textstring状态中文描述

    7.4 order.cancelled — 订单取消#

    {
      "out_order_no": "OO202507310001",
      "status": 8,
      "status_text": "已取消",
      "cancel_reason": "客户主动取消"
    }
    字段类型说明
    out_order_nostring请购单号
    statusint订单状态码(8=已取消)
    status_textstring状态中文描述
    cancel_reasonstring取消原因

    7.5 order.paused — 订单暂停#

    {
      "out_order_no": "OO202507310001",
      "status": 6,
      "status_text": "已暂停"
    }
    字段类型说明
    out_order_nostring请购单号
    statusint订单状态码(6=已暂停)
    status_textstring状态中文描述

    7.6 order.resumed — 订单恢复#

    {
      "out_order_no": "OO202507310001",
      "status": 4,
      "status_text": "已恢复"
    }
    字段类型说明
    out_order_nostring请购单号
    statusint恢复后的订单状态码(如 4=执行中)
    status_textstring状态中文描述

    7.7 purchase_order.completed — 采购订单完成#

    {
      "purchase_order_no": "PO202507310001",
      "out_order_no": "OO202507310001",
      "status": 2,
      "status_text": "已完成"
    }
    字段类型说明
    purchase_order_nostring采购订单号
    out_order_nostring关联请购单号
    statusint采购订单状态码(2=已完成)
    status_textstring状态中文描述

    7.8 purchase_order.problem_reported — 问题上报(→采购商)#

    {
      "purchase_order_no": "PO202507310001",
      "out_order_no": "OO202507310001",
      "status": 3,
      "status_text": "问题单",
      "problem_desc": "商品缺货,需要更换产品"
    }
    字段类型说明
    purchase_order_nostring采购订单号
    out_order_nostring关联请购单号
    statusint采购订单状态码(3=问题单)
    status_textstring状态中文描述
    problem_descstring问题描述

    7.9 purchase_order.problem_resolved — 问题处理(→供应商)#

    {
      "purchase_order_no": "PO202507310001",
      "out_order_no": "OO202507310001",
      "status": 1,
      "status_text": "已恢复",
      "resolution": "同意更换为同类产品"
    }
    字段类型说明
    purchase_order_nostring采购订单号
    out_order_nostring关联请购单号
    statusint恢复后的状态码
    status_textstring状态中文描述
    resolutionstring处理方式说明

    7.10 purchase_order.change_requested — 变更申请(→供应商)#

    {
      "purchase_order_no": "PO202507310001",
      "out_order_no": "OO202507310001",
      "change_type": "quantity",
      "status_text": "变更待确认",
      "remark": "客户调整数量"
    }
    字段类型说明
    purchase_order_nostring采购订单号
    out_order_nostring关联请购单号
    change_typestring变更类型(quantity/price/product/mixed/other)
    status_textstring状态中文描述
    remarkstring变更备注

    7.11 purchase_order.change_confirmed — 变更确认(→采购商)#

    {
      "purchase_order_no": "PO202507310001",
      "out_order_no": "OO202507310001",
      "change_type": "quantity",
      "status_text": "变更已确认"
    }
    字段类型说明
    purchase_order_nostring采购订单号
    out_order_nostring关联请购单号
    change_typestring变更类型
    status_textstring状态中文描述

    7.12 purchase_order.change_rejected — 变更拒绝(→采购商)#

    {
      "purchase_order_no": "PO202507310001",
      "out_order_no": "OO202507310001",
      "change_type": "price",
      "status_text": "变更被拒绝",
      "reject_reason": "价格已确认,无法调整"
    }
    字段类型说明
    purchase_order_nostring采购订单号
    out_order_nostring关联请购单号
    change_typestring变更类型
    status_textstring状态中文描述
    reject_reasonstring拒绝原因

    7.13 inquiry.published — 询价单发布(→供应商)#

    {
      "inquiry_no": "IN202507310001",
      "out_order_no": "OO202507310001",
      "status": 1,
      "status_text": "待报价",
      "deadline_at": "2025-08-05 18:00:00",
      "item_count": 3
    }
    字段类型说明
    inquiry_nostring询价单号
    out_order_nostring关联请购单号
    statusint询价单状态码(1=待报价)
    status_textstring状态中文描述
    deadline_atstring/null报价截止时间
    item_countint询价明细数量

    7.14 quotation.submitted — 供应商报价(→采购商)#

    {
      "quotation_no": "QT202507310001",
      "inquiry_no": "IN202507310001",
      "out_order_no": "OO202507310001",
      "supplier_id": 3,
      "supplier_name": "供应商A",
      "total_quantity": 100,
      "total_amount_cny": "4500.00",
      "items": [
        {
          "product_name": "金币",
          "product_code": "GOLD-001",
          "category_name": "货币",
          "server_name": "亚洲1区",
          "quantity": 100,
          "unit_price_cny": "45.00",
          "total_price_cny": "4500.00"
        }
      ]
    }
    字段类型说明
    quotation_nostring报价单号
    inquiry_nostring关联询价单号
    out_order_nostring关联请购单号
    supplier_idint供应商租户ID
    supplier_namestring供应商名称
    total_quantityint报价总数量
    total_amount_cnystring报价总金额
    itemsarray报价明细列表
    items[].product_namestring产品名称
    items[].product_codestring产品编码
    items[].category_namestring品类名称
    items[].server_namestring区服名称
    items[].quantityint数量
    items[].unit_price_cnystring单价(元)
    items[].total_price_cnystring行总价(元)

    7.15 comparison.created — 比价单创建(→采购商)#

    {
      "comparison_no": "CP202507310001",
      "inquiry_no": "IN202507310001",
      "out_order_no": "OO202507310001",
      "quotation_count": 3
    }
    字段类型说明
    comparison_nostring比价单号
    inquiry_nostring关联询价单号
    out_order_nostring关联请购单号
    quotation_countint汇总的报价单数量

    7.16 reconciliation.created — 对账单生成(→供应商)#

    {
      "reconciliation_no": "REC202508010001",
      "status": 0,
      "status_text": "待采购商确认",
      "total_amount_cny": "15000.00",
      "period_date": "2025-07-31",
      "order_count": 5
    }
    字段类型说明
    reconciliation_nostring对账单号
    statusint对账单状态码(0=待采购商确认)
    status_textstring状态中文描述
    total_amount_cnystring对账总金额(元)
    period_datestring账期日期
    order_countint关联订单笔数

    7.17 reconciliation.buyer_confirmed — 采购商确认对账(→供应商)#

    {
      "reconciliation_no": "REC202508010001",
      "status": 1,
      "status_text": "待供应商确认",
      "total_amount_cny": "15000.00",
      "period_date": "2025-07-31",
      "order_count": 5
    }
    字段类型说明
    reconciliation_nostring对账单号
    statusint对账单状态码(1=待供应商确认)
    status_textstring状态中文描述
    total_amount_cnystring对账总金额(元)
    period_datestring账期日期
    order_countint关联订单笔数

    7.18 reconciliation.supplier_confirmed — 供应商确认对账(→采购商)#

    {
      "reconciliation_no": "REC202508010001",
      "status": 2,
      "status_text": "已完成",
      "total_amount_cny": "15000.00",
      "period_date": "2025-07-31",
      "order_count": 5
    }
    字段类型说明
    reconciliation_nostring对账单号
    statusint对账单状态码(2=已完成)
    status_textstring状态中文描述
    total_amount_cnystring对账总金额(元)
    period_datestring账期日期
    order_countint关联订单笔数

    7.19 reconciliation.disputed — 对账争议(→对方)#

    {
      "reconciliation_no": "REC202508010001",
      "status": 3,
      "status_text": "有争议",
      "total_amount_cny": "15000.00",
      "period_date": "2025-07-31",
      "order_count": 5,
      "dispute_reason": "订单PO202507310003金额有误"
    }
    字段类型说明
    reconciliation_nostring对账单号
    statusint对账单状态码(3=有争议)
    status_textstring状态中文描述
    total_amount_cnystring对账总金额(元)
    period_datestring账期日期
    order_countint关联订单笔数
    dispute_reasonstring争议原因

    7.20 reconciliation.resolved — 争议解决(→争议发起方)#

    {
      "reconciliation_no": "REC202508010001",
      "status": 1,
      "status_text": "待供应商确认",
      "total_amount_cny": "15000.00",
      "period_date": "2025-07-31",
      "order_count": 5
    }
    字段类型说明
    reconciliation_nostring对账单号
    statusint解决后回退的状态码
    status_textstring状态中文描述
    total_amount_cnystring对账总金额(元)
    period_datestring账期日期
    order_countint关联订单笔数

    7.21 reconciliation.voided — 对账单作废(→供应商)#

    {
      "reconciliation_no": "REC202508010001",
      "status": 4,
      "status_text": "已作废",
      "total_amount_cny": "15000.00",
      "period_date": "2025-07-31",
      "order_count": 5
    }
    字段类型说明
    reconciliation_nostring对账单号
    statusint对账单状态码(4=已作废)
    status_textstring状态中文描述
    total_amount_cnystring对账总金额(元)
    period_datestring账期日期
    order_countint关联订单笔数

    7.22 payment.paid — 已付款(→供应商)#

    {
      "payment_no": "PAY202508010001",
      "reconciliation_no": "REC202508010001",
      "status": 3,
      "status_text": "已付款",
      "amount_cny": "15000.00",
      "pay_method": "alipay",
      "pay_time": "2025-08-01 14:30:00"
    }
    字段类型说明
    payment_nostring付款单号
    reconciliation_nostring关联对账单号
    statusint付款单状态码(3=已付款)
    status_textstring状态中文描述
    amount_cnystring付款金额(元)
    pay_methodstring付款方式(alipay/bank/wechat/other)
    pay_timestring付款时间

    八、接收方应答规范#

    成功应答#

    收到通知并处理完成后,返回 HTTP 200,body 为纯文本:
    success
    ⚠️ 注意:不要返回 JSON {"code":0} 或带换行的 success\n,必须严格等于字符串 success。

    失败/忽略#

    若返回非 success 内容或 HTTP 非 2xx,平台将视为投递失败并触发重试。

    幂等性要求#

    由于存在重试机制,同一事件可能收到多次通知。接收方应基于 event + data 中的业务单号做幂等处理,避免重复执行业务逻辑。

    九、状态码参考#

    请购单状态(out_order.status)#

    值含义
    0待派单
    1报价中
    2待比价
    3已派单
    4执行中
    5已完成
    6已暂停
    7异常
    8已取消

    采购订单状态(purchase_order.status)#

    值含义
    0已接单
    1发货中
    2已完成
    3问题单
    4已暂停
    5变更中
    6已取消

    对账单状态(reconciliation.status)#

    值含义
    0待采购商确认
    1待供应商确认
    2已完成
    3有争议
    4已作废

    付款单状态(payment.status)#

    值含义
    0待审批
    1已审批
    2已驳回
    3已付款

    问题单类型(purchase_order.problem_type)#

    用于「暂停订单」「暂停采购订单」与「上报问题」接口的问题归类,采购订单详情/列表的 problem_type 字段也使用同一枚举:
    值枚举常量含义
    0PROBLEM_TYPE_NONE非问题单(数据默认值,接口不接受传 0)
    1PROBLEM_TYPE_SUPPLIER供应商问题
    2PROBLEM_TYPE_PURCHASER采购商问题
    3PROBLEM_TYPE_CUSTOMER客户问题
    暂停订单 / 暂停采购订单:problem_type 和 problem_parse 均为必填(1/2/3),与管理后台保持一致;请购单暂停时采集的问题类型和暂停原因会透传写入被级联暂停的采购订单。
    上报问题:problem_desc 必填,problem_type 可选(不传时默认 0=未分类),订单均会进入「问题单」状态。

    十、回调地址配置#

    1.
    登录管理后台 → API开放平台
    2.
    点击「设置回调」按钮
    3.
    输入回调地址(必须为 HTTPS 或 HTTP 可访问地址)
    4.
    点击「验证」— 平台向该地址发起 GET 请求,返回 success 即通过
    5.
    验证通过后点击「保存」
    修改回调地址后需重新验证,未验证的地址不会收到任何通知。

    十一、常见问题#

    Q: 为什么没有收到回调通知?#

    1.
    确认回调地址已配置且验证通过(后台显示「已验证」)
    2.
    确认 API 平台状态为启用
    3.
    确认接收方服务器可被外网访问
    4.
    查看后台「队列任务」页面是否有失败记录

    Q: 签名验证总是失败?#

    1.
    确认 data 字段参与签名时使用的是 JSON 字符串(非对象)
    2.
    JSON 序列化时使用 JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
    3.
    确认 AppSecret 正确
    4.
    注意 http_build_query 会进行 URL 编码,签名前需 urldecode

    Q: 如何区分重复通知?#

    使用 event + data.out_order_no(或 data.purchase_order_no)作为唯一键,在本地记录已处理的通知,重复收到时直接返回 success 不再处理。

    十二、OpenAPI 接口错误码参考#

    本章适用于所有 /open-api/v1/* 主动调用接口(接口定义见 doc/open-api.json)。

    12.1 统一响应结构#

    所有接口(含失败)均返回以下 JSON 结构,HTTP 状态码恒为 200,请以响应体 code 字段判断成败:
    {
      "code": 500,
      "message": "当前订单状态不可创建询价",
      "data": [],
      "trace_id": "8f3b2c1d-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    字段类型说明
    codeint业务状态码(见 12.2),200=成功
    messagestring提示信息,失败时为具体错误原因(中文)
    dataobject/array业务数据,失败时为空数组
    trace_idstring请求追踪ID,排查问题时提供给平台方定位日志
    响应 Header 中同时携带 Request-Id,与 trace_id 一致。

    12.2 业务状态码总览#

    code含义典型场景处理建议
    200成功请求处理成功解析 data
    401未认证鉴权参数缺失/无效/过期/签名错误检查签名参数与算法(见第五节)
    403无权限租户停用、角色不匹配、功能模块未授权联系平台方开通
    404资源不存在ID 错误、单据不属于当前租户核对资源ID
    422参数校验失败必填缺失、数值越界、格式错误根据 message 修正参数
    500业务规则失败状态不允许操作、重复操作、截止等根据 message 调整业务流程

    12.3 鉴权类错误(401 / 403)#

    codemessage原因
    401缺少鉴权参数Header 未带齐 X-App-Key / X-Timestamp / X-Nonce-Str / X-Sign
    401无效的AppKeyAppKey 不存在或平台已停用
    401请求已过期时间戳与服务器偏差超过 ±300 秒,请校准服务器时间
    401签名验证失败签名算法/参数收集有误,对照第五节排查
    403租户已停用平台关联的租户被停用
    403无权访问采购商接口供应商角色(tenant.type=1)调用了 /buyer/ 接口
    403无权访问供应商接口采购商角色(tenant.type=2)调用了 /supplier/ 接口
    403该功能模块未授权平台未开通对应功能开关(order_enabled / reconciliation_enabled / finance_enabled)

    12.4 资源不存在(404)#

    访问的单据不存在或不属于当前租户(租户隔离下不区分两者):
    message涉及接口
    订单不存在请购单详情/更新/删除/创建询价
    订单明细不存在放弃明细
    询价单不存在询价发布/取消/详情
    询价明细不存在添加供应商
    询价供应商记录不存在移除供应商
    报价单不存在报价详情/作废/报价结果详情
    比价单不存在比价详情/选标/取消
    采购订单不存在采购订单详情/暂停/恢复/取消
    变更记录不存在变更详情/确认/拒绝
    对账单不存在对账详情/确认/争议/作废

    12.5 无权限操作(403)#

    单据存在但不属于当前租户、或当前角色无权操作:
    message说明
    无权操作该订单 / 无权查看该订单请购单归属校验
    无权操作该询价单询价单归属校验
    您未被分配此询价单供应商端访问未派单给自己的询价
    无权查看该报价单 / 无权作废该报价单报价单归属校验
    无权操作该比价单比价单归属校验
    无权操作该采购订单 / 无权查看该采购订单采购订单归属校验
    无权操作该变更记录 / 无权查看该变更记录变更单归属校验
    无权操作该对账单 / 无权查看该对账单对账单归属校验

    12.6 参数校验失败(422)#

    涉及接口典型 message
    创建/更新订单游戏ID {id} 不存在或已停用;游戏编码 {code} 不存在;区服ID {id} 不存在或不属于当前游戏;产品 {code} 不存在或已停用;订单明细不能为空;明细单价不能为负数;截止时间不能早于当前时间;外部订单号 {no} 已存在,请更换后重试;游戏ID或游戏编码必须提供
    提交报价未提交任何有效的报价明细;产品[{name}]的报价单价必须大于0;产品[{name}]的报价总价必须大于0;产品[{name}]的报价单价与总价至少填写一项;产品[{name}]的报价单价与总价不一致(允许每单位数量 1 分钱舍入差);该订单要求供应商对所有产品进行报价,请补全未报价的产品
    创建询价请选择报价截止时间;报价截止时间不能早于当前时间
    批量设置成本/毛利率请提供待设置的数据项(items);单次提交不能超过 2000 条,请分批提交(逐条校验错误通过 code=200 + data.errors 返回,见接口文档)
    报价结果详情无权查看此报价单
    暂停订单 / 暂停采购订单请选择问题类型;请填写暂停原因

    12.7 业务规则失败(500)#

    模块典型 message
    创建询价当前订单状态不可创建询价;该订单已存在进行中的询价单({inquiry_no}),请勿重复创建;未找到有效的订单明细
    创建比价没有可比较的报价;该询价单已存在进行中的比价单({comparison_no}),请先完成或取消比价
    发布询价仅草稿状态可发布;没有匹配的供应商,无法发布
    报价询价单当前状态不可报价;报价已截止,截止时间:{deadline_at};您已提交过报价,如需修改请作废后重新报价
    比价/选标询价单当前状态不可比价;请至少选择一个中标项;该订单不允许拆分给多个供应商,请选择单一供应商;整单派单模式下必须将供应商的全部明细整单中标,请补全中标明细;订单已暂停,不允许选标生成采购订单,请先恢复订单
    订单操作当前状态不可取消;当前状态不可暂停;仅暂停状态可恢复;仅已取消状态可重新派单;当前状态不可追加询价;当前订单已有进行中的询价单,请等待完成或取消后再追加;整单派单模式的订单不支持追加询价;所选明细无剩余数量可追加询价;当前订单有进行中的比价单,请先完成或取消比价后再放弃剩余;该明细已全部分配,无剩余可放弃;当前状态不可放弃剩余数量
    订单变更已有待确认的变更,请等待供应商处理;变更明细不属于当前采购订单;变更后订单存在重复产品,请检查;当前状态不可确认
    对账没有可生成对账单的已完成订单;已完成的对账单不可作废
    注:批量设置成本/毛利率接口采用全量校验模式,单条数据错误不抛异常,而是返回 code=200 + data.errors 错误清单(success=0),仅空 items、超过 2000 条等结构性错误才返回 422。

    12.8 排查建议#

    1.
    记录响应中的 trace_id,提供给平台方可在 api_request_log / open-api-error 日志中精确定位;
    2.
    401 错误优先核对服务器时钟(±300秒)与签名算法(第五节);
    3.
    403「该功能模块未授权」需在管理后台 API开放平台开通对应功能开关;
    4.
    500 业务错误的 message 已包含具体原因与单号,按提示调整业务流程即可,无需重试。
    修改于 2026-08-20 01:45:17
    下一页
    游戏列表
    Built with