功能模块接口 - 个体户注册

## 综合服务云平台 - 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.7.3 实名采集、3.8 个体户注册状态回调、3.9 获取企业合作主体发票类目|松子| ## 1.1 个体户注册流程图 ![个体户注册状态图.jpg](https://cos.easydoc.net/87516830/files/kholplsb.jpg) ## 1.2 接口时序图 ![轻税接口时序图__注册流程.jpg](https://cos.easydoc.net/87516830/files/khlmowd6) ## 2. 接口加解密 >d 接口调用细节流程: ◆ 参数RSA加密[接口签名,加解密说明](https://easydoc.xyz/doc/90689852/YkCCKKo8/zVVCnXHl) ◆ 将加密结果以及公共参数拼接成新的字符串通过MD5加密生成签名 ◆ 将公共参数以及签名通过header传输,参数加密结果通过body传输,发起http请求 ◆ 返回结果解密[接口签名,加解密说明](https://easydoc.xyz/doc/90689852/YkCCKKo8/zVVCnXHl) #### 接口响应参数都为如下固定json格式 |参数名称|参数含义|数据类型|是否必有|参数备注| |-|-|-|-|-| |resopnseType| 返回类型|int|是|无需关注此值| |errorCode|错误码 |String|是|详情参考[系统错误码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |errorMessage| 错误信息|String|是|详情参考[系统错误码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |status|状态码|int|是|详情参考[系统错误码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |success|是否成功|boolean|是|true:成功 false:失败| |data|返回结果数据|String|否|只有当success为true才会有该值,该值为RSA加密值,需解密使用,解密规则请看[接口签名,加解密说明](https://easydoc.xyz/doc/90689852/YkCCKKo8/zVVCnXHl)| ## 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:账管家| |mainstayId|主体ID|Integer|是|| |industryCode|行业code|String|是|| |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示例如下: ![18ffcd4d5b91eeeb70b6d1e6b7b3a85.png](https://cos.easydoc.net/44383407/files/kg1v3bm9.png) #### 接口响应参数说明: 响应参数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/90689852/YkCCKKo8/Y0HFC5LJ)| |taxStatus|税务状态|Integer|是|0:未实名,1:已实名。当该状态变为已实名后才可以进行开票申请操作|| |refuseType|拒绝类型|Integer|否|| |refuseReason|审核拒绝原因|String|否|| |companyName|个体户公司名称|String|是|| |taxNumber|税号|String|否|个体户注册成功之后才会有税号| |mobile|注册手机号码|String|是|| |address|注册地址|String|是|| |businessLicense|营业执照|String|否|个体户注册成功之后才会有| ## 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/90689852/YkCCKKo8/Y0HFC5LJ) |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|是 |encryptMobile|掩码手机号|String|是 #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |status|工商授权状态|Integer|是|[工商授权状态码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ) |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/90689852/YkCCKKo8/Y0HFC5LJ) |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 贵司写完后提供到接口url给发放平台即可。回调成功需返回success,不然回重复回调,至多重试5次 postman中模拟接口是否正常接收数据如下操作 ![微信截图_20191111122018.png](https://cos.easydoc.net/44383407/files/k2tx5nl4.png) #### 传给回调接口参数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/90689852/YkCCKKo8/Y0HFC5LJ)| |taxStatus|税务状态|Integer|是|0:未实名,1:已实名。当该状态变为已实名后才可以进行开票申请操作|| |refuseType|拒绝类型|Integer|否|0:签名无法识别,请重新签名(从新调用3.5.签署接口),1:政务网注册授权失败","政务网注册授权失败(从新调用3.7.1政务网授权接口)| |refuseReason|审核拒绝原因|String|否|| |companyName|个体户公司名称|String|是|| |taxNumber|税号|String|否|个体户注册成功之后才会有税号| |mobile|注册手机号码|String|是|| |address|注册地址|String|是|| |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 //所属业务线 轻税 }] ```