查单
查询订单当前的状态与金额。以下情况请通过查单确认结果:
- 未收到 Callback。
- 代收单发生超时入账(不发送 Callback)。
- 建单请求超时,或收到
internal_error。待付款的订单会一并返回付款信息,可以继续让付款人支付该订单(见下方)。 - 建单返回
merchant_order_no_duplicate,需要了解原订单状态。
查单是只读操作,可以重复调用。
请求字段
代收查单与代付查单的请求字段相同:
| 字段 | 必填 | 说明 |
|---|---|---|
api_identity | 是 | ST Pay 分配的 API 身份 |
order_no | 二选一 | ST Pay 订单号 |
merchant_order_no | 二选一 | 您的商户单号 |
timestamp | 是 | 发送请求当下的时间(UTC+8,yyyy-MM-dd HH:mm:ss),与 ST Pay 服务器时间相差超过 5 分钟会被拒绝,见请求与响应格式 |
sign | 是 | 见签名 |
- 两个都未传:返回
missing_parameter。 - 两个都传:必须指向同一笔订单,指向不同订单时返回
query_conflict;其中一个查不到时返回order_not_found。 - 只能查到您自己的订单。订单不存在、属于其他商户,或已超过 6 个月被删除,均返回
order_not_found。
可能的错误:invalid_signature、timestamp_expired、ip_not_allowed、missing_parameter、invalid_parameter、query_conflict、order_not_found、internal_error。
代收查单
POST /api/v1/collect/orders/query
请求示例
{
"api_identity": "qp_Xk3vT9aLm2QwE7rB1nZc",
"merchant_order_no": "MO20261013-0001",
"timestamp": "2026-10-13 10:35:00",
"sign": "c29089b08a6fdcd3d9c17a404cae90a4aaa0a79210778e53997e4f9f43bb6462"
}
响应字段
| 字段 | 说明 |
|---|---|
order_no | ST Pay 订单号 |
merchant_order_no | 商户单号 |
channel_type | fps 或 bank_transfer |
status | pending、success、rejected、late_credited,见订单状态 |
amount | 原始金额 |
payable_amount | 订单金额(原始金额加尾数) |
received_amount | 实收金额,仅 success、late_credited 有值,其他状态为 null |
fee | 手续费,success、late_credited 有值;rejected 为 "0.00";pending 为 null |
settlement_amount | 结算金额(计入您余额的金额),仅 success、late_credited 有值,其他状态为 null |
created_at | 建单时间 |
finished_at | 完成时间,pending 为 null |
reject_reason | rejected 时的拒绝原因文本:ST Pay 人工拒绝时为所选原因(可能未选择,此时为 null);系统超时拒绝时为“訂單已逾時”(系统返回的繁体中文原文)。这是供人阅读的文本,不是代码值。其他状态请忽略此字段 |
payment_url | 付款页网址,与建单响应相同。仅待付款且尚未到失效时间、建单时使用 url 模式的订单才有 |
bank_name、bank_code | 银行名称与代码。仅待付款且尚未到失效时间、建单时使用 json 模式且通道为 bank_transfer 的订单才有 |
account_no、account_name | 完整收款账号与户名(或收款姓名)。仅待付款且尚未到失效时间、建单时使用 json 模式的订单才有 |
expires_at | 失效时间。仅待付款且尚未到失效时间的订单才有 |
sign | 响应签名,以本次请求使用的密钥计算,见验证响应 |
建单请求超时未收到响应时,用商户单号查单:查到 pending 且带有上述付款信息,就可以将付款人引导至 payment_url(或显示收款账号),继续支付该订单,无需更换商户单号重新建单。失效时间沿用建单时的 expires_at,不会延长;超过失效时间或订单已结束,就不再返回付款信息。请先验签,通过后才使用这些信息。
响应示例
待付款(url 模式)
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "C202610131000051230000",
"merchant_order_no": "MO20261013-0001",
"channel_type": "fps",
"status": "pending",
"amount": "1000.00",
"payable_amount": "1000.37",
"received_amount": null,
"fee": null,
"settlement_amount": null,
"created_at": "2026-10-13 10:00:05",
"finished_at": null,
"reject_reason": null,
"payment_url": "https://pay.vincoterra.com/pay/QzIwMjYxMDEzMTAwMDA1MTIzMDAwMA.v3Kd9QeLr7Zp1sWm4XyT8bN2cF6hJ0aG5uE-iOkRtYw",
"expires_at": "2026-10-13 10:30:05",
"sign": "8cba06866fc16ea3b585309cd13d851d7bda49bf2e95605275f2d99047620487"
}
}
成功
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "C202610131000051230000",
"merchant_order_no": "MO20261013-0001",
"channel_type": "fps",
"status": "success",
"amount": "1000.00",
"payable_amount": "1000.37",
"received_amount": "1000.37",
"fee": "25.00",
"settlement_amount": "975.37",
"created_at": "2026-10-13 10:00:05",
"finished_at": "2026-10-13 10:12:30",
"reject_reason": null,
"sign": "889c767037b6748de1d9fa399129b97012c85f3599a0cce9aff289cf79477626"
}
}
系统超时拒绝
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "C202610131001178820000",
"merchant_order_no": "MO20261013-0002",
"channel_type": "bank_transfer",
"status": "rejected",
"amount": "2000.00",
"payable_amount": "2000.58",
"received_amount": null,
"fee": "0.00",
"settlement_amount": null,
"created_at": "2026-10-13 10:01:17",
"finished_at": "2026-10-13 10:31:17",
"reject_reason": "訂單已逾時",
"sign": "6a99a7a5085900260830aee441271fb2a0e94d88d33e49b15bfb5a46d6a6e05e"
}
}
订单不存在
{
"code": "order_not_found",
"message": "查無此單",
"data": null
}
代付查单
POST /api/v1/payout/orders/query
请求示例
{
"api_identity": "qp_Xk3vT9aLm2QwE7rB1nZc",
"order_no": "P202610131005224410000",
"timestamp": "2026-10-13 10:40:00",
"sign": "adae0ba479bd688b63425e34dcb77cbf5114b34bee68e266ba045ea69748f2b9"
}
响应字段
| 字段 | 说明 |
|---|---|
order_no | ST Pay 订单号 |
merchant_order_no | 商户单号 |
channel_type | fps 或 bank_transfer |
status | pending、paid、rejected,见订单状态 |
amount | 代付金额 |
fee | 手续费,paid 有值;rejected 为 "0.00";pending 为 null |
total_deducted | 实扣总额(代付金额加手续费),仅 paid 有值,其他状态为 null |
created_at | 建单时间 |
finished_at | 完成时间,pending 为 null |
reject_reason | rejected 时的拒绝原因文本(可能未选择,此时为 null)。其他状态请忽略此字段 |
sign | 响应签名,以本次请求使用的密钥计算,见验证响应 |
响应示例
{
"code": "OK",
"message": "成功",
"data": {
"order_no": "P202610131005224410000",
"merchant_order_no": "PO20261013-0001",
"channel_type": "fps",
"status": "paid",
"amount": "500.00",
"fee": "7.50",
"total_deducted": "507.50",
"created_at": "2026-10-13 10:05:22",
"finished_at": "2026-10-13 10:20:41",
"reject_reason": null,
"sign": "67d2dfa30d5df0d5456f706400e22faaf5acbb22b164885d5e08f1102e8538a7"
}
}