切换主题
登记簿认证
概述
本文按 APP 支付接口模版整理,保留原接口字段含义,并统一补充签名说明、正式/沙箱示例、多语言请求示例和结果判定口径。
接口说明
登记簿认证 属于虚拟银行接口。调用方需按公共参数组装请求并完成签名;响应包含 sign 时,应先验签再解析 bizData。
| 接口名称 | 登记簿认证 |
|---|---|
| 请求方式 | POST |
| 正式地址 | https://pay.rscygroup.com/api/open/virtualBank/acct/auditApply |
| 沙箱地址 | https://pay-test.rscygroup.com/api/open/virtualBank/acct/auditApply |
| 签名方式 | MD5 ,按签名规则说明生成或校验 sign |
| 结果判定 | 先判断公共返回 code,成功后验签并解析 bizData;最终业务状态以业务字段、查询接口或异步通知为准 |
流程图
处理要点:
请求前先将业务字段组装为 bizData JSON 字符串,再和公共参数一起参与签名。
响应或通知包含 sign 时,应先按签名规则验签,再解析 bizData。
code=000000 表示接口请求处理成功,不等同于所有异步业务流程最终完成。
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 验证码流水号 | smsFlowNo | 是 | String | <DEMO_ID> | - |
| 验证码 | smsCode | 是 | String | 125456 | 验证码(验证码时效60秒) |
| 请求单号 | reqNo | 是 | String | REQ<DEMO_ID> | 登记簿开立返回的请求单号 |
| 外部请求单号 | outReqNo | 是 | String(32) | <DEMO_ID> | 登记簿开立返回的外部请求单号 |
响应参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 请求单号 | reqNo | 是 | String | REQ<DEMO_ID> | - |
| 外部请求单号 | outReqNo | 是 | Stirng | <SIGNATURE> | 同请求传过来的单号 |
| 状态 | state | 是 | Number | - | 状态 100: 排队中;1: 处理中; 更多状态信息见 附录1.1 |
开户结果处理完成后,系统将通过 POST 请求,以 JSON 数据格式向业务登记簿开户请求参数中指定的 notifyUrl 发起异步通知。
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 请求单号 | reqNo | 是 | String | REQ<DEMO_ID> | - |
| 外部请求单号 | outReqNo | 是 | Stirng | <SIGNATURE> | 同请求传过来的单号 |
| 状态 | state | 是 | Number | - | 更多状态信息见 附录1.1 |
| 备注 | remark | 否 | String | - | 驳回原因等 |
| 账号 | accountNo | 是 | String | VA2354646 | - |
| 登记簿账号 | eleAcctNo | 否 | String | 99XXXX | 开户成功后返回 |
| 账号状态 | accountState | 否 | String | 1 | 2: 待激活 更多状态信息见 附录1.2 |
请求示例
以下示例默认使用 MD5 作为演示模式。签名时先将公共参数按字段名升序排序并拼接为 key=value&key=value,再在原串末尾追加 &appSecret=... 后计算 MD5;生成 sign 后,实际请求体中不要传 appSecret。本页请求示例依赖签名规则说明中的公共签名实现。
bash
curl -X POST "https://pay.rscygroup.com/api/open/virtualBank/acct/auditApply" \
-H "Content-Type: application/json" \
-d '{
"apiKey": "<CONFIGURED_VALUE>",
"bizData": "{\"smsFlowNo\":\"SMSFLOWNO<DEMO_ID>\",\"String\":\"StringValue\",\"smsCode\":\"cbhbCht\",\"reqNo\":\"REQNO<DEMO_ID>\",\"REQ<DEMO_ID>\":\"REQ<DEMO_ID>\",\"outReqNo\":\"OUTREQNO<DEMO_ID>\",\"REQ<DEMO_ID>\":\"REQ<DEMO_ID>\",\"Stirng\":\"StirngValue\",\"state\":\"stateValue\",\"Number\":\"NumberValue\"}",
"sign": "<按签名规则生成>",
"signType": "MD5",
"reqId": "AUDITAPPLY<DEMO_ID>",
"reqTime": "<DEMO_ID>",
"version": "1.0"
}'bash
curl -X POST "https://pay-test.rscygroup.com/api/open/virtualBank/acct/auditApply" \
-H "Content-Type: application/json" \
-d '{
"apiKey": "<CONFIGURED_VALUE>",
"bizData": "{\"smsFlowNo\":\"SMSFLOWNO<DEMO_ID>\",\"String\":\"StringValue\",\"smsCode\":\"cbhbCht\",\"reqNo\":\"REQNO<DEMO_ID>\",\"REQ<DEMO_ID>\":\"REQ<DEMO_ID>\",\"outReqNo\":\"OUTREQNO<DEMO_ID>\",\"REQ<DEMO_ID>\":\"REQ<DEMO_ID>\",\"Stirng\":\"StirngValue\",\"state\":\"stateValue\",\"Number\":\"NumberValue\"}",
"sign": "<按签名规则生成>",
"signType": "MD5",
"reqId": "AUDITAPPLY<DEMO_ID>",
"reqTime": "<DEMO_ID>",
"version": "1.0"
}'复用签名规则说明中的 genSign / verifySign 通用方法。
java
Map<String, Object> biz = new LinkedHashMap<>();
biz.put("smsFlowNo", "SMSFLOWNO<DEMO_ID>");
biz.put("String", "StringValue");
biz.put("smsCode", "cbhbCht");
biz.put("reqNo", "REQNO<DEMO_ID>");
biz.put("REQ<DEMO_ID>", "REQ<DEMO_ID>");
biz.put("outReqNo", "OUTREQNO<DEMO_ID>");
biz.put("REQ<DEMO_ID>", "REQ<DEMO_ID>");
biz.put("Stirng", "StirngValue");
biz.put("state", "stateValue");
biz.put("Number", "NumberValue");
Map<String, String> req = new LinkedHashMap<>();
req.put("apiKey", "<API_KEY>");
req.put("bizData", mapper.writeValueAsString(biz));
req.put("reqId", "AUDITAPPLY" + System.currentTimeMillis());
req.put("reqTime", "<DEMO_ID>");
req.put("signType", "MD5");
req.put("version", "1.0");
req.put("sign", SignDemo.genSign(req, "MD5"));PHP 示例中的 SignDemo 类不在本页定义,推荐来自统一签名类实例。
php
<?php
require_once __DIR__ . '/SignDemo.php';
$demo = new SignDemo();
$biz = [
'smsFlowNo' => 'SMSFLOWNO<DEMO_ID>',
'String' => 'StringValue',
'smsCode' => 'cbhbCht',
'reqNo' => 'REQNO<DEMO_ID>',
'REQ<DEMO_ID>' => 'REQ<DEMO_ID>',
'outReqNo' => 'OUTREQNO<DEMO_ID>',
'REQ<DEMO_ID>' => 'REQ<DEMO_ID>',
'Stirng' => 'StirngValue',
'state' => 'stateValue',
'Number' => 'NumberValue',
];
$req = [
'apiKey' => '<API_KEY>',
'bizData' => json_encode($biz, JSON_UNESCAPED_UNICODE),
'reqId' => 'AUDITAPPLY' . time(),
'reqTime' => '<DEMO_ID>',
'signType' => 'MD5',
'version' => '1.0',
];
$req['sign'] = $demo->genSign($req);python
biz = {
'smsFlowNo': 'SMSFLOWNO<DEMO_ID>',
'String': 'StringValue',
'smsCode': 'cbhbCht',
'reqNo': 'REQNO<DEMO_ID>',
'REQ<DEMO_ID>': 'REQ<DEMO_ID>',
'outReqNo': 'OUTREQNO<DEMO_ID>',
'REQ<DEMO_ID>': 'REQ<DEMO_ID>',
'Stirng': 'StirngValue',
'state': 'stateValue',
'Number': 'NumberValue',
}
req = {
'apiKey': '<API_KEY>',
'bizData': json.dumps(biz, ensure_ascii=False),
'reqId': f'AUDITAPPLY{int(time.time())}',
'reqTime': '<DEMO_ID>',
'signType': 'MD5',
'version': '1.0',
}
req['sign'] = gen_sign(req, 'MD5')javascript
const biz = {
"smsFlowNo": "SMSFLOWNO<DEMO_ID>",
"String": "StringValue",
"smsCode": "cbhbCht",
"reqNo": "REQNO<DEMO_ID>",
"REQ<DEMO_ID>": "REQ<DEMO_ID>",
"outReqNo": "OUTREQNO<DEMO_ID>",
"REQ<DEMO_ID>": "REQ<DEMO_ID>",
"Stirng": "StirngValue",
"state": "stateValue",
"Number": "NumberValue",
};
const req = {
apiKey: '<CONFIGURED_VALUE>',
bizData: JSON.stringify(biz),
reqId: 'AUDITAPPLY' + Date.now(),
reqTime: '<DEMO_ID>',
signType: 'MD5',
version: '1.0',
};
req.sign = genSign(req, 'MD5');json
{
"apiKey": "<DEMO_ID>",
"sign": "<SIGNATURE>",
"signType": "MD5",
"bizData": "{\"reqNo\":\"REQXX456X456X456\", \"sceneType\":{\"OPEN\"}",
"reqTime": "<DEMO_ID>",
"version": "1.0",
"reqId": "1511ff20-a701-4616-84c8-f72ad4abb2d2"
}响应示例
json
{
"code": "000000",
"msg": "请求成功",
"timestamp": "<DEMO_ID>",
"sign": "<SIGNATURE>",
"signType": "MD5",
"bizData": "{\"smsFlowNo\":\"<ID_NUMBER>\",\"mobile\":\"17324xxxx\",\"sceneType\":\"OPEN\"}"
}结果判定口径
公共状态:code=000000 表示接口请求处理成功;非 000000 时按 msg 排查签名、参数或业务校验问题。
业务状态:如响应 bizData 内存在 state、status、result、batchNo、orderNo、reqNo 等字段,应以对应业务字段作为后续处理依据。
验签顺序:响应或通知中返回 sign 时,先验签再解析和入库 bizData。
异步场景:同步成功通常只代表请求受理,最终结果以回调通知或查询接口为准。
错误处理
签名失败:核对 apiKey、signType、密钥、参数排序、bizData 字符串化方式和字符编码。
参数错误:按本页请求参数表检查必填项、枚举值、金额单位、时间格式和单号唯一性。
业务失败:读取 code、msg 和 bizData 内业务字段,按接口语义修正后再重试。
网络超时或响应未知:不要直接判定业务失败,使用查询接口或平台后台核实后再处理。
接入注意事项
reqId 应保证每次请求唯一,便于排查和幂等处理。
bizData 必须作为 JSON 字符串参与签名;实际请求体中不要传 appSecret。
生产环境与沙箱环境的应用、密钥和数据通常相互隔离,联调时请确认使用对应环境配置。
金额字段如无特殊说明,按源文档口径以“分”为单位。
字段枚举、状态流转和条件必填规则以本页参数说明为准;源文档未说明的场景请联系平台确认。
