第四章 接口参数(1) - 充值流程
>d 接口调用细节流程:
◆ 参数RSA加密[接口签名,加解密说明](https://easydoc.xyz/doc/98778187/o4ecqJ51/StSSkNi5)
◆ 将加密结果以及公共参数拼接成新的字符串通过MD5加密生成签名
◆ 将公共参数以及签名通过header传输,参数加密结果通过body传输,发起http请求
◆ 返回结果解密[接口签名,加解密说明](https://easydoc.xyz/doc/98778187/o4ecqJ51/StSSkNi5)
## 接口响应参数都为如下固定json格式
|参数名称|参数含义|数据类型|是否必有|参数备注|
|-|-|-|-|-|
|resopnseType| 返回类型|int|是|无需关注此值|
|errorCode|错误码 |String|是|详情参考[系统错误码](https://easydoc.xyz/doc/98778187/o4ecqJ51/GiTKQ3py)|
|errorMessage| 错误信息|String|是|详情参考[系统错误码](https://easydoc.xyz/doc/98778187/o4ecqJ51/GiTKQ3py)|
|status|状态码|int|是|详情参考[系统错误码](https://easydoc.xyz/doc/98778187/o4ecqJ51/GiTKQ3py)|
|success|是否成功|boolean|是|true:成功 false:失败|
|data|返回结果数据|String|否|只有当success为true才会有该值,该值为RSA加密值,需解密使用,解密规则请看[接口签名,加解密说明](https://easydoc.xyz/doc/98778187/o4ecqJ51/StSSkNi5)|
## 1.1 充值接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/balance/recharge
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|是否必填|参数备注|
|-|-|-|-|
|mainstayId|主体ID|是||
|payType|支付类型|否|0:银行卡账户 1:支付宝账户、2:微信账户。默认为0(银行卡账户充值)|
|amount|充值金额|是||
|bankVoucherFile|充值银行回执单|否|该参数为通过[5.上传文件接口](https://easydoc.xyz/doc/98778187/o4ecqJ51/fJ3ZSpP4)将文件上传后返回的值|
|remarks|备注|否||
|thirdRechargeNo|第三方充值单号|是||
#### 接口响应参数data字段解密后的参数说明:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|thirdRechargeNo| 第三方充值单号| String|是||
|entryAmount| 打款金额|String|是||
|rechargeAmount| 实际充值到账金额(扣除税费)|String|是| ||
|contractTaxRate| 税率|String|是| ||
|contractTaxAmount| 税费|String|是| ||
## 1.2 充值结果查询接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/balance/rechargeResultQuery
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|是否必填|参数备注|
|-|-|-|-|
|thirdRechargeNo|第三方充值单号|否||
|rechargeBillNo |平台充值单号|否||
>d 注意:请求入参的平台充值订单号和第三方充值单号可以任选一个,如果传入两个会做精准匹配;
#### 接口响应参数data字段解密后map中的参数说明:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|rechargeBillNo|平台充值订单号|String|是||
|thirdRechargeNo| 第三方充值单号|String| 否|调用1.1 充值接口后才有值|
|payType|账户类型|Long|是|系统编码:[支付类型码](https://easydoc.net/doc/98778187/o4ecqJ51/GiTKQ3py)|
|auditStatus| 充值审核状态|Integer| 是||
|rechargeAmount| 充值金额|BigDecimal| 是||
|entryAmount| 入账金额|BigDecimal| 是||
|entryTime| 入账时间|Date|否||
|contractTaxAmount| 合同税费|BigDecimal| 是||
|contractTaxRate| 合同税率|BigDecimal| 是||
>d 注意:
>1. 如果 data字段为空则代表未取得充值结果
>2. 入账时间:
分线下充值和实时入金,
(1)线下充值是后台审核后的入账时间
(2)实时入金指的是资金实际到账的时间
## 1.3 充值成功异步回调
>d 该接口需要第三方自行编写提供接口到发放平台回调成功必须返回success不然会重复回调
#### 请求方式:POST
解密结果示例如下:
```json
{"rechargeBillNo":"xxxxxxxxxxxxxx","payType":0,"auditStatus":2,"rechargeAmount":12.01,"thirdRechargeNo":"xxxxx","entryAmount":12.01,"entryTime":"2021-12-12 05:12:12","contractTaxAmount":12.01,"contractTaxRate":0.1}";
```
|参数名称| 参数含义| 数据类型|是否必有| 参数备注|
|-|-|-|-|-|
|rechargeBillNo|平台充值订单号|String|是||
|thirdRechargeNo| 第三方充值单号|String| 否|调用1.1 充值接口后才有值|
|payType|账户类型|Long|是|系统编码:[支付类型码](https://easydoc.net/doc/98778187/o4ecqJ51/GiTKQ3py)|
|auditStatus| 充值审核状态|Integer| 是||
|rechargeAmount| 充值金额|BigDecimal| 是||
|entryAmount| 入账金额|BigDecimal| 是||
|entryTime| 入账时间|Date|否||
|contractTaxAmount| 合同税费|BigDecimal| 是||
|contractTaxRate| 合同税率|BigDecimal| 是||
>d 注意:
>1. 入账时间:
分线下充值和实时入金,
(1)线下充值是后台审核后的入账时间
(2)实时入金指的是资金实际到账的时间
>2. 充值回调支持:线下充值和实时入金两种方式
#### 接口示例:
>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中模拟接口是否正常接收数据如下操作

## 1.4 余额查询接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/balance/query
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|是否必填|参数备注|
|-|-|-|-|
|mainstayId|主体id|是|对应要查询某个主体的ID|
|payType|支付类型|是|详情请看[支付类型码](https://easydoc.xyz/doc/98778187/o4ecqJ51/GiTKQ3py)|
>d ◆填写主体名称:
示例:
String data = {"mainstayId":"1","payType":"0"};
#### 接口响应参数data字段解密后的参数说明:
|参数名称| 参数含义| 是否必有| 参数备注|
|-|-|-|-|
>d该响应参数data字段解密后为即为余额。
解密结果示例
"10.21"