错误码¶
为简化您的流程 SPIN 会在内部完成对请求状态码的处理,您将直接获得响应数据,如有异常,则异常信息包含在响应数据中,示例如下(仅以支付为例):
Java
// 调用SPIN的接口获得的返回报文,转换为JSON格式
JSONObject jsonRes = JSON.parseObject(responseStr);
String responseCode = jsonRes.getString("resp_code");
// resp_code为10000时代表接口调用成功
if ("10000".equals(responseCode)) {
// 成功调用接口
String responseData = jsonRes.getString("data");
String responseSign = jsonRes.getString("sign");
// 使用汇付公钥验签
if (!RsaUtils.verify(responseData, PUBLIC_KEY, responseSign)) {
// 验签失败处理
return;
}
JSONObject dataObj = JSON.parseObject(responseData);
String subRespCode = dataObj.getString("sub_resp_code");
String subRespDesc = dataObj.getString("sub_resp_desc");
// 业务处理成功时业务返回码为00000000
if ("00000000".equals(subRespCode)) {
// 业务处理成功
System.out.println("处理成功");
} else {
// 业务处理失败
System.out.println("处理失败");
}
} else {
// 调用接口出错时,resp_desc为错误描述
String responseCode = jsonRes.getString("resp_desc");
// 调用错误处理
}
错误响应数据¶
SPIN 的错误响应中会包括错误码 resp_code、简单的描述信息 resp_desc 及用来描述错误发生原因的信息。
错误代码中的 resp_code 以及 resp_desc 只是为每一个错误给调用方提供一个简单的解释,resp_code 返回成功,仅代表SPIN接口调用成功,此时会返回业务报文 data。
至于业务处理是否成功,需要获取业务报文中的业务返回码 sub_resp_code 以及业务返回描述 sub_resp_desc,详见 业务返回码。
返回数据示例¶
{
"resp_code":"40002",
"resp_desc":"验签失败"
}
网关返回码¶
| 返回码 | 说明 |
|---|---|
| 10000 | 成功调用 |
| 20000 | 服务不可用请联系客服 |
| 20001 | 权限不足 |
| 40001 | 无效参数 |
| 40002 | 验签失败 |
业务响应数据¶
SPIN 的业务响应数据中会包括业务返回码 sub_resp_code、业务返回描述 sub_resp_desc 以用来描述业务处理的具体信息。
返回数据示例¶
{
"sub_resp_code":"request_param_error",
"sub_resp_desc":"金额格式非法,格式为 0.00"
}
业务返回码¶
扫码类返回码¶
适用扫码交易、出金、账户类交易
| 返回码 | 说明 |
|---|---|
| 00000000 | 处理成功,实际交易结果以 trans_stat 为准 |
| 00000100 | 交易正在处理中 |
| 10000000 | 无效参数 |
| 10000001 | 原交易没有处理完成 |
| 10000002 | 退款金额大于可退金额 |
| 10000003 | 退款金额大于待确认金额 |
| 10000004 | 手续费退款金额大于可退金额 |
| 10000005 | 银联聚合补账不允许退款 |
| 10000006 | 必须传入分账串 |
| 10000007 | 该退款不支持传入分账 |
| 10000008 | 退款分账金额不能大于可退分账金额 |
| 10000009 | 该交易不支持部分退款 |
| 10000010 | 含有未知的子客户号 |
| 10000011 | 手续费子客户和原交易的不一致 |
| 10000012 | 优惠交易传入的分账金额总和不等于结算金额 |
| 10000013 | 分账金额总和不等于退款订单金额 |
| 10000014 | 数据库更新失败 |
| 10000015 | 不允许关闭一分钟以内的订单 |
| 10000016 | 原订单已为终态,请发起查询交易获取 |
| 10000017 | 该交易暂不支持银联二维码 |
| 10000018 | 关单失败 |
| 10000019 | 手续费子客户和原交易的不一致 |
| 10000020 | 没有退款权限 |
| 10000021 | 没有分账退款权限 |
| 10000022 | 退款分账不能为空 |
| 20000000 | 重复交易 |
| 20000002 | 权限不足 |
| 20000003 | 账户已被冻结 |
| 20000004 | 交易不存在 |
| 20000005 | 商户不存在 |
| 20000006 | 商户状态异常 |
| 20000007 | 结算卡不存在 |
| 20000008 | 账户信息不存在 |
| 20000009 | 手续费账户信息不存在 |
| 20000010 | SSP子客户号和账户号无效 |
| 20000011 | 手续费未配置 |
| 20000012 | 分账金额不等于订单总金额 |
| 20000013 | 交易未完全成功 |
| 20000014 | 已无可确认金额 |
| 20000015 | 确认参数或确认手续费承担方式与原交易冲突 |
| 20000016 | 原交易发起方与此交易不一致 |
| 20000017 | 交易非延迟入账 |
| 30000000 | 调用收银台退款接口失败 |
| 30000001 | 收银台校验失败 |
| 90000000 | 交易失败,请重试 |
| 90000001 | 交易存在风险,请稍后再试 |
| 90000002 | 风控拦截 |
| 99999999 | 系统异常,请稍后重试 |
线上交易返回码¶
适用于网银类交易、快捷、代扣类交易
| 返回码 | 说明 |
|---|---|
| 00000000 | 处理成功,实际交易结果以 trans_stat 为准 |
| 00000100 | 交易正在处理中 |
| 10000000 | 无效参数 |
| 10000001 | 原交易没有处理完成 |
| 10000002 | 退款金额大于可退金额 |
| 10000003 | 退款金额大于待确认金额 |
| 10000004 | 手续费退款金额大于可退金额 |
| 10000005 | 银联聚合补账不允许退款 |
| 10000006 | 必须传入分账串 |
| 10000007 | 该退款不支持传入分账 |
| 10000008 | 退款分账金额不能大于可退分账金额 |
| 10000009 | 该交易不支持部分退款 |
| 10000010 | 含有未知的子客户号 |
| 10000011 | 手续费子客户和原交易的不一致 |
| 10000012 | 优惠交易传入的分账金额总和不等于结算金额 |
| 10000013 | 分账金额总和不等于退款订单金额 |
| 10000014 | 数据库更新失败 |
| 10000015 | 不允许关闭一分钟以内的订单 |
| 10000016 | 原订单已为终态,请发起查询交易获取 |
| 10000017 | 该交易暂不支持银联二维码 |
| 10000018 | 关单失败 |
| 10000019 | 手续费子客户和原交易的不一致 |
| 10000020 | 没有退款权限 |
| 10000021 | 没有分账退款权限 |
| 10000022 | 退款分账不能为空 |
| 10000023 | 风控异常 |
| 20000000 | 重复交易 |
| 20000002 | 权限不足 |
| 20000003 | 账户已被冻结 |
| 20000004 | 交易不存在 |
| 20000005 | 数据库更新失败 |
| 20000006 | 商户状态异常 |
| 20000007 | 结算卡不存在 |
| 20000008 | 账户信息不存在 |
| 20000009 | 手续费账户信息不存在 |
| 20000010 | 子客户号和账户号无效 |
| 20000011 | 手续费未配置 |
| 20000012 | 充值仅支持借记卡 |
| 20000013 | 页面数据被篡改 |
| 20000014 | 订单已过期 |
| 20000015 | 短信发送频繁 |
| 20000016 | 请重新发送短信 |
| 20000017 | 短信发送中 |
| 20000018 | 用户不存在 |
| 20000019 | 绑卡信息不存在 |
| 20000020 | 贷记卡不支持充值 |
| 20000021 | 银行卡号不正确 |
| 20000022 | 订单信息不匹配 |
| 20000023 | 不支持该银行卡号 |
| 20000024 | 数据加解密异常 |
| 20000025 | 随机因子异常 |
| 20000026 | 银行卡相关信息不完整或格式不正确 |
| 20000027 | 商户证件信息不存在 |
| 20000028 | 商户不支持该银行 |
| 20000029 | 用户与商户关系不存在 |
| 20000030 | 无任何银行信息 |
| 20000031 | 充值不支持延时分账 |
| 20000032 | 代扣支付不支持贷记卡 |
| 20000033 | 未开通分期支付功能 |
| 20000034 | 未开通银行卡分期 |
| 20000035 | 无对应的分期费率 |
| 20000036 | 分期期数不支持 |
| 20000037 | 3期费率开关未开启 |
| 20000038 | 6期费率开关未开启 |
| 20000039 | 12期费率开关未开启 |
| 20000040 | 24期费率开关未开启 |
| 20000041 | 商户不存在 |
| 20000042 | 商户状态异常 |
| 20000043 | 企业商户不存在 |
| 20000044 | 个人商户不存在 |
| 20000045 | 银行返回异常 |
| 20000046 | 个人用户无法使用B2B网关 |
| 20000047 | 当前商户未配置支付银行,暂时无法使用网银支付功能 |
| 20000048 | 退款请求FPC收银台失败 |
| 20000049 | 退款请求OBC收银台失败 |
| 20000050 | 充值不支持分账 |
| 20000051 | 充值时入账信息中客户号的必须为当前主交易的客户号 |
| 20000052 | 分账比例配置异常 |
| 20000053 | 没有延时入账权限 |
| 20000054 | 手续费账户号未配置 |
| 20000055 | 交易金额必须大于手续费金额 |
| 20000056 | 获取支付手续费费率配置异常手续费类型错误 |
| 20000057 | 获取支付手续费配置异常(网银) |
| 20000058 | 获取支付手续费配置异常(快捷、代扣) |
| 20000059 | 获取支付手续费配置异常不支持当前手续费类型 |
| 20000060 | 获取支付手续费配置异常手续费交易类型错误 |
| 20000061 | 支付手续费配置不存在 |
| 20000062 | 手续费客户号与商户关系不存在 |
| 20000063 | 风控信息格式不正确 |
| 20000064 | 获取支付手续费配置异常(手机网页支付) |
| 90000000 | 交易失败,请重试 |
| 90000001 | 交易存在风险,请稍后再试 |
| 99999999 | 系统异常,请稍后重试 |
商户进件返回码¶
适用于商户进件及商户配置管理类接口
| 返回码 | 说明 |
|---|---|
| 00000000 | 处理成功 |
| 00000001 | 基本参数校验失败;请检查请求参数 |
| 00000002 | 系统异常,请联系客服 |
| 00000003 | 系统异常,请联系客服 |
| 00000004 | 系统异常,请联系客服 |
| 00000005 | 系统异常,请联系客服 |
| 90000000 | 审核中 |
| 99999999 | 系统异常,请联系客服 |
| 00000100 | 交易正在处理中 |
| 00000101 | 交易失败,请重试 |
| 00000102 | 交易结果未知,请稍后查询 |
| 00000103 | 请求系统号无接口访问权限 |
| 00000104 | 交易存在风险,请联系客服 |
| 00000105 | 账户余额不足 |
| 00000106 | 商户状态异常 |
| 00000107 | 钱包户不存在 |
| 00000108 | 钱包户状态异常 |
| 00000109 | 解冻明细列表不能为空 |