🆕 #1758 微信支付增加电商收付通服务商和二级商户余额查询接口
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
package com.github.binarywang.wxpay.bean.ecommerce;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: f00lish
|
||||||
|
* @date: 2020/09/12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class FundBalanceResult {
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 字段名:二级商户号
|
||||||
|
* 变量名:sub_mchid
|
||||||
|
* 是否必填:是
|
||||||
|
* 类型:string(32)
|
||||||
|
* 描述:
|
||||||
|
* 电商平台二级商户号,由微信支付生成并下发。
|
||||||
|
* 示例值:1900000109
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@SerializedName("sub_mchid")
|
||||||
|
private String subMchid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 字段名:可用余额
|
||||||
|
* 变量名:available_amount
|
||||||
|
* 是否必填:是
|
||||||
|
* 类型:int64
|
||||||
|
* 描述:
|
||||||
|
* 可用余额(单位:分),此余额可做提现操作。
|
||||||
|
* 示例值:100
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@SerializedName("available_amount")
|
||||||
|
private Integer availableAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 字段名:不可用余额
|
||||||
|
* 变量名:pending_amount
|
||||||
|
* 是否必填:否
|
||||||
|
* 类型:int64
|
||||||
|
* 描述:
|
||||||
|
* 不可用余额(单位:分)。
|
||||||
|
* 示例值:100
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@SerializedName("pending_amount")
|
||||||
|
private Integer pendingAmount;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.github.binarywang.wxpay.bean.ecommerce.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务商账户类型
|
||||||
|
* @author: f00lish
|
||||||
|
* @date: 2020/09/12
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum SpAccountTypeEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基本账户
|
||||||
|
*/
|
||||||
|
BASIC("BASIC"),
|
||||||
|
/**
|
||||||
|
* 运营账户
|
||||||
|
*/
|
||||||
|
OPERATION("OPERATION"),
|
||||||
|
/**
|
||||||
|
* 手续费账户
|
||||||
|
*/
|
||||||
|
FEES("FEES");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账户类型
|
||||||
|
*/
|
||||||
|
private final String value;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.github.binarywang.wxpay.service;
|
package com.github.binarywang.wxpay.service;
|
||||||
|
|
||||||
import com.github.binarywang.wxpay.bean.ecommerce.*;
|
import com.github.binarywang.wxpay.bean.ecommerce.*;
|
||||||
|
import com.github.binarywang.wxpay.bean.ecommerce.enums.SpAccountTypeEnum;
|
||||||
import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
|
import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
|
||||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||||
|
|
||||||
@@ -127,4 +128,50 @@ public interface EcommerceService {
|
|||||||
* @return 解密后通知数据
|
* @return 解密后通知数据
|
||||||
*/
|
*/
|
||||||
PartnerTransactionsNotifyResult parsePartnerNotifyResult(String notifyData, SignatureHeader header) throws WxPayException;
|
PartnerTransactionsNotifyResult parsePartnerNotifyResult(String notifyData, SignatureHeader header) throws WxPayException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 服务商账户实时余额
|
||||||
|
* 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/amount.shtml
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param accountType 服务商账户类型
|
||||||
|
* @return 返回数据
|
||||||
|
*/
|
||||||
|
FundBalanceResult spNowBalance(SpAccountTypeEnum accountType) throws WxPayException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 服务商账户日终余额
|
||||||
|
* 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/amount.shtml
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param accountType 服务商账户类型
|
||||||
|
* @param date 查询日期 2020-09-11
|
||||||
|
* @return 返回数据
|
||||||
|
*/
|
||||||
|
FundBalanceResult spDayEndBalance(SpAccountTypeEnum accountType, String date) throws WxPayException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 二级商户号账户实时余额
|
||||||
|
* 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/amount.shtml
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param subMchid 二级商户号
|
||||||
|
* @return 返回数据
|
||||||
|
*/
|
||||||
|
FundBalanceResult subNowBalance(String subMchid) throws WxPayException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 二级商户号账户日终余额
|
||||||
|
* 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/amount.shtml
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param subMchid 二级商户号
|
||||||
|
* @param date 查询日期 2020-09-11
|
||||||
|
* @return 返回数据
|
||||||
|
*/
|
||||||
|
FundBalanceResult subDayEndBalance(String subMchid, String date) throws WxPayException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.github.binarywang.wxpay.service.impl;
|
package com.github.binarywang.wxpay.service.impl;
|
||||||
|
|
||||||
import com.github.binarywang.wxpay.bean.ecommerce.*;
|
import com.github.binarywang.wxpay.bean.ecommerce.*;
|
||||||
|
import com.github.binarywang.wxpay.bean.ecommerce.enums.SpAccountTypeEnum;
|
||||||
import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
|
import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
|
||||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||||
import com.github.binarywang.wxpay.service.EcommerceService;
|
import com.github.binarywang.wxpay.service.EcommerceService;
|
||||||
@@ -115,6 +116,38 @@ public class EcommerceServiceImpl implements EcommerceService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FundBalanceResult spNowBalance(SpAccountTypeEnum accountType) throws WxPayException {
|
||||||
|
String url = String.format("%s/v3/merchant/fund/balance/%s", this.payService.getPayBaseUrl(), accountType);
|
||||||
|
URI uri = URI.create(url);
|
||||||
|
String response = this.payService.getV3(uri);
|
||||||
|
return GSON.fromJson(response, FundBalanceResult.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FundBalanceResult spDayEndBalance(SpAccountTypeEnum accountType, String date) throws WxPayException {
|
||||||
|
String url = String.format("%s/v3/merchant/fund/dayendbalance/%s?date=%s", this.payService.getPayBaseUrl(), accountType, date);
|
||||||
|
URI uri = URI.create(url);
|
||||||
|
String response = this.payService.getV3(uri);
|
||||||
|
return GSON.fromJson(response, FundBalanceResult.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FundBalanceResult subNowBalance(String subMchid) throws WxPayException {
|
||||||
|
String url = String.format("%s/v3/ecommerce/fund/balance/%s", this.payService.getPayBaseUrl(), subMchid);
|
||||||
|
URI uri = URI.create(url);
|
||||||
|
String response = this.payService.getV3(uri);
|
||||||
|
return GSON.fromJson(response, FundBalanceResult.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FundBalanceResult subDayEndBalance(String subMchid, String date) throws WxPayException {
|
||||||
|
String url = String.format("%s/v3/ecommerce/fund/enddaybalance/%s?date=%s", this.payService.getPayBaseUrl(), subMchid, date);
|
||||||
|
URI uri = URI.create(url);
|
||||||
|
String response = this.payService.getV3(uri);
|
||||||
|
return GSON.fromJson(response, FundBalanceResult.class);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean verifyNotifySign(SignatureHeader header, String data) {
|
private boolean verifyNotifySign(SignatureHeader header, String data) {
|
||||||
String beforeSign = String.format("%s\n%s\n%s\n",
|
String beforeSign = String.format("%s\n%s\n%s\n",
|
||||||
header.getTimeStamp(),
|
header.getTimeStamp(),
|
||||||
|
|||||||
Reference in New Issue
Block a user