Skip to content
TestAPI 40.68.0构建信息

应用后端查询单次失败诊断 ​

POST /miniapp/v1/apps/{app_id}/diagnostics/request

应用后端使用当前接口 token,按错误响应中的 request_id 查询同一应用最近 7 天的服务端失败摘要。跨应用、不存在和已过期记录统一返回 404;不支持批量搜索或导出。

鉴权与参数 ​

使用 Authorization: Bearer <接口 token>。接口 token 由应用后端使用 AppSecret 换取,只保存在应用后端。

参数位置必填说明
app_idpath是{"type":"string","pattern":"^[a-z][a-z0-9_-]{2,63}$"}

请求体 ​

Content-Type:application/json。

字段类型在所属对象中必填说明与约束
request_idstring是pattern: ^[A-Za-z0-9_.-]+$;minLength: 1;maxLength: 128

响应 ​

HTTP 200 ​

最近 7 天内同一应用的安全失败摘要。

字段类型在所属对象中必填说明与约束
codestring是description: 请求成功时返回的稳定业务码。;const: miniapp_success
dataobject是additionalProperties: false
data.request_idstring是maxLength: 128
data.app_idstring是maxLength: 64
data.versionstring否maxLength: 64
data.occurred_atstring是format: date-time
data.duration_msinteger是minimum: 0
data.http_methodstring是maxLength: 10
data.routestring是description: Gin 路由模板,不含查询串或实际路径参数。;maxLength: 255
data.http_statusinteger是description: 普通 HTTP 失败状态或微信非零 errcode 对应的 HTTP 200。;minimum: 200;maximum: 599
data.error_codestring是maxLength: 64
data.stagestring否maxLength: 64
data.rulestring否maxLength: 64
data.fieldstring否description: JSON 解码或校验失败涉及的字段名;仅记录字段路径,不记录字段值。;pattern: ^[A-Za-z0-9_.-]+$;maxLength: 128
data.failure_reasonstring否maxLength: 128
data.dependencystring否maxLength: 64
data.dependency_resultstring否maxLength: 64
data.expires_atstring是format: date-time

HTTP 400 ​

请求参数无效。

字段类型在所属对象中必填说明与约束
errorobject是
error.codestring是
error.messagestring是
error.request_idstring否description: 与响应头 X-Request-ID 相同,用于查询服务端失败诊断。;maxLength: 128
error.detailsobject否additionalProperties: false
error.details.reasonstring否

HTTP 401 ​

宿主身份、AppSecret、接口 token 或运行时会话无效。

字段类型在所属对象中必填说明与约束
errorobject是
error.codestring是
error.messagestring是
error.request_idstring否description: 与响应头 X-Request-ID 相同,用于查询服务端失败诊断。;maxLength: 128
error.detailsobject否additionalProperties: false
error.details.reasonstring否

HTTP 404 ​

请求的资源不存在。

字段类型在所属对象中必填说明与约束
errorobject是
error.codestring是
error.messagestring是
error.request_idstring否description: 与响应头 X-Request-ID 相同,用于查询服务端失败诊断。;maxLength: 128
error.detailsobject否additionalProperties: false
error.details.reasonstring否

HTTP 503 ​

依赖的适配器或存储不可用。

字段类型在所属对象中必填说明与约束
errorobject是
error.codestring是
error.messagestring是
error.request_idstring否description: 与响应头 X-Request-ID 相同,用于查询服务端失败诊断。;maxLength: 128
error.detailsobject否additionalProperties: false
error.details.reasonstring否

完整定义 ​

下列定义包含引用、Header 和字段约束,来自同一契约的本接口投影。

查看 JSON Schema 与响应定义
json
{
  "openapi": "3.1.0",
  "info": {
    "title": "MetaEco 应用服务端 API",
    "version": "40.68.0"
  },
  "servers": [
    {
      "url": "{platformOrigin}",
      "description": "导入后填写实际 API 入口;文档域名不承载 API",
      "variables": {
        "platformOrigin": {
          "default": "https://api.example.invalid",
          "description": "替换为当前应用分配的 API 网关,示例域名不可访问"
        }
      }
    }
  ],
  "paths": {
    "/miniapp/v1/apps/{app_id}/diagnostics/request": {
      "post": {
        "summary": "应用后端查询单次失败诊断",
        "description": "应用后端使用当前接口 token,按错误响应中的 request_id 查询同一应用最近 7 天的服务端失败摘要。跨应用、不存在和已过期记录统一返回 404;不支持批量搜索或导出。",
        "tags": [
          "runtime"
        ],
        "security": [
          {
            "interfaceAccessToken": []
          }
        ],
        "operationId": "getApplicationRequestDiagnostic",
        "parameters": [
          {
            "$ref": "#/components/parameters/AppID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestDiagnosticLookup"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/RequestDiagnosticResponse"
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "401": {
            "$ref": "#/components/responses/RuntimeUnauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    }
  },
  "webhooks": {
    "metaEcoBalancePaymentEvent": {
      "post": {
        "summary": "平台向应用后端投递余额支付或退款成功通知",
        "description": "平台向创建支付单时固化的 notify_url 或退款单独指定的 notify_url 发送 HTTPS JSON;同一资金终态对应稳定事件 ID,至少一次投递。接收方必须先使用本应用受信任的 MetaEco 通知公钥验证原始正文,再核对 AppID、业务订单号和金额,并使用应用接口 token 查单确认。成功及已幂等处理的事件应在 5 秒内返回任意 2xx;超时或非 2xx 按退避策略最多尝试 10 次,之后进入死信。重投可有新的时间戳、nonce 和签名,事件正文及 ID 不变。此协议不是微信支付 API v3 通知。",
        "operationId": "receiveMetaEcoBalancePaymentEvent",
        "security": [
          {
            "metaEcoNotificationSignature": []
          }
        ],
        "parameters": [
          {
            "name": "X-MetaEco-Event-ID",
            "in": "header",
            "required": true,
            "description": "必须与正文 id 相同,跨重试不变。",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-MetaEco-Key-ID",
            "in": "header",
            "required": true,
            "description": "选择验签公钥,并作为签名串第一行。",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-MetaEco-Timestamp",
            "in": "header",
            "required": true,
            "description": "当前投递生成的十进制 Unix 秒;接收方允许的时钟偏差为前后 5 分钟。",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          },
          {
            "name": "X-MetaEco-Nonce",
            "in": "header",
            "required": true,
            "description": "当前投递生成的随机字符串。",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 64
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MetaEcoPaymentSucceededEvent"
                  },
                  {
                    "$ref": "#/components/schemas/MetaEcoRefundSucceededEvent"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "验签并持久化处理或已幂等处理;任何 2xx 均表示确认接收。"
          },
          "204": {
            "description": "验签并持久化处理或已幂等处理;没有响应正文。"
          },
          "400": {
            "description": "通知字段、身份或金额校验失败;平台会重试至死信。"
          },
          "401": {
            "description": "签名、公钥 ID 或时间窗校验失败;平台会重试至死信。"
          },
          "503": {
            "description": "接收方暂时不可用;平台会重试至死信。"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "interfaceAccessToken": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "MiniAppInterfaceAccessToken",
        "description": "应用后端用 AppSecret 换取的 2 小时接口 token;仅用于应用后端接口,禁止交给宿主或小程序。"
      },
      "metaEcoNotificationSignature": {
        "type": "apiKey",
        "in": "header",
        "name": "X-MetaEco-Signature",
        "description": "Base64 编码的 RSA PKCS#1 v1.5 + SHA-256 签名;签名串为 X-MetaEco-Key-ID、X-MetaEco-Timestamp、X-MetaEco-Nonce、原始 UTF-8 正文逐行连接且正文后再加换行。"
      }
    },
    "parameters": {
      "AppID": {
        "name": "app_id",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_-]{2,63}$"
        }
      }
    },
    "schemas": {
      "RequestDiagnosticLookup": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "request_id"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "pattern": "^[A-Za-z0-9_.-]+$"
          }
        }
      },
      "SuccessCode": {
        "type": "string",
        "const": "miniapp_success",
        "description": "请求成功时返回的稳定业务码。"
      },
      "RequestDiagnostic": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "request_id",
          "app_id",
          "occurred_at",
          "duration_ms",
          "http_method",
          "route",
          "http_status",
          "error_code",
          "expires_at"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "maxLength": 128
          },
          "app_id": {
            "type": "string",
            "maxLength": 64
          },
          "version": {
            "type": "string",
            "maxLength": 64
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "duration_ms": {
            "type": "integer",
            "minimum": 0
          },
          "http_method": {
            "type": "string",
            "maxLength": 10
          },
          "route": {
            "type": "string",
            "maxLength": 255,
            "description": "Gin 路由模板,不含查询串或实际路径参数。"
          },
          "http_status": {
            "type": "integer",
            "minimum": 200,
            "maximum": 599,
            "description": "普通 HTTP 失败状态或微信非零 errcode 对应的 HTTP 200。"
          },
          "error_code": {
            "type": "string",
            "maxLength": 64
          },
          "stage": {
            "type": "string",
            "maxLength": 64
          },
          "rule": {
            "type": "string",
            "maxLength": 64
          },
          "field": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^[A-Za-z0-9_.-]+$",
            "description": "JSON 解码或校验失败涉及的字段名;仅记录字段路径,不记录字段值。"
          },
          "failure_reason": {
            "type": "string",
            "maxLength": 128
          },
          "dependency": {
            "type": "string",
            "maxLength": 64
          },
          "dependency_result": {
            "type": "string",
            "maxLength": 64
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "request_id": {
                "type": "string",
                "maxLength": 128,
                "description": "与响应头 X-Request-ID 相同,用于查询服务端失败诊断。"
              },
              "details": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "reason": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      },
      "MetaEcoPaymentSucceededEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "create_time",
          "event_type",
          "resource"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "稳定事件 ID,重复投递时不变。"
          },
          "create_time": {
            "type": "string",
            "format": "date-time"
          },
          "event_type": {
            "type": "string",
            "const": "TRANSACTION.SUCCESS"
          },
          "resource": {
            "$ref": "#/components/schemas/MetaEcoPaymentSucceededResource"
          }
        }
      },
      "MetaEcoPaymentSucceededResource": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "app_id",
          "order_id",
          "business_type",
          "business_order_no",
          "transaction_id",
          "amount_minor",
          "currency",
          "paid_at",
          "status"
        ],
        "properties": {
          "app_id": {
            "type": "string"
          },
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "business_type": {
            "type": "string",
            "enum": [
              "trade",
              "shop"
            ]
          },
          "business_order_no": {
            "type": "string"
          },
          "transaction_id": {
            "type": "string"
          },
          "amount_minor": {
            "type": "integer",
            "minimum": 1
          },
          "currency": {
            "type": "string",
            "const": "CNY"
          },
          "paid_at": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "const": "paid"
          }
        }
      },
      "MetaEcoRefundSucceededEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "create_time",
          "event_type",
          "resource"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "稳定事件 ID,重复投递时不变。"
          },
          "create_time": {
            "type": "string",
            "format": "date-time"
          },
          "event_type": {
            "type": "string",
            "const": "REFUND.SUCCESS"
          },
          "resource": {
            "$ref": "#/components/schemas/MetaEcoRefundSucceededResource"
          }
        }
      },
      "MetaEcoRefundSucceededResource": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "app_id",
          "order_id",
          "business_type",
          "business_order_no",
          "transaction_id",
          "amount_minor",
          "currency",
          "paid_at",
          "refund_id",
          "business_refund_no",
          "refund_amount_minor",
          "refunded_at",
          "status"
        ],
        "properties": {
          "app_id": {
            "type": "string"
          },
          "order_id": {
            "type": "string",
            "format": "uuid"
          },
          "business_type": {
            "type": "string",
            "enum": [
              "trade",
              "shop"
            ]
          },
          "business_order_no": {
            "type": "string"
          },
          "transaction_id": {
            "type": "string"
          },
          "amount_minor": {
            "type": "integer",
            "minimum": 1
          },
          "currency": {
            "type": "string",
            "const": "CNY"
          },
          "paid_at": {
            "type": "string",
            "format": "date-time"
          },
          "refund_id": {
            "type": "string",
            "format": "uuid"
          },
          "business_refund_no": {
            "type": "string"
          },
          "refund_amount_minor": {
            "type": "integer",
            "minimum": 1
          },
          "refunded_at": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "const": "refunded"
          }
        }
      }
    },
    "responses": {
      "RequestDiagnosticResponse": {
        "description": "最近 7 天内同一应用的安全失败摘要。",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestID"
          },
          "Cache-Control": {
            "schema": {
              "type": "string",
              "const": "no-store"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "code",
                "data"
              ],
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/SuccessCode"
                },
                "data": {
                  "$ref": "#/components/schemas/RequestDiagnostic"
                }
              }
            }
          }
        }
      },
      "InvalidRequest": {
        "description": "请求参数无效。",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "RuntimeUnauthorized": {
        "description": "宿主身份、AppSecret、接口 token 或运行时会话无效。",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "NotFound": {
        "description": "请求的资源不存在。",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "ServiceUnavailable": {
        "description": "依赖的适配器或存储不可用。",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "headers": {
      "RequestID": {
        "description": "请求追踪 ID,用于关联客户端、网关和服务端日志。",
        "schema": {
          "type": "string",
          "maxLength": 128
        }
      }
    }
  }
}

返回 API 目录

MetaEco 小程序开发者文档 · Test · API 40.68.0