ST Pay 商户 APIST Pay 商户 API
指南
API
错误码
商户后台
AI 协助对接
  • 繁體中文
  • 简体中文
  • English
指南
API
错误码
商户后台
AI 协助对接
  • 繁體中文
  • 简体中文
  • English
  • 开始

    • 概览
    • 请求与响应格式
    • 身份验证与 IP 白名单
    • 签名
    • 商户后台
    • AI 辅助对接
  • API

    • 代收建单
    • 代付建单
    • 查单
    • Callback 通知
  • 参考

    • 订单状态与金额
    • 重复请求与结果确认
    • 错误码
    • 银行代码
    • 上线前检查清单

查单

查询订单当前的状态与金额。以下情况请通过查单确认结果:

  • 未收到 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_noST Pay 订单号
merchant_order_no商户单号
channel_typefps 或 bank_transfer
statuspending、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_reasonrejected 时的拒绝原因文本: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_noST Pay 订单号
merchant_order_no商户单号
channel_typefps 或 bank_transfer
statuspending、paid、rejected,见订单状态
amount代付金额
fee手续费,paid 有值;rejected 为 "0.00";pending 为 null
total_deducted实扣总额(代付金额加手续费),仅 paid 有值,其他状态为 null
created_at建单时间
finished_at完成时间,pending 为 null
reject_reasonrejected 时的拒绝原因文本(可能未选择,此时为 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"
  }
}
Prev
代付建单
Next
Callback 通知