第三章 模块接口(1) - 个体户注册
## 综合服务云平台 - API功能模块接口明细
## 版本更新记录
|修订日期|修订内容|修订人|
|-|-|-|
|2020.10.12|新增接口:3.1 个体户法人创建、3.2 创建个体户注册地接口、3.3 获取token接口、3.4 创建获取协议接口、3.5 协议签署、3.6 个体户状态查询、3.7.1 工商授权、3.7.2 重置手机号、3.7.3 验证码提交、3.8 个体户注册状态回调、3.9 获取企业合作主体发票类目|松子|
|2021.05.19|新增接口:3.19 获取免密登录链接接口|bear|
## 1.1 个体工商户注册流程图

## 1.2 接口时序图


## 2. 接口加解密
>d 接口调用细节流程:
◆ 参数RSA加密[接口签名,加解密说明](https://easydoc.xyz/doc/63011222/0klm3Gmk/C0Evae8l)
◆ 将加密结果以及公共参数拼接成新的字符串通过MD5加密生成签名
◆ 将公共参数以及签名通过header传输,参数加密结果通过body传输,发起http请求
◆ 返回结果解密[接口签名,加解密说明](https://easydoc.xyz/doc/63011222/0klm3Gmk/C0Evae8l)
## 接口响应参数都为如下固定json格式
|参数名称|参数含义|数据类型|是否必有|参数备注|
|-|-|-|-|-|
|resopnseType| 返回类型|int|是|无需关注此值|
|errorCode|错误码 |String|是|详情参考[系统错误码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|errorMessage| 错误信息|String|是|详情参考[系统错误码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|status|状态码|int|是|详情参考[系统错误码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|success|是否成功|boolean|是|true:成功 false:失败|
|data|返回结果数据|String|否|只有当success为true才会有该值,该值为RSA加密值,需解密使用,解密规则请看[接口签名,加解密说明](https://easydoc.xyz/doc/63011222/0klm3Gmk/C0Evae8l)|
## 3. 个体工商户注册管理
## 3.1 创建法人信息接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/createSelfInfo
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCard|个体户身份证号|String|是||
|name|姓名|String|是||
|mobile|手机号|String|是||
|frontIdCard|身份证正面照URL|String|是||
|backIdCard|身份证反面照URL|String|是||
|hatlessPhoto|人脸照URL|String|是||
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|token|个体户token|String|是|该token有效期为2小时,如果失效则需要重新调用3.获取token接口获取|
## 3.2 创建个体工商户注册地接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/createSelfEmployed/{token}
>d token直接拼接至接口 例如:token 为 xxxxx 则请求链接为 /open/api/v1/selfRegistered/createSelfEmployed/xxxxx
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|source|所属业务线|Integer|是|2:个体工商户 3:账管家|
|taxType|个税算法类型|String|是|0:累进制、1核定制、2、双定制|
|mainstayId|主体ID|Integer|是|可以通过 3.9 获取企业合作主体,发票类目接口获取|
|industryCode|行业code|String|是|可以通过 3.9 获取企业合作主体,发票类目接口获取|
|invoices|发票类目code|String|是|多个用逗号隔开。但是必须都是所属于同一行业|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|status|状态|Integer|是|-2:开户失败,-1:待申请|
|failReason|失败原因|String|是|开户失败该值会有失败原因|
## 3.3 获取token接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/getToken
#### 请求方式:POST
>d 该接口必须在1.创建法人信息接口 后获取才有效
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCard|个体户身份证号|String|是||
|name|姓名|String|是||
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|token|个体户标识|String|是|该token有效期为2小时,失效后需要重新获取|
## 3.4 创建获取协议接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/createSelfEmployedProtocol/{token}
#### 请求方式:POST
#### 请求参数说明:无需入参
#### 接口响应参数说明:
>d 该接口返回内容为数组,如有多个注册地则会有多条数据
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|mainstayId|主体ID|Integer|是||
|mainstayIdName|主体名称|String|是||
|protocols|协议列表|List<String>|是|协议为多份|
>d 返回结果示例如下所示
```java
[{"mainstayId":1,"mainstayIdName":"xxx","protocols":["协议1链接","协议2链接","协议3链接,等等"]},{"mainstayId":2,"mainstayIdName":"xxx","protocols":["协议1链接","协议2链接","协议3链接,等等"]},{"mainstayId":3,"mainstayIdName":"xxx","protocols":["协议1链接","协议2链接","协议3链接,等等"]}]
```
## 3.5 协议签署接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/signature/{token}
#### 请求方式:POST
#### 请求参数说明:
>d 改接口入参与之前的不一致,参数无需加密。只需要将签名后的base64码放在body传输即可
postman示例如下:

#### 接口响应参数说明:
响应参数success 为ture 代表签署成功,反之则失败
## 3.6 个体工商户状态查询接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/querySelfEmployedInfo/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|mainstayId|主体ID|Integer|是||
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|name|法人姓名|String|是||
|idCard|法人身份证号码|String|是||
|status|状态|Integer|是|详情请看[个体户注册状态码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)(当状态变更到”经营中“后后就可以提交结算申请了)|
|taxStatus|税务状态|Integer|是|0:未实名,1:已实名。当该状态变为“已实名”后才可以进行开票申请操作||
|refuseType|拒绝类型|Integer|否||
|refuseReason|审核拒绝原因|String|否||
|companyName|个体户公司名称|String|是||
|taxNumber|税号|String|否|个体户注册成功之后才会有税号|
|mobile|注册手机号码|String|是||
|address|注册地址|String|是||
|businessLicense|营业执照|String|否|个体户注册成功之后才会有|
|taxType|个税类型|Integer|是|0 累进制、1 核定制 2、双定制|
## 3.7.1 工商授权接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/authorization/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|无|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|status|工商授权状态|Integer|是|[工商授权状态码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)
|statusText|工商授权状态描述|String|是
|encryptMobile|掩码手机号|String|是
## 3.7.2 重置手机号接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/resetPhone/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|mobile|更换的手机号|String|是
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|status|工商授权状态|Integer|是|[工商授权状态码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)
|statusText|工商授权状态描述|String|是
## 3.7.3 验证码提交接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/submitVerificationCode/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|mobile|更换的手机号|String|是
|code|验证码|String|是
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|status|工商授权状态|Integer|是|[工商授权状态码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)
|statusText|工商授权状态描述|String|是
## 3.8 个体工商户注册状态回调通知
>d 该接口需要第三方自行编写提供接口到发放平台 接口编写示例如下。
#### 请求方式:POST
```java
@PostMapping("signCallBack")
@ResponseBody
public String signCallBack(HttpServletRequest request, @RequestBody String data){
String publicKey = "该公钥由发放平台提供发放到贵司邮箱";
//解密
String decode = RSAHelper.decryptByPublicKey(data, publicKey);
/*贵公司处理业务逻辑*/
return "success";
}
```
解密工具类在 [JAVA_DEMO](https://gitee.com/xinfudblog/lxapi_java_demo) 的 RSAHelper 类中
>d
> 1.贵司写完后提供到接口url给发放平台即可。回调成功必须返回success,不然回重复回调,至多重试8次。
> 2.每次回调的间隔时间2N次方分钟,比如第一次回调间隔时间为2分钟,第二次就为4分钟,依次往后推,最多重试8次;
postman中模拟接口是否正常接收数据如下操作

#### 传给回调接口参数data 解密结果json说明:
解密结果示例如下:
```json
{"idCard":"12456484","name":"张三","status":30,"mobile":"1888888888","refuseType":"","refuseReason":"","companyName":"xxxx","taxNumber":"xxxx","mobile":"xxxx","address":"xxxx","businessLicense":"xxxxx","realNameCollectionUrl":"xxxx"}";
```
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|name|法人姓名|String|是||
|idCard|法人身份证号码|String|是||
|status|状态|Integer|是|详情请看[个体户注册状态码](https://easydoc.xyz/doc/63011222/0klm3Gmk/lsNgE5QQ)(当状态变更到”经营中“后后就可以提交结算申请了)|
|taxStatus|税务状态|Integer|是|0:未实名,1:已实名。当该状态变为“已实名”后才可以进行开票申请操作||
|refuseType|拒绝类型|Integer|否|0:签名无法识别,请重新签名(从新调用3.5 签署接口),1:政务网注册授权失败","政务网注册授权失败(重新调用3.7.1工商授权接口)|
|refuseReason|审核拒绝原因|String|否||
|companyName|个体户公司名称|String|是||
|taxNumber|税号|String|否|个体户注册成功之后才会有税号|
|mobile|注册手机号码|String|是||
|address|注册地址|String|是||
|taxType|个税算法类型|String|是|0:累进制、1核定制、2、双定制|
|businessLicense|营业执照|String|否|个体户注册成功之后才会有|
## 3.9 获取企业合作主体,发票类目等信息
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/queryCompanyInfo
#### 请求方式:POST
#### 请求参数说明:无需传任何参数
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|source|所属业务线|Integer|是|2:轻税业务 3:账管家业务|
|mainstayId|合作主体|Integer|是||
|name|合作主体名称|String|是||
|industryCode|所属行业code|String|是||
|industryName|所属行业名称|String|是||
|invoiceCode|发票编码|String|是||
|invoiceContent|发票内容|String|是||
>d 示例数据结构如下
```json
[{
"akMainstayOpResponses": [{
"invoiceOpResponseList": [{
"industryCode": "ZXBYFW",
"industryName": "装卸搬运服务",
"invoiceCode": "WLFZFWXSZXF",
"invoiceContent": "物流辅助服务**运输装卸费"
}],
"mainstayId": 主体ID,
"name": "主体2"
}, {
"invoiceOpResponseList": [{
"industryCode": "ZXBYFW",
"industryName": "装卸搬运服务",
"invoiceCode": "WLFZFWXSZXF",
"invoiceContent": "物流辅助服务**运输装卸费"
}],
"mainstayId": 主体Id,
"name": "主体3"
}, {
"invoiceOpResponseList": [{ //发票列表
"industryCode": "ZXBYFW",
"industryName": "装卸搬运服务",
"invoiceCode": "WLFZFWXSZXF",
"invoiceContent": "物流辅助服务**运输装卸费"
}, {
"industryCode": "ZXBYFW",
"industryName": "装卸搬运服务",
"invoiceCode": "WLFZFWZXBYFW",
"invoiceContent": "物流辅助服务*装卸搬运服务"
}],
"mainstayId": 主体ID,
"name": "主体1"
}],
"source": 3 //所属业务线 账管家
}, {
"akMainstayOpResponses": [{
"invoiceOpResponseList": [{
"industryCode": "YXTG_01",
"industryName": "营销推广",
"invoiceCode": "XDFWCHFWF",
"invoiceContent": "现代服务*策划服务费"
}, {
"industryCode": "YXTG_01",
"industryName": "营销推广",
"invoiceCode": "XDFWTGFWF",
"invoiceContent": "现代服务*推广服务费"
}, {
"industryCode": "YXTG_01",
"industryName": "营销推广",
"invoiceCode": "XDFWYXFWF",
"invoiceContent": "现代服务*营销服务费"
}, {
"industryCode": "KJHY_01",
"industryName": "科技行业",
"invoiceCode": "XXJSFWJSFWF",
"invoiceContent": "信息技术服务*技术服务费"
}],
"mainstayId": 主体ID,
"name": "主体1"
}, {
"invoiceOpResponseList": [{
"industryCode": "WLGW_02",
"industryName": "管理&顾问",
"invoiceCode": "JZZXFWZXFWF",
"invoiceContent": "鉴证咨询服务*咨询服务费"
}, {
"industryCode": "YXTG_02",
"industryName": "营销推广",
"invoiceCode": "XDFWCHFWF",
"invoiceContent": "现代服务*策划服务费"
}],
"mainstayId":主体Id,
"name": "主体2"
}, {
"invoiceOpResponseList": [{
"industryCode": "WHZB_03",
"industryName": "网红&直播",
"invoiceCode": "XDFWHLWXXFW",
"invoiceContent": "现代服务*互联网信息服务"
}],
"mainstayId": 主体Id,
"name": "主体3"
}],
"source": 2 //所属业务线 轻税
}]
```
## 3.10 个体工商户查询接口(简化版)
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/qs/qsSelfEmployedQuery
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCard|个体户身份证号|String|是||
|mainstayId|注册地|String|是|该参数值由[3.9 获取企业合作主体,发票类目等信息](https://easydoc.top/doc/63011222/0klm3Gmk/Cw8Sc3og) 获得|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|status| 个体户状态|Integer|是|个体户状态请查阅:[4. 个体户查询状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|taxStatus|税务状态|Integer|是|0:未实名,1:已实名。当该状态变为“已实名”后才可以进行开票申请操作||
|isRefuse| 是否审核拒绝 0:未拒绝 1:审核拒绝|String|是|当个体户审核拒绝时候,该参数值为 1(表示审核拒绝)。个体户状态(status)参数依旧为 -1(待申请状态)。|
|name|个体户姓名|String|是|例:张三|
|idCard|个体户身份证号|String|是|例:410422199405051167|
|mainstayName|注册地|String|是|例:长兴|
|companyName|公司名|String|是|例:xxxx有限公司|
|taxNumber|纳税人识别号|String|否|例:91330100FS234(纳税人识别号)|
|phoneAddress|手机号、地址|String|否|例:浙江省杭州市滨江区网商路xx号 130xxxx3381|
|bankNameAccount|开户行及账户信息|String|否|例:中国工商银行杭州富春支行 330501164xxxxxxx|
|license| 营业执照|String|否|例:https://qiniu.lx-rhino.com/XXXX|
|failReason| 异常原因|String|否|该参数内容可能为空,成功的时候失败原因为空字符串|
|taxType|个税类型|Integer|是|0 累进制、1 核定制 2、双定制|
## 3.11 个体户工商户白名单创建
>d 注意:上传身份证正反面有两种方式(可选):第一,传入图片的方式(参数fileIdCardFront文件、fileIdCardBack文件),第二,传入图片链接的方式(idCardFrontUrl、idCardBackUrl)。 当同时传入(fileIdCardFront文件、fileIdCardBack文件)和data参数中(idCardFrontUrl、idCardBackUrl)时,优先使用(fileIdCardFront文件、fileIdCardBack文件)
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/qsSelfEmployedImport
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|fileIdCardFront|上传的身份证正面图片|MultipartFile|否|该参数值是身份证正面图片(注:不能仅传入该参数,应与身份证反面(fileIdCardBack)一起传)|
|fileIdCardBack|上传的身份证反面图片|MultipartFile|否|该参数值是身份证反面图片(注:不能仅传入该参数,应与身份证正面(fileIdCardFront)一起传)|
|data|该参数为个体户信息json加密后的值|String|是|说明示例如下 |
#### data数据中参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|name|个体户姓名|String|是|例:张三|
|idCard|个体户身份证号|String|是|例:410422199405051167|
|phone|个体户手机号|String|否|例:130xxxx3381|
|mainstayId|注册地|String|是|该参数值由 3.9 获取企业合作主体,发票类目等信息 获得|
|invoiceCode|开票编码|String|是|可多选(必须属于同一行业),用英文逗号隔开。该参数值由 3.9 获取企业合作主体,发票类目接口获得|
|industryCode|所属行业code|String|是|该参数值由 3.9 获取企业合作主体,发票类目等信息) 获得|
|idCardFrontUrl|身份证正面|String|否|该参数值由身份证正面图片的URL地址(注:不能仅传入该参数,应与身份证反面(idCardBackUrl)一起传)|
|idCardBackUrl|身份证反面|String|否|该参数值由身份证反面图片的URL地址(注:不能仅传入该参数,应与身份证正面(idCardFrontUrl)一起传)|
|taxType|个税算法类型|String|是|0:累进制、1核定制、2、双定制|
>d data参数示例如下
```java
String paramsJson = "{\"idCard\":\"xxxx\",\"idCardBackUrl\":\"https://xxxx/xxxx.jpeg\",\"idCardFrontUrl\":\"https://xxxx/xxxx.jpeg\",\"industryCode\":\"xxxx\",\"invoiceCode\":\"xxxx\",\"mainstayId\":\"xxxx\",\"name\":\"xxxx\",\"phone\":\"xxxx\"}"
String data= RSAHelper.encryptByPublicKey(paramsJson, publicKey);
```
#### 接口响应参数data字段解密后的参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是||
|status|个体户状态|Integer|是|[4.个体户查询状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|paymentStatus|支付状态|Integer|是|[7.系统管理费 - 支付状态](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|amount|支付金额|BigDecimal|是||
|confType|付款类型|Integer|是|[8.系统管理费 - 付款方式状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|balance|剩余金额|BigDecimal|是|平台的系统管理费账户的余额|
|failReason|失败原因|String|是|该参数内容可能为空,成功的时候失败原因为空字符串|
## 3.12 个体户主动支付申请接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/pay/apply/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|mainstayId|主体id|Integer|是|
|confType|业务类型|Integer|是|0 系统注册费、 1 季度代理服务费、 2 系统注销费|
|payType|支付类型|Integer|否|0 银行卡|
|paymentAccount|支付账号|String|是|已绑定的银行卡卡号|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是||
|amount|支付金额|BigDecimal|是|不同的业务类型对应的金额不同|
## 3.13 个体户支付确认接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/pay/confirm/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是|
|verifyCode|验证码|String|是|绑卡的手机号接受的验证码|
>d 绑卡手机号将收到来自银行的支付验证码短信
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是|
|transStatus|支付状态|Integer|是|[7.系统管理费 - 支付状态](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
## 3.14 个体户银行卡绑卡申请接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/bindCard/apply/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|cardNo|银行卡卡号|String|是||
|phone|银行卡预留手机号|String|是||
>d 该手机号将收到来自银行的绑卡验证码短信
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|bindCardNo|绑卡订单号|String|是
>d 支持绑卡银行列表
|序号|银行名称| 银行卡类型|参数备注|
|-|-|-|-|-|
|1|工商银行|借记卡||
|2|农业银行|借记卡||
|3|建设银行|借记卡||
|4|中国银行|借记卡||
|5|浦发银行|借记卡||
|6|光大银行|借记卡||
|7|兴业银行|借记卡||
|8|中信银行|借记卡||
|9|平安银行|借记卡||
|10|华夏银行|借记卡||
|11|广发银行|借记卡||
|12|交通银行|借记卡||
|13|上海银行|借记卡||
|14|浙商银行|借记卡||
|15|北京银行|借记卡||
|16|邮储银行|借记卡||
|17|招商银行|借记卡||
|18|民生银行|借记卡||
|19|渤海银行|借记卡||
## 3.15 银行卡绑定验证码确认接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/bindCard/confirm/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|verifyCode|短信验证码|String|是||
|bindCardNo|绑卡订单号|String|是||
>d 该手机号将收到来自银行卡的绑卡验证码短信
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|bindCardNo|绑卡订单号|String|是||
|status|绑卡状态|Boolean|是|绑定成功为true、绑定失败为false|
## 3.16 个体户支付回调
>d 该接口需要第三方自行编写提供接口到发放平台 接口编写示例如下。
#### 请求方式:POST
```java
@PostMapping("signCallBack")
@ResponseBody
public String signCallBack(HttpServletRequest request, @RequestBody String data){
String publicKey = "该公钥由发放平台提供发放到贵司邮箱";
//解密
String decode = RSAHelper.decryptByPublicKey(data, publicKey);
/*贵公司处理业务逻辑*/
return "success";
}
```
解密工具类在 [JAVA_DEMO](https://gitee.com/xinfudblog/lxapi_java_demo) 的 RSAHelper 类中
>d 贵司写完后提供到接口url给发放平台即可。回调成功需返回success,不然回重复回调,至多重试5次
postman中模拟接口是否正常接收数据如下操作

#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是|
|transStatus|支付状态|Integer|是|[7.系统管理费 - 支付状态](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|payType|支付类型|Integer|是|0银行卡|
|payMethod|付款方式|Integer|是|[8.系统管理费 - 付款方式状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|payer|支付对象|Integer|是|0个体户 1商户|
|amount|支付金额|BigDecimal|是||
|accountingPeriods|账期|List<String>|是|[9.系统管理费 - 账期状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
## 3.17 个体户银行卡绑定查询接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/bindCard/query/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|cardNo|银行卡卡号|String|是||
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|bindCardNo|绑卡订单号|String|是|
|status|绑卡状态|Boolean|是|绑定成功为true、绑定失败为false|
## 3.18 支付结果查询接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/pay/query/{token}
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|transNo|支付订单号|String|是|
|transStatus|支付状态|Integer|是|[7.系统管理费 - 支付状态](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|payType|支付类型|Integer|是|0银行卡|
|payMethod|付款方式|Integer|是|[8.系统管理费 - 付款方式状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
|payer|支付对象|Integer|是|0 个体户、 1 商户|
|amount|支付金额|BigDecimal|是||
|accountingPeriods|账期时间|List<String>|是|[9.系统管理费 - 账期状态码](https://easydoc.top/doc/63011222/0klm3Gmk/lsNgE5QQ)|
#### 字段解释:
账期:这里的账期时间是指的,个体工商户支付的季度服务费的时间,分为Q1(1月 ~ 3月)、Q2(4月~ 6月)依次类推;
## 3.19 免密登录获取链接
>d 该接口适用场景
将综合服务平台个体户注册H5页面嵌入自己公司的APP,小程序或者公众号为了不让用户再次输入手机验证码进行登录操作。提升用户体验度。
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/qs/getTokenUrl
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|mobile|手机号|String|是|请求示例:{"mobile":"xxxxx"}|
#### 接口响应参数data字段解密后的参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|url|个体户注册链接|String|是|该链接有效时间为两分钟,如果两分钟未使用则需要重新获取一下。使用过之后会失效,第二次重新进入需要重新获取|
```json
# 响应参数示例如下。只有当 success等于true的时候才会有data里面的值
{
"resopnseType": 0,
"errorCode": "",
"errorMessage": "",
"status": 0,
"data": "UXgTVjlGdO+ughW8ZGTn2gc4CTuJEY9oUxBjKm4YaMzcPiExl5OX7sfQuQzfjLrjVwvrT1kmp8mpan0WEw3mqwuMga3tT/kkUU8wb5/TpwjG6O68rgWrHlI5PEI+dy4jgBGiJhOd1ReuVYbDZQb/06cYD5WbELGQJIuBVjZF7RA=",
"ext": null,
"extMessage": null,
"success": true
}
data解密后的内容:
{
"url": "https://testh5.lanycee.com/nosecret-login?code=359530b9d80728d038c979656d31faa4"
}
```
## 3.20 个体户注销接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/selfEmployedLogout
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCard|身份证号码|String|是|
|mainstayId|主体ID|Integer|是|
|source|业务线|Integer|是| 2:轻税,3:账管家,4:云纳税|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|status|个体户状态|Integer|是|[3.个体户注册状态码](https://easydoc.net/doc/63011222/0klm3Gmk/lsNgE5QQ) 状态码:40 注销中,注销中代表调用接口成功,等待系统处理即可|
|needPay|是否需要支付|boolean|是|ture:需要支付注销费,false:无需支付注销费|
|transNo|注销费支付订单号|String|否|只要当需要支付的时候该字段才有值|
|payAmount|注销费|BigDecimal|否|只要当需要支付的时候该字段才有值|
|agencyTransNos|季度服务费支付订单号|List<String>|否|只要当需要支付的时候该字段才有值|
|agencyPayAmount|季度服务费|BigDecimal|否|只要当需要支付的时候该字段才有值|
|totalPayAmount|总支付金额|BigDecimal|否|只要当需要支付的时候该字段才有值|
#### 注意:
(1)众包模式 - 个体工商户(超额累进)与众包模式 - 个体工商户(定期定额)是不需要支付注销服务费的所以needPay字段返回的就是false;
(2)payAmount 注销服务费是商户入准时合同约定的金额来判断(具体可以咨询商务人员),注销服务费这里指的是单个个体户的注销服务金额;
## 3.21 个体户信息批量查询
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:/open/api/v1/selfRegistered/qsSelfEmployedBatchQuery
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCards|身份证号码|List<String>|是|身份证号码数组,身份证个数不可超过100个|
|mainstayId|主体ID|Integer|是|
#### 接口响应参数说明:
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|name|姓名|String|是||
|idCard|身份证号码|String|是||
|mainstayName|注册地|String|是||
|status|个体户状态|Integer|是|详情请看[3.个体户注册状态码](https://easydoc.net/doc/63011222/0klm3Gmk/lsNgE5QQ)(该值为经营中的时候才可进行结算)|
|taxStatus|税务状态|Integer|是|0:未实名,1:已实名。该状态为已实名才可进行开票操作|
|taxType|个税算法类型|String|是|0:累进制、1核定制、2、双定制|
|isRefuse|审核拒绝|Integer|0:未拒绝 1:审核拒绝||
|companyName|个体户公司名称|String|是||
|bankNameAccount|开户行及账户信息|String|是||
|taxNumber|税号|String|否|个体户注册成功之后才会有税号|
|phoneAddress|手机号、注册地|String|是||
|license|营业执照|String|否|个体户注册成功之后才会有|
|failReason|异常原因|
|selectStatus|是否查询到|boolean|false:未查询到 true:查询到了|
|source|所属业务线|Integer|2:轻税 3:账管家 4:云纳税|
#### 注意:
(1)selectStatus:返回true代表的能查到该个体户的数据,返回false代表的查询失败,没有查询到个体户的信息;