查询钱包账户明细
接口说明
接口描述:商户通过该接口上送钱包编号,查询钱包账户资金变动明细。
适用对象:特约商户
请求URL:https://pay.yintongzaixian.com/api/wallet/user/changeDetails
请求方式:POST
请求类型:application/json 或 application/x-www-form-urlencoded
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 钱包用户编号 | walletId | 是 | String(30) | 124442600 | 开户接口返回的钱包用户编号 |
| 开始时间 | startDate | 否 | String(20) | 2023-10-01 | 查询开始时间,格式:YYYY-MM-DD,默认查询近30天 |
| 结束时间 | endDate | 否 | String(20) | 2023-10-07 | 查询结束时间,格式:YYYY-MM-DD,默认查询近30天 |
| 请求页数 | pageNum | 是 | int | 1 | 请求页数 |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5方式 |
请求示例数据
{
"walletId": "2",
"startDate": "2023-10-01",
"endDate": "2023-10-07",
"appId": "64e87b640d1480cf86ae4385",
"sign": "C5FDF8303DE9E4F4C6592D1DDBEA9AF6",
"signType": "MD5",
"reqTime": "1700039659",
"mchNo": "M1692957540",
"pageNum": 1,
"version": "1.0"
}
返回参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String | 签名失败 | 具体错误原因,例如:签名失败、参数格式校验错误 |
| 签名信息 | sign | 否 | String | CCD9083A6DAD9A2DA9F668C3D4517A84 | 对data内数据签名,如data为空则不返回 |
| 返回数据 | data | 否 | String | {} | 返回下单数据,json格式数据 |
data数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 钱包用户编号 | walletId | 是 | String | 124442600 | 开户接口返回的钱包用户编号 |
| 总条数 | total | 是 | int | 3 | 账户变更明细总数 |
| 账户明细列表 | changeDetailList | 否 | List | - | 账户明细列表,具体数据见下方说明 |
| 渠道错误码 | errCode | 否 | String | 1002 | 渠道关单返回错误码 |
| 渠道错误描述 | errMsg | 否 | String | 关闭异常 | 渠道关单返回错误描述 |
账户明细说明
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 交易类型 | tradeType | 是 | String | 124442600 | 交易类型 trans-转账 cashout-提现 pay-收款 refund-退款 |
| 交易金额 | amount | 是 | long | 3 | 交易金额,单位分 |
| 交易金额变动方向 | fundChangeType | 否 | String | - | 交易金额变动方向,+增加,-减少 |
| 渠道订单号 | channelOrderId | 否 | String 1002 | 上游渠道订单号 | |
| 交易后余额 | balance | 否 | long | 32 | 交易后余额 |
| 摘要 | summary | 否 | String | 提现 | 摘要 |
| 交易时间 | tradeTime | 否 | String | 2023-10-23 17:09:25 | 交易时间,格式:YYYY-DD-MM HH:MM:SS |
返回示例数据
{
"code": 0,
"data": {
"changeDetailList": [
{
"amount": 1,
"balance": 32,
"channelOrderId": "2023111510640951",
"fundChangeType": "-",
"summary": "转出",
"tradeTime": "2023-11-15 10:04:00",
"tradeType": "trans"
},
{
"amount": 1,
"balance": 33,
"channelOrderId": "2023102317122246",
"fundChangeType": "-",
"summary": "转出",
"tradeTime": "2023-10-23 17:09:25",
"tradeType": "trans"
},
{
"amount": 1,
"balance": 34,
"channelOrderId": "2023102317122236",
"fundChangeType": "-",
"summary": "提现",
"tradeTime": "2023-10-23 17:09:22",
"tradeType": "cashout"
}
],
"total": 3,
"walletId": 2
},
"msg": "SUCCESS",
"sign": "A1A30415727C1A0E0CEFC5EE0420207A"
}
SDK调用示例(Java):
JeepayClient jeepayClient = JeepayClient.getInstance(Jeepay.appId, Jeepay.apiKey, Jeepay.getApiBase());
WalletChangeDetailsRequest request = new WalletChangeDetailsRequest();
WalletChangeDetailsReqModel model = new WalletChangeDetailsReqModel();
model.setMchNo(Jeepay.mchNo); // 商户号
model.setAppId(jeepayClient.getAppId()); // 应用ID
request.setBizModel(model);
try {
WalletChangeDetailsResponse 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());
}