| 项目 | 说明 |
|---|---|
| 请求方法 | POST |
| Content-Type | application/json |
| 连接超时 | 3 秒 |
| 读取超时 | 5 秒 |
| 成功应答 | 响应 body 返回纯文本 success(不含引号、不含换行) |
| 失败判定 | HTTP 非 2xx、超时、或响应 body ≠ success |
| 重试次数 | 间隔 |
|---|---|
| 第 1 次 | 15 秒 |
| 第 2 次 | 30 秒 |
| 第 3 次 | 1 分钟 |
| 第 4 次 | 5 分钟 |
| 第 5 次 | 10 分钟 |
{
"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"
}| 字段 | 类型 | 说明 |
|---|---|---|
| event | string | 事件类型标识(见第六节) |
| timestamp | int | Unix 时间戳(秒) |
| nonce_str | string | 32 位随机字符串,防重放 |
| data | object | 业务数据,各事件不同(见第七节) |
| sign | string | 签名值,MD5 大写(见第五节) |
sign),其 中 data 字段使用 JSON 字符串参与签名key1=value1&key2=value2&... 格式&key={AppSecret}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×tamp=1722412800"
// 4. 追加 secret
stringSignTemp = stringA + "&key=your_app_secret"
// 5. 签名
sign = strtoupper(md5(stringSignTemp))| 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 | 已付款 | 登记付款完成 |
{
"out_order_no": "OO202507310001",
"status": 0,
"status_text": "待派单",
"game_name": "原神",
"total_quantity": 100,
"total_amount_cny": "5000.00"
}| 字段 | 类型 | 说明 |
|---|---|---|
| out_order_no | string | 请购单号 |
| status | int | 订单状态码(0=待派单) |
| status_text | string | 状态中文描述 |
| game_name | string | 游戏名称 |
| total_quantity | int | 总数量 |
| total_amount_cny | string | 总金额(元) |
{
"out_order_no": "OO202507310001",
"status": 3,
"status_text": "已派单",
"purchase_order_count": 2
}| 字段 | 类型 | 说明 |
|---|---|---|
| out_order_no | string | 请购单号 |
| status | int | 订单状态码(3=已派单) |
| status_text | string | 状态中文描述 |
| purchase_order_count | int | 本次生成的采购订单数量 |
{
"out_order_no": "OO202507310001",
"status": 5,
"status_text": "已完成"
}| 字段 | 类型 | 说明 |
|---|---|---|
| out_order_no | string | 请购单号 |
| status | int | 订单状态码(5=已完成 ) |
| status_text | string | 状态中文描述 |
{
"out_order_no": "OO202507310001",
"status": 8,
"status_text": "已取消",
"cancel_reason": "客户主动取消"
}| 字段 | 类型 | 说明 |
|---|---|---|
| out_order_no | string | 请购单号 |
| status | int | 订单状态码(8=已取消) |
| status_text | string | 状态中文描述 |
| cancel_reason | string | 取消原因 |
{
"out_order_no": "OO202507310001",
"status": 6,
"status_text": "已暂停"
}| 字段 | 类型 | 说明 |
|---|---|---|
| out_order_no | string | 请购单号 |
| status | int | 订单状态码(6=已暂停) |
| status_text | string | 状态中文描述 |
{
"out_order_no": "OO202507310001",
"status": 4,
"status_text": "已恢复"
}| 字段 | 类型 | 说明 |
|---|---|---|
| out_order_no | string | 请购单号 |
| status | int | 恢复后的订单状态码(如 4=执行中) |
| status_text | string | 状态中文描述 |