错误码
建单时,ST Pay 按以下顺序检查,同时违反多项时只返回第一个错误:
签名 → 时间戳 → 来源 IP → 商户状态 → 必填字段与格式 → callback_url 的环境与地址 → 单笔上下限 → 商户单号重复 →(代收)同一会员待审批订单上限 →(代收)收款账户与尾数分配 /(代付)余额。
在此之前:请求体不是 JSON 对象或 Content-Type 不是 application/json,直接返回 invalid_parameter;未传 api_identity 或 sign 返回 invalid_signature。
message 实际返回繁体中文,程序请以 code 判断。下表 message 列为系统返回的原文。
code | HTTP | message | 原因与处理方式 |
|---|---|---|---|
invalid_signature | 401 | 簽章驗證失敗 | api_identity 错误、凭证已停用,或签名不一致。请对照签名中的示例核对程序,并确认使用了对应环境的凭证。字段值传成数字或布尔值会返回此错误或 invalid_parameter,所有值请以字符串传送;未传 api_identity 或 sign 也是。 |
timestamp_expired | 400 | 請求時間與伺服器時間相差超過 5 分鐘,請校正您的伺服器時間(伺服器目前時間:yyyy-MM-dd HH:mm:ss) | timestamp 与 ST Pay 服务器时间相差超过 5 分钟(过去或未来都算)。消息中附有服务器当前时间,可据此判断差距;请开启 NTP 校准服务器时间,并在发送当下才取时间签名。 |
ip_not_allowed | 403 | 來源 IP 不在白名單 | 请确认服务器实际的出口 IP,并请 ST Pay 将其加入白名单;加入后约 1 分钟生效。来源 IP 不在任何白名单时,请求在网关就被拦下:返回 HTTP 403,响应体是 HTML 而不是 JSON,处理方式相同。 |
merchant_disabled | 403 | 商戶已停用 | 商户停用期间不能建单,请联系 ST Pay。 |
permission_denied | 403 | 無此操作權限 | 通常是 /api/v1/ 下的路径拼写错误。使用 GET,或路径不在 /api/v1/ 下时,网关直接返回 HTTP 404(响应体不是 JSON)。 |
missing_parameter | 400 | 缺少必填欄位 | 必填字段未传、为 null 或空字符串;callback_url 全是空白;银行转账代付缺少银行字段;查单未传任何单号。 |
invalid_parameter | 400 | 欄位值不合法 | 字段值的格式、长度、字符或枚举值不合法;字段值不是字符串;请求体不是合法的 JSON 对象,或 Content-Type 不是 application/json;callback_url 格式不符(规则见 Callback 地址);FPS 代付传了银行字段;银行代码不在列表内。 |
invalid_amount | 400 | 金額格式不正確 | 金额为 0、负数、超过 2 位小数(按字面计算,1000.500 也算 3 位)、大于 9999999999999999.99,或不是数字。 |
missing_member_identity | 400 | 請提供會員唯一識別或真實姓名 | 代收建单时 merchant_user_id 与 payer_name 均未传。 |
invalid_callback_url | 400 | Callback 網址不符合規定:不可為本機或內網位址 | 建单的 callback_url 主机是本机、内网地址、内部域名、非标准的 IP 写法。见 Callback 地址。格式错误(不是网址、超过 500 个字符、含空白或其他格式规则,见同一节)返回 invalid_parameter。 |
amount_out_of_range | 422 | 金額超出限額 | 原始金额或代付金额超出单笔上下限。 |
merchant_order_no_duplicate | 409 | 商戶單號重複 | 见重复请求与结果确认。 |
user_active_orders_limit | 422 | 有效訂單已達上限 | 同一会员已有 10 笔待审批的代收单。请等待其中的订单完成或到期后再创建。 |
channel_full | 422 | 通道已滿,請輸入其他金額再試 | 同一通道、同一原始金额的识别尾数已全部被待审批订单占用。请让付款人换一个金额再试。 |
no_available_card | 422 | 通道已滿,請輸入其他金額再試 | 该通道当前没有可用的收款账户。可稍后再试或改用另一个通道;持续出现请联系 ST Pay。 |
insufficient_balance | 422 | 商戶餘額不足 | 代付建单时,可用余额小于代付金额加手续费。 |
order_not_found | 404 | 查無此單 | 订单不存在、不属于您,或已超过保存期限被删除。 |
query_conflict | 400 | 訂單號與商戶單號指向不同訂單 | 查单时同时传了两个单号,但它们不是同一笔订单。 |
internal_error | 500 | 系統錯誤,請以商戶單號查單確認結果 | ST Pay 内部错误,订单可能已创建也可能未创建。不要直接视为失败,请以商户单号查单确认。 |
channel_full 与 no_available_card 的 message 相同,请以 code 区分。
收到 invalid_parameter、invalid_signature 等错误又找不出原因时,请提供 api_identity、商户单号(查单则提供查询的单号)与发生时间(UTC+8),请 ST Pay 对接联系人查询 API 错误记录,可查到是哪个字段有问题或签名失败的原因。ST Pay 只记录 api_identity 正确的请求;api_identity 本身错误时查不到,请先核对。