查询提现账户余额
接口说明
接口描述:查询商户应用配置的渠道账户的可用余额。发起提现时,提现金额不可超出可用余额。
适用对象:特约商户
请求URL:https://pay.yintongzaixian.com/api/cashout/balance/query
请求方式:POST或GET
请求类型:application/json 或 application/x-www-form-urlencoded
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(32) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 支付接口 | ifCode | 是 | String(24) | shengpay | 支付接口,例如:shengpay-盛付通 |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5或RSA2方式 |
请求示例数据
{
"ifCode": "shengpay",
"appId": "653b67b90d14f66aa119a518",
"sign": "AC186C9168312C02BB34EA430F320E05",
"signType": "MD5",
"reqTime": "1718791936",
"mchNo": "M1698391993",
"version": "1.0"
}
返回参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String(128) | 签名失败 | 具体错误原因,例如:签名失败、参数格式校验错误 |
| 签名信息 | sign | 否 | String(32) | 7C165045B92700E60693423D32AD6446 | 对data内数据签名,如data为空则不返回 |
| 返回数据 | data | 否 | String(512) | {} | 返回下单数据,json格式数据 |
data数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 可用余额 | balance | 是 | int | 100 | 账户可用余额金额,单位分 |
| 不可用余额 | frozenBalance | 是 | int | 5 | 账户冻结不可用的金额,单位分 |
| 总余额 | totalBalance | 是 | int | 105 | 账户总余额,单位分(可用余额+不可用余额) |
| 渠道账户余额详情 | channelBalanceDetail | 否 | String | {} | 特殊渠道账户余额详情,json格式字符串 |
返回示例数据
{
"code": 0,
"data": {
"balance": 5577
},
"msg": "SUCCESS",
"sign": "EF09DA6F6D15AB1FA97E5FC629EC6289"
}
特殊渠道--- 易宝返回示例数据
{
"code": 0,
"data": {
"balance": 213,
"channelBalanceDetail": "{\"FEE_ACCOUNT\":0,\"SETTLE_ACCOUNT\":0,\"DIVIDE_ACCOUNT\":12,\"MARKET_ACCOUNT\":13,\"FUND_ACCOUNT\":188}",
"frozenBalance": 0,
"totalBalance": 213
},
"msg": "SUCCESS",
"sign": "EFE3CB882303D76E237D77F6A36EE650"
}
特殊渠道--- 易宝返回示例数据说明(makefile):
FEE_ACCOUNT:手续费账户,SETTLE_ACCOUNT:待结算账户,DIVIDE_ACCOUNT:待分账账户,MARKET_ACCOUNT:营销账户,FUND_ACCOUNT:资金账户, SPECIAL_FUND_ACCOUNT:专款账户
特殊渠道--- 盛付通返回示例数据
{
"code": 0,
"data": {
"balance": 68,
"channelBalanceDetail": "{\"balance\":68,\"sharingBalance\":57,\"frozenBalance\":0,\"settlementBalance\":0,\"availableBalance\":68}",
"frozenBalance": 0,
"totalBalance": 68
},
"msg": "SUCCESS",
"sign": "BFF4CC17C1C749D581CEF5E8441E6808"
}
特殊渠道--- 盛付通返回示例数据说明:
channelBalanceDetail中数据含义:
balance:现金账户总余额
availableBalance:可用余额,现金账户可自由支配的金额
frozenBalance:现金冻结金额,不可支取。
sharingBalance:待分账余额,开通分账产品才有值
settlementBalance:待结算余额,在途未结算订单资金(已扣除收单费用)。
其中所有金额对应的单位均为分;订单支付后,未到结算周期的金额会在待结算余额中,到周期后,分账订单金额进入待分账余额,其他进入现金余额。
SDK调用示例(Java):```java
JeepayClient jeepayClient = JeepayClient.getInstance(Jeepay.appId, Jeepay.apiKey, Jeepay.getApiBase());
CashoutBalanceQueryRequest request = new CashoutBalanceQueryRequest();
CashoutBalanceQueryReqModel model = new CashoutBalanceQueryReqModel();
model.setMchNo(Jeepay.mchNo); // 商户号
model.setAppId(jeepayClient.getAppId()); // 应用ID
request.setBizModel(model);
try {
CashoutBalanceQueryResponse response = jeepayClient.execute(request);
_log.info("验签结果:{}", response.checkSign(Jeepay.apiKey));
if (response.isSuccess(Jeepay.apiKey)) {
_log.info("data:{}", response.getData());
} else {
_log.info("请求失败:mchNo={}, msg={}", Jeepay.mchNo, response.getMsg());
}
} catch (JeepayException e) {
_log.error(e.getMessage());
}