商户查询

1、修订记录

修订记录 日期 说明 作者
1.0 2021.11.10 初稿 薛晨

2、业务说明

(1)接口说明

服务商调用该接口可以查询商户进件状态、商户基本信息,限制频率10次/秒

3、请求地址

环境 HTTPS请求地址
测试环境 https://appdev.ysepay.com/saas/org/queryMerchant
正式环境 https://bcssaas.yespay.com/saas/org/queryMerchant

4、请求参数说明

4.1、公共请求参数

参数 类型(长度) 必填 参数说明
ver String(3) Y 版本号 固定值1.0
src String(50) Y 由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753
msgCode String(20) Y 接口代码 固定值Merchant
method String(30) Y 接口方法 固定值queryMerchant
signType String(10) Y 报文签名算法,RSA、SM 注:应监管要求签名算法变更为国密,新接入商户请选择SM
charset String(10) Y 字符集 固定值UTF-8
reqFlowId String(20) Y 请求流水号 示例值:202110011944011101 注:该字段不参与签名
signValue String Y 签名串,请参考"签名样例以及demo下载"
data String Y 业务参数(des加密成密文字符串)

4.2、业务请求参数

data加密前的json数据明文字符串

参数 类型(长度) 必填 参数说明
sysFlowId String(50) Y 合作方系统流水(商户进件接口返回) 示例:12202110111409447515387

5、响应参数说明

银盛支付对商户的请求数据处理完成后,会将处理的结果数据同步回执给商户。

请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。

5.1、公共响应参数

参数 类型(字节长度) 必填 参数说明
ver String(3) Y 版本号 固定值1.0
src String(50) Y 由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753
msgCode String(20) Y 接口代码 固定值Merchant
method String(30) Y 接口方法 固定值queryMerchant
signType String(10) Y 报文签名算法,RSA、SM 注:应监管要求签名算法变更为国密,新接入商户请选择SM
charset String(10) Y 字符集 固定值UTF-8
reqFlowId String(20) Y 请求流水号 示例值:202110011944011101 注:该字段不参与签名
signValue String Y 签名串,请参考"签名样例以及demo下载"
data String Y 业务参数(JSON数据)

5.2、业务响应参数

data(JSON数据)

参数 类型(字节长度) 必填 参数说明
sysFlowId String(32) N 合作方系统流水,成功时原值返回
mercId String(50) N 银盛商户号,成功时返回
custId String(50) N 客户编号,成功时返回
mercCnm String(60) N 商户名称,成功时返回
mercAbbr String(60) N 商户简称,成功时返回
coOperatorNo String(15) N 银盛商户所属代理商编号,成功时返回
status String(5) Y 进件状态 01 待补充图片 03 待审核 04 初审完成 05 开户完成 90 初审拒绝
note1 String(50) Y status进件状态说明
code String(2) Y 返回码 00-成功; 50-超时; 99-失败
note String(100) Y 返回码说明
thridMercList JSONArray N 第三方商户号列表

第三方商户号对象(json数据key: thridMercList):

参数 类型(字节长度) 必填 参数说明
apprSts String N 报备状态,00-报备成功 03-报备失败 04-交易失败
remark String N 报备备注
type String N 银联网联标识,CUPS-银联 NUCC-网联
alipayLevel String N 支付宝等级
flag String N 微信支付宝标识,wx-微信 alipay-支付宝
thirdMercId String N 第三方商户号(微信或者支付宝)

6、样例

``` public String queryMerchant() throws Exception { /* 1、组装请求参数/ //接入机构号: 入网申请后发放 String src = "ORG20210927162704"; Map params = new HashMap(); params.put("ver", "1.0"); params.put("src",src); params.put("msgCode", "Merchant"); params.put("method", "queryMerchant"); params.put("signType", "RSA"); params.put("charset", "UTF-8");

    /** 2.业务参数赋值: 业务参数说明详细见接口文档*/
    /** -----------组装业务参数开始 设置为null相当于map里面没有put这个参数,只是做参数的参考,具体按自己业务设置对应字段的值-------------*/
    Map<String,Object> dateParams = new HashMap<>();
    dateParams.put("sysFlowId","12202110111409447515387");//合作方系统流水

    /** 3.业务参数加密: 业务参数说明详细见接口文档*/
    //加密密钥aeskey: 加密密钥证书入网申请后发放
    String aesKey = "A81F41DE7406CC1566579A751D93CA7A";
    String addMercData = JSONObject.toJSONString(dateParams);
    String creData = DesUtil.encryptExtraData(aesKey, "UTF-8", addMercData);
    params.put("data", creData);

    /*4、对数据进行加签,并存入请求数据*/
    //客户端私钥证书路径: 证书在入网流程中自己申请的
    String privateKeyFilePath = "D:/datas/yulong_666.pfx";
    //客户端私钥密钥: 私钥密钥在入网流程中自己申请私钥证书时填写的
    String privateKeyPassword = "123456";
    //请求流水号: 根据自己要求生成,生成有意义的请求流水号
    String reqFlowId = String.valueOf(System.currentTimeMillis());
    String sign = YsfSignUtil.sign(params, privateKeyFilePath, privateKeyPassword);
    logger.info("ScanMercApi-invalidSign-signData:"+sign);
    params.put("signValue", sign);
    params.put("reqFlowId", reqFlowId);

    /*5、发送请求*/
    //扫码服务商“商户资料变更”修改地址,具体以文档为准
    String reqUrl = "http://orgmerc.ysepay.com:8880/saas/org/queryMerchant";
    String result = HttpClientUtil.sendPostJson(reqUrl,JSONObject.toJSONString(params));

    /*6、结果验签*/
    //银盛公钥证书路径: 证书入网申请后发放
    String ysPublicKeyFilePath = "D:/datas/businessgate.cer";
    JSONObject jsonObject = JSONObject.parseObject(result);
    // 加签值
    String sinaValue = jsonObject.getString("signValue");
    // 加签内容
    String respData = jsonObject.getString("data");
    Map<String, String> dataMap = null;
    if(!StringUtil.isEmpty(respData)){
        dataMap = JSONObject.parseObject(respData,Map.class);
    }
    boolean flag = YsfSignUtil.rsaCheckContent(dataMap,sinaValue,ysPublicKeyFilePath);
    if(!flag){
        throw new Exception("check sign error");
    }
    return result;
}

```{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}

results matching ""

    No results matching ""