Skip to content

订单重新结算

概述 ​

用于对自动提现失败的虚拟银行订单重新发起结算。该接口不会创建新的业务订单,只会重试原订单关联的失败提现记录。

接口说明 ​

项目说明
接口名称订单重新结算
请求方式POST
正式地址https://pay.rscygroup.com/api/open/virtualBank/order/settle
沙箱地址https://pay-test.rscygroup.com/api/open/virtualBank/order/settle
接口版本1.0
鉴权方式支持 API Key 和应用 appId 两种模式;请求携带 apiKey 时优先使用 API Key 模式
Content-Typeapplication/json

TIP

💡 调用前提 • 原虚拟银行子订单必须为转账成功状态。 • 原订单必须存在自动提现记录,且该提现记录当前状态为失败。 • 提现账户必须属于当前商户并处于可用状态。 • 同一笔失败记录只能被一个请求成功抢占重试,请勿并发重复提交。

请求参数 ​

公共请求参数及签名规则参见 签名规则说明。bizData 必须作为 JSON 字符串参与签名。

变量名类型必填示例值说明
orderNoString条件必填AP<DEMO_ID>平台子订单号;与 outOrderNo 二选一,不能同时传入
outOrderNoString条件必填ITEM<DEMO_ID>商户子订单号;与 orderNo 二选一,不能同时传入
remarkString是重新结算结算备注;系统会过滤特殊字符,过滤后不能为空,UTF-8 编码长度不能超过 32 字节
recvAcctNameString否示例企业不传默认使用开户绑定的卡,如果需要传入其他结算卡请先绑定结算卡白名单
recvAcctNoString否622202******1234本次重试使用的收款银行卡号;不修改时可不传
不传默认使用开户绑定的卡
如果需要传入其他结算卡请先绑定结算卡白名单
  • reqId:每次请求必须唯一,最大 40 位;相同流水号在 10 分钟内不能重复使用。

  • reqTime:格式为 yyyyMMddHHmmss,与服务器时间差不能超过 10 秒。

  • version:固定为 1.0。

  • signType:API Key 模式仅支持 MD5;appId 模式支持 MD5 或 RSA2。

请求示例 ​

json
{
  "reqId": "ORDERSETTLE<DEMO_ID>",
  "reqTime": "<DEMO_ID>",
  "version": "1.0",
  "signType": "MD5",
  "apiKey": "YOUR_API_KEY",
  "bizData": "{\"outOrderNo\":\"ITEM<DEMO_ID>\",\"remark\":\"重新结算\"}",
  "sign": "<按签名规则生成>"
}
bash
curl -X POST "https://pay.rscygroup.com/api/open/virtualBank/order/settle" \
  -H "Content-Type: application/json" \
  -d '{
    "reqId": "ORDERSETTLE<DEMO_ID>",
    "reqTime": "<DEMO_ID>",
    "version": "1.0",
    "signType": "MD5",
    "apiKey": "<CONFIGURED_VALUE>",
    "bizData": "{\"outOrderNo\":\"ITEM<DEMO_ID>\",\"remark\":\"重新结算\"}",
    "sign": "<按签名规则生成>"
  }'

API Key + MD5:

text
apiKey=YOUR_API_KEY&bizData={"outOrderNo":"ITEM<DEMO_ID>","remark":"重新结算"}&reqId=ORDERSETTLE<DEMO_ID>&reqTime=<DEMO_ID>&signType=MD5&version=1.0&apiSecret=YOUR_API_SECRET

appId + MD5:将签名原文中的 apiKey 替换为 appId,末尾使用 appSecret。RSA2 模式不在原文末尾追加密钥。

响应参数 ​

公共响应中的 bizData 是 JSON 字符串。响应包含 sign 时,应先验签再解析业务数据。

变量名类型示例值说明
orderNoStringAP<DEMO_ID>平台订单号
outOrderNoStringITEM<DEMO_ID>商户订单号
stateStringPROCESSING业务状态,常见值:PROCESSING、SUCCESS、FAIL
noteString渠道处理中渠道或业务处理说明;失败时重点关注该字段
amountLong1000提现金额,单位:分
feeLong0手续费,单位:分
realAmountLong1000实际到账金额,单位:分
acctNoStringVA<DEMO_ID>提现虚拟账户号
feeTypeStringORDER手续费扣费方式:ORDER 为订单内扣,ACCOUNT 为账户外扣
payerNameString示例企业付款账户名称
payerBankAcctNoString622202******1234付款银行账户号
json
{
  "code": "000000",
  "msg": "请求成功",
  "timestamp": "<DEMO_ID>",
  "signType": "MD5",
  "sign": "<平台响应签名>",
  "bizData": "{\"acctNo\":\"VA<DEMO_ID>\",\"amount\":1000,\"fee\":0,\"feeType\":\"ORDER\",\"orderNo\":\"AP<DEMO_ID>\",\"outOrderNo\":\"ITEM<DEMO_ID>\",\"payerBankAcctNo\":\"622202******1234\",\"payerName\":\"示例企业\",\"realAmount\":1000,\"state\":\"PROCESSING\"}"
}

结果判定 ​

  • 公共状态:code=000000 仅表示接口请求已成功处理,不代表提现已经最终成功。

  • 业务处理中:bizData.state=PROCESSING 表示渠道处理中,平台会继续异步查询结果。

  • 业务成功:bizData.state=SUCCESS 表示重新结算成功。

  • 业务失败:bizData.state=FAIL 表示重新结算失败,应结合 note 排查原因。

  • 响应未知:网络超时或未收到明确响应时,不要立即重复提交,应先查询订单状态或在平台后台核实。

常见错误 ​

错误提示处理建议
平台订单号和商户订单号参数不能同时为空传入 orderNo 或 outOrderNo,且只传其中一个
当前订单不是转账成功状态,无法发起提现确认原虚拟银行子订单已经转账成功
当前订单类型不支持该操作该接口只支持自动提现类型的失败记录
只能操作到账状态为失败的订单确认关联提现记录当前为失败状态
订单状态已变化,请勿重复提交已有请求正在处理或状态已更新,请勿并发重试
结算备注长度不允许超过32个字节按 UTF-8 字节长度缩短 remark,中文通常占 3 个字节

接入注意事项 ​

  • 该接口是失败重试接口,正常提现应调用“登记簿提现”接口。

  • 每次重试必须生成新的 reqId 和当前时间 reqTime。

  • 签名必须使用请求体中完全一致的 bizData 字符串,字段顺序、空格和转义变化都会影响验签。

  • 不要仅根据 HTTP 200 或公共返回码判断资金结果,必须检查 bizData.state。