Customer RAG
适用说明
- 适用对象:客服、运营人员
- 用途:根据商户返回的
code 和 responseCode 快速定位问题,给出处理建议 - 开发者文档:标准
code 含义与集成实践请参阅 错误响应代码
占位符说明
以下为外部系统实际收到的全部错误码。{1} 为动态占位符,实际返回时会被具体内容替换。
未收录的 code
本手册未单独展开 code = "01"(处理中)与 code = "15"(超时)。请参阅 错误响应代码,并通过状态查询 API 确认订单进度。
认证类错误排查可参考 签名生成指南。
responseCode 解码规则
responseCode 为 7 位字符串,由三部分拼接:
responseCode = HTTP状态(3位) + 服务编码(2位) + caseCode(2位)
服务编码对照
| 服务编码 | API 路径 | 说明 |
|---|
90 | v2.0/transaction/pay-in | 收款 |
91 | v2.0/disbursement/pay-out | 代付 |
92 | v2.0/inquiry-status | 状态查询 |
code 与 HTTP 状态对照
| code | HTTP 状态前缀 | 分类 |
|---|
00 | 200 | 成功 |
10 | 400 | 请求参数异常 |
11 | 404 | 目标资源不存在 |
12 | 401 | 身份认证失败 |
13 | 429 | 请求频率超限 |
14 | 403 | 交易被禁止 |
16 | 400 | 账户余额不足 |
20 | 502 | 外部通道异常 |
99 | 500 | 系统内部异常 |
快速索引
按 code 归类的主索引表。message 级别细分见 错误码明细。
| code | responseCode 示例 | 分类 | 一级处理 | 处理层级 | 详情 |
|---|
00 | 20090xx / 20091xx / 20092xx | 成功 | 无需处理 | 客服自助 | #code-00 |
10 | 40090xx / 40091xx / 40092xx | 参数异常 | 根据 message 定位字段 | 客服自助 | #code-10 |
11 | 40490xx / 40491xx / 40492xx | 资源不存在 | 确认路径或商户 ID | 客服自助 | #code-11 |
12 | 40190xx / 40191xx / 40192xx | 认证失败 | 检查签名 / Token | 客服自助 → 技术支持 | #code-12 |
13 | 42990xx / 42991xx / 42992xx | 请求频繁 | 降频或查订单状态 | 客服自助 | #code-13 |
14 | 40390xx / 40391xx / 40392xx | 交易被禁止 | 必须看 message 判断 | 视场景转派 | #code-14 |
16 | 40090xx / 40091xx / 40092xx | 余额不足 | 告知商户充值 | 客服自助 | #code-16 |
20 | 50290xx / 50291xx / 50292xx | 外部通道异常 | 稍后重试 | 客服自助 → 技术支持 | #code-20 |
99 | 50090xx / 50091xx / 50092xx | 系统异常 | 记录报文 | 转技术支持 | #code-99 |
错误码明细
code = "00" — 成功
| responseCode | message | 服务 | 处理建议 |
|---|
2009000 | Successful | 收款 | 请求成功受理,无需处理 |
2009100 | Successful | 代付 | 请求成功受理,无需处理 |
2009200 | Successful | 状态查询 | 请求成功受理,返回订单状态 |
code = "10" — 请求参数异常
商户最常见的错误,客服可直接处理。
字段格式无效 / 参数无效(caseCode = 01)
收款(serviceCode = 90)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4009001 | Invalid Field Format [{1}] | Gateway 校验:时间戳格式错误、orderNo 含特殊字符、商户 ID 不一致 | 检查时间戳格式(24 小时内);orderNo 只含字母、数字、下划线、连字符;请求头与请求体的商户 ID 一致 |
4009001 | Invalid request parameter: [{1}] | Trade 校验:请求体参数不符合 Bean Validation 规则 | 根据 {1} 中的字段名修正请求参数 |
4009001 | Unsupported area [{1}] | 请求的地区不在支持范围内 | 确认该地区是否已开通支付服务 |
4009001 | Unsupported currency [{1}] | 请求的币种不在支持范围内 | 确认该地区支持的币种列表 |
4009001 | Currency does not match area | 请求币种与地区不匹配 | 修改币种为该地区支持的币种 |
4009001 | Duplicate pay order | 代收订单号重复 | 先查询该 orderNo 的订单状态,如已成功无需再提交 |
4009001 | Invalid settlement amount | 收款结算金额非法 | 检查金额是否为正数、小数位是否正确 |
代付(serviceCode = 91)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4009101 | Invalid Field Format [{1}] | Gateway 校验:时间戳格式错误、orderNo 含特殊字符 | 检查时间戳格式;orderNo 只含字母、数字、下划线、连字符 |
4009101 | Invalid request parameter: [{1}] | Trade 校验:请求体参数不符合规则 | 根据 {1} 中的字段名修正请求参数 |
4009101 | Unsupported area [{1}] | 请求的地区不在支持范围内 | 确认该地区是否已开通代付服务 |
4009101 | Unsupported currency [{1}] | 请求的币种不在支持范围内 | 确认该地区支持的币种列表 |
4009101 | Currency does not match area | 请求币种与地区不匹配 | 修改币种为该地区支持的币种 |
4009101 | Duplicate payout order | 代付订单号重复 | 先查询该 orderNo 的订单状态 |
4009101 | Invalid payout amount | 代付金额非法 | 检查金额是否为正数、是否在限额范围内 |
状态查询(serviceCode = 92)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4009201 | Invalid Field Format [{1}] | Gateway 校验:请求参数格式错误 | 检查请求参数格式 |
4009201 | Invalid request parameter: [{1}] | Trade 校验:请求体参数不符合规则 | 根据 {1} 中的字段名修正请求参数 |
必填字段缺失(caseCode = 02)
| responseCode | message | 服务 | 处理建议 |
|---|
4009002 | Invalid Mandatory Field [{1}] | 收款 | 根据 {1} 中的字段名补充缺失的必填项 |
4009102 | Invalid Mandatory Field [{1}] | 代付 | 同上 |
4009202 | Invalid Mandatory Field [{1}] | 查询 | 同上 |
常见缺失字段:Content-Type、X-TIMESTAMP、X-SIGNATURE、X-PARTNER-ID、Authorization
code = "11" — 目标资源不存在
路由无效(caseCode = 01)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4049001 | Invalid Routing | 收款 | 请求的 URL 路径无法匹配到任何服务 | 确认请求路径为 v2.0/transaction/pay-in |
4049101 | Invalid Routing | 代付 | 请求的 URL 路径无法匹配到任何服务 | 确认请求路径为 v2.0/disbursement/pay-out |
4049201 | Invalid Routing | 查询 | 请求的 URL 路径无法匹配到任何服务 | 确认请求路径为 v2.0/inquiry-status |
商户不存在(caseCode = 02)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4049002 | Partner :{商户ID} Not Found | 收款 | 商户不存在或已禁用 | ① 确认商户 ID 是否正确;② 在后台查询该商户状态 |
4049102 | Partner :{商户ID} Not Found | 代付 | 商户不存在或已禁用 | 同上 |
4049202 | Partner :{商户ID} Not Found | 查询 | 商户不存在或已禁用 | 同上 |
code = "12" — 身份认证失败
涉及安全认证,如客服无法解决需转技术支持。
未授权(caseCode = 00)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4019000 | Unauthorized. [{1}] | 收款 | RSA 签名验证失败、公钥未配置、IP 不在白名单 | ① 确认 RSA 公钥配置;② 确认签名算法(SHA256withRSA);③ 确认签名串拼接顺序 |
4019100 | Unauthorized. [{1}] | 代付 | 同上 | 同上 |
4019200 | Unauthorized. [{1}] | 查询 | 同上 | 同上 |
令牌无效(caseCode = 01)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4019001 | Invalid Token [{1}] | 收款 | JWT Token 无效或已过期 | ① 确认 Access Token 是否有效;② 重新获取 Token;③ 确认 Token 放在 Authorization 请求头中 |
4019101 | Invalid Token [{1}] | 代付 | 同上 | 同上 |
4019201 | Invalid Token [{1}] | 查询 | 同上 | 同上 |
code = "13" — 请求频繁
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4299000 | TOO_MANY_REQUESTS | 收款 | 请求频率超过限制,或同一订单正在处理中 | 降低请求频率后重试。如果是订单处理中,先查询订单状态 |
4299100 | TOO_MANY_REQUESTS | 代付 | 同上 | 同上 |
4299200 | TOO_MANY_REQUESTS | 查询 | 请求频率超过限制 | 降低请求频率后重试 |
code = "14" — 交易被禁止
最复杂的一类,必须看 message 具体内容判断。
交易过期(caseCode = 00)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4039000 | Transaction Expired | 收款 | 收款订单已超过有效支付时间 | 告知商户订单已过期,需要重新下单 |
代付和状态查询不涉及交易过期场景。
黑名单拦截(caseCode = 01)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4039001 | Do Not Honor, [{1}] | 收款 | IP 黑名单、邮箱黑名单、账户号黑名单、身份证号黑名单 | 转安全团队处理 |
4039101 | Do Not Honor, [{1}] | 代付 | 同上 | 转安全团队处理 |
4039201 | Do Not Honor, [{1}] | 查询 | 同上 | 转安全团队处理 |
交易不被允许(caseCode = 02)
收款(serviceCode = 90)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4039002 | Transaction Not Permitted.[{1}] | 风控拒绝(105)、商户状态无效(109)、订单已失败(131)、操作不允许(132) | 根据 {1} 中的具体信息判断原因 |
4039002 | Transaction declined by risk control | 交易触发风控规则 | 转风控团队审核 |
4039002 | Merchant status is invalid | 商户已被禁用或状态异常 | 在后台检查商户状态 |
4039002 | Pay order has failed | 对已失败的订单执行了操作 | 告知商户该订单已失败 |
4039002 | Pay order operation not allowed in current status | 当前状态下不允许此操作 | 引导商户检查订单状态 |
代付(serviceCode = 91)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4039102 | Transaction Not Permitted.[{1}] | 风控拒绝(105)、商户状态无效(109) | 根据 {1} 中的具体信息判断原因 |
4039102 | Transaction declined by risk control | 交易触发风控规则 | 转风控团队审核 |
4039102 | Merchant status is invalid | 商户已被禁用或状态异常 | 在后台检查商户状态 |
4039102 | Payout order operation not allowed in current status | 代付订单当前状态不允许此操作 | 引导商户检查订单状态 |
状态查询(serviceCode = 92)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4039202 | Transaction Not Permitted.[{1}] | 同上 | 根据 {1} 中的具体信息判断原因 |
商户黑名单 / IP 白名单(caseCode = 03)
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4039003 | Merchant Blacklisted. {1} | 收款 | 商户服务器 IP 不在 IP 白名单中 | ① 确认商户服务器 IP 是否变更;② 收集新 IP,转技术支持添加白名单 |
4039103 | Merchant Blacklisted. {1} | 代付 | 同上 | 同上 |
4039203 | Merchant Blacklisted. {1} | 查询 | 同上 | 同上 |
配置权限不足(caseCode = 04)
收款(serviceCode = 90)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4039004 | Insufficient configuration permission. [{1}] | 收款产品配置不可用(121)、无可用收款通道(122) | 引导商户登录后台,进入「通道配置」页面,确保至少有一个通道处于「启用」状态 |
4039004 | Pay product config unavailable | 商户未配置收款产品 | 引导商户配置收款产品 |
4039004 | No active pay channel | 已配置的收款通道全部不可用 | 检查通道状态,如维护需告知商户 |
代付(serviceCode = 91)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4039104 | Insufficient configuration permission. [{1}] | 代付产品配置不可用(141)、无可用代付通道(142) | 引导商户登录后台,检查代付通道配置 |
4039104 | Payout config unavailable | 商户未配置代付产品 | 引导商户配置代付产品 |
4039104 | No active payout channel | 已配置的代付通道全部不可用 | 检查代付通道状态 |
状态查询(serviceCode = 92)
| responseCode | message | 触发场景 | 处理建议 |
|---|
4039204 | Insufficient configuration permission. [{1}] | 商户配置不完整 | 引导商户完善配置 |
code = "16" — 余额不足
| responseCode | message | 服务 | 触发场景 | 处理建议 |
|---|
4009003 | Insufficient Balance. [{1}] | 收款 | 商户账户可用余额不足 | 告知商户账户余额不足,需要先充值 |
4009103 | Insufficient Balance. [{1}] | 代付 | 商户账户可用余额不足,无法冻结代付所需金额 | 告知商户账户余额不足,需要先充值再进行代付 |
4009203 | Insufficient Balance. [{1}] | 查询 | 商户账户可用余额不足 | 告知商户账户余额不足 |
code = "20" — 外部通道错误
收款(serviceCode = 90)
| responseCode | message | 触发场景 | 处理建议 |
|---|
5029000 | External request error: {1} | Gateway 调用下游外部接口失败 | 外部通道临时异常,稍后重试。如频繁出现转技术支持 |
5029000 | Callback notify failed, [{1}] | Trade 侧商户回调 URL 不可达 | 检查商户回调 URL 是否可达 |
5029000 | Pay channel timeout or interrupted | 通道调用超时 | 通道临时异常,稍后重试 |
5029000 | Unknown pay status | 通道返回无法识别的状态 | 转技术支持确认通道返回内容 |
代付(serviceCode = 91)
| responseCode | message | 触发场景 | 处理建议 |
|---|
5029100 | External request error: {1} | Gateway 调用下游外部接口失败 | 外部通道临时异常,稍后重试 |
5029100 | Callback notify failed, [{1}] | Trade 侧商户回调 URL 不可达 | 检查商户回调 URL 是否可达 |
5029100 | Payout channel timeout or interrupted | 代付通道调用超时 | 通道临时异常,稍后重试 |
5029100 | Unknown payout status | 代付通道返回无法识别的状态 | 转技术支持确认通道返回内容 |
状态查询(serviceCode = 92)
| responseCode | message | 触发场景 | 处理建议 |
|---|
5029200 | External request error: {1} | Gateway 调用下游外部接口失败 | 外部通道临时异常,稍后重试 |
code = "99" — 通用错误
系统内部异常,必须记录完整报文并转技术支持。
收款(serviceCode = 90)
| responseCode | message 示例 | 根因 | 处理建议 |
|---|
5009000 | Payment method: XXX inactive for merchant: XXX | 商户的支付方式未激活 | 引导商户在后台激活该支付方式 |
5009000 | Failed to generate order number | 订单号生成服务异常 | 系统临时异常,稍后重试 |
5009000 | Unable to create pay order | 创建收款订单失败 | 记录 orderNo/tradeNo 转技术排查 |
5009000 | Pay channel error: {1} | 支付通道返回拒绝 | 转技术支持确认通道状态 |
5009000 | Pay order not found | 代收订单不存在 | 确认 orderNo/tradeNo 是否正确 |
5009000 | The requested pay order was not found | 平台单号对应代收订单不存在 | 确认订单号是否正确 |
5009000 | System error: {1} | 系统通用异常 | 记录完整报文,立即转技术支持 |
代付(serviceCode = 91)
| responseCode | message 示例 | 根因 | 处理建议 |
|---|
5009100 | Payment method: XXX inactive for merchant: XXX | 商户的支付方式未激活 | 引导商户在后台激活该支付方式 |
5009100 | Failed to generate order number | 订单号生成服务异常 | 系统临时异常,稍后重试 |
5009100 | Unable to create payout order | 创建代付订单失败 | 记录 orderNo/tradeNo 转技术排查 |
5009100 | Payout channel error: {1} | 代付通道返回拒绝 | 转技术支持确认通道状态 |
5009100 | Payout order not found | 代付订单不存在 | 确认订单号是否正确 |
5009100 | The requested payout order was not found | 平台单号对应代付订单不存在 | 确认订单号是否正确 |
5009100 | The requested withdrawal order was not found | 提现订单不存在 | 确认提现订单号 |
5009100 | System error: {1} | 系统通用异常 | 记录完整报文,立即转技术支持 |
状态查询(serviceCode = 92)
| responseCode | message 示例 | 根因 | 处理建议 |
|---|
5009200 | Order not found | 订单不存在 | 确认 orderNo/tradeNo 是否正确 |
5009200 | System error: {1} | 系统通用异常 | 记录完整报文,立即转技术支持 |
快速话术库
参数类(code = 10 / 11)
| 场景 | 适用 code | 话术 |
|---|
| 参数格式错误 | 10 | 「您的请求参数存在格式问题:{具体原因}。请检查后重试。」 |
| 必填字段缺失 | 10 | 「您的请求缺少必填字段 {字段名},请补充后重试。」 |
| 订单重复 | 10 | 「订单号 {orderNo} 已处理过,请先查询该订单状态,不要重复提交。」 |
| 商户不存在 | 11 | 「商户 ID {merchantId} 不存在或已禁用,请确认后重试。」 |
| 路由无效 | 11 | 「请求路径无效,请确认您使用的是正确的 API 地址。收款:v2.0/transaction/pay-in,代付:v2.0/disbursement/pay-out」 |
认证类(code = 12 / 13)
| 场景 | 适用 code | 话术 |
|---|
| 签名失败 | 12 | 「签名验证失败,请检查:① RSA 公钥配置是否正确;② 签名算法是否为 SHA256withRSA;③ 签名串拼接是否与文档一致。」 |
| Token 无效 | 12 | 「Access Token 已过期或无效,请重新获取 Token 后重试。」 |
| 请求频繁 | 13 | 「请求频率过高,请稍后重试。建议控制请求频率。」 |
| 订单处理中 | 13 | 「该订单正在处理中,请先查询订单状态,不要重复提交。」 |
风控与限制类(code = 14 / 16)
| 场景 | 适用 code | 话术 |
|---|
| 交易过期 | 14 | 「订单已过期,请重新下单。」 |
| 黑名单拦截 | 14 | 「您的请求被安全策略拦截,我们需要进一步核实。请提供商户 ID 和请求时间。」→ 转安全团队 |
| 风控拒绝 | 14 | 「交易被风控系统拒绝,我们需要进一步审核。」→ 转风控团队 |
| IP 白名单 | 14 | 「您的服务器 IP 不在白名单中,请确认 IP 地址或联系技术支持添加。」 |
| 配置不足 | 14 | 「您的商户账户尚未配置完整的收款/代付通道,请登录后台配置至少一个可用通道。」 |
| 余额不足 | 16 | 「您的商户账户余额不足,请先充值再进行代付操作。」 |
系统类(code = 20 / 99)
| 场景 | 适用 code | 话术 |
|---|
| 通道异常 | 20 | 「第三方支付通道出现临时异常,请稍后重试。如持续出现我们会及时排查。」→ 转技术支持 |
| 系统异常 | 99 | 「系统出现异常,我们已记录相关信息并转交技术团队排查。请稍后重试。」→ 记录完整报文,转技术支持 |