🆕 #1922 【微信支付】增加查询订单最大分账比例和剩余待分金额的接口
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package com.github.binarywang.wxpay.bean.profitsharing;
|
||||
|
||||
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants;
|
||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author : cofedream
|
||||
* @date : 2020-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@XStreamAlias("xml")
|
||||
public class ProfitSharingMerchantRatioQueryRequest extends BaseWxPayRequest {
|
||||
private static final long serialVersionUID = 2773455587673225334L;
|
||||
|
||||
public ProfitSharingMerchantRatioQueryRequest(String subMchId) {
|
||||
this.subMchId = subMchId;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkConstraints() throws WxPayException {
|
||||
// 目前仅支持HMAC-SHA256.
|
||||
this.setSignType(WxPayConstants.SignType.HMAC_SHA256);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ignoreAppid() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean ignoreSubAppId() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void storeMap(Map<String, String> map) {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.github.binarywang.wxpay.bean.profitsharing;
|
||||
|
||||
import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
/**
|
||||
* @author : cofedream
|
||||
* @date : 2020-12-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@XStreamAlias("xml")
|
||||
public class ProfitSharingMerchantRatioQueryResult extends BaseWxPayResult {
|
||||
/**
|
||||
* 服务商模式下的子商户号.<br/>
|
||||
* 2000<br/>
|
||||
* 子商户允许服务商分账的最大比例,单位万分比,比如2000表示20%
|
||||
*/
|
||||
@XStreamAlias("max_ratio")
|
||||
private Integer maxRatio;
|
||||
|
||||
@Override
|
||||
protected void loadXml(Document d) {
|
||||
maxRatio = readXmlInteger(d, "max_ratio");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.github.binarywang.wxpay.bean.profitsharing;
|
||||
|
||||
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants;
|
||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.*;
|
||||
import me.chanjar.weixin.common.annotation.Required;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author : cofedream
|
||||
* @date : 2020-12-29
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Builder(builderMethodName = "newBuilder")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@XStreamAlias("xml")
|
||||
public class ProfitSharingOrderAmountQueryRequest extends BaseWxPayRequest {
|
||||
|
||||
private static final long serialVersionUID = 6009448187615691627L;
|
||||
/**
|
||||
* <pre>
|
||||
* 字段名:微信订单号.
|
||||
* 变量名:transaction_id
|
||||
* 是否必填:是
|
||||
* String(32)
|
||||
* 示例值:4208450740201411110007820472
|
||||
* 描述:微信支付订单号
|
||||
* </pre>
|
||||
*/
|
||||
@XStreamAlias("transaction_id")
|
||||
@Required
|
||||
private String transactionId;
|
||||
|
||||
@Override
|
||||
protected void checkConstraints() throws WxPayException {
|
||||
// 目前仅支持HMAC-SHA256.
|
||||
this.setSignType(WxPayConstants.SignType.HMAC_SHA256);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean ignoreAppid() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean ignoreSubAppId() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void storeMap(Map<String, String> map) {
|
||||
map.put("transaction_id", transactionId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.github.binarywang.wxpay.bean.profitsharing;
|
||||
|
||||
import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
/**
|
||||
* @author : cofedream
|
||||
* @date : 2020-12-29
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@NoArgsConstructor
|
||||
@XStreamAlias("xml")
|
||||
public class ProfitSharingOrderAmountQueryResult extends BaseWxPayResult {
|
||||
private static final long serialVersionUID = 7355605400662796198L;
|
||||
/**
|
||||
* 微信订单号.
|
||||
*/
|
||||
@XStreamAlias("transaction_id")
|
||||
private String transactionId;
|
||||
/**
|
||||
* 订单剩余待分金额.
|
||||
*/
|
||||
@XStreamAlias("unsplit_amount")
|
||||
private Integer unSplitAmount;
|
||||
|
||||
@Override
|
||||
protected void loadXml(Document d) {
|
||||
transactionId = readXmlString(d, "transaction_id");
|
||||
unSplitAmount = readXmlInteger(d, "unsplit_amount");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -96,6 +96,34 @@ public interface ProfitSharingService {
|
||||
*/
|
||||
ProfitSharingQueryResult profitSharingQuery(ProfitSharingQueryRequest request) throws WxPayException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 服务商可通过调用此接口查询订单剩余待分金额。
|
||||
* 接口频率:30QPS
|
||||
* 文档详见: https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_10&index=7
|
||||
* 接口链接:https://api.mch.weixin.qq.com/pay/profitsharingorderamountquery
|
||||
* </pre>
|
||||
*
|
||||
* @param request .
|
||||
* @return .
|
||||
* @throws WxPayException .
|
||||
*/
|
||||
ProfitSharingOrderAmountQueryResult profitSharingOrderAmountQuery(ProfitSharingOrderAmountQueryRequest request) throws WxPayException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 服务商可以查询子商户设置的允许服务商分账的最大比例。
|
||||
* 接口频率:30QPS
|
||||
* 文档详见: https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=25_11&index=8
|
||||
* 接口链接: https://api.mch.weixin.qq.com/pay/profitsharingmerchantratioquery
|
||||
* </pre>
|
||||
*
|
||||
* @param request .
|
||||
* @return .
|
||||
* @throws WxPayException .
|
||||
*/
|
||||
ProfitSharingMerchantRatioQueryResult profitSharingMerchantRatioQuery(ProfitSharingMerchantRatioQueryRequest request) throws WxPayException;
|
||||
|
||||
/**
|
||||
* TODO:这个接口用真实的数据返回【参数不正确】,我对比官方文档除了缺少sub_mch_id,和sub_appid之外其他相同,当我随便填了一个商户id的时候,提示【回退方没有开通分账回退功能】
|
||||
* <pre>
|
||||
|
||||
@@ -86,6 +86,28 @@ public class ProfitSharingServiceImpl implements ProfitSharingService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfitSharingOrderAmountQueryResult profitSharingOrderAmountQuery(ProfitSharingOrderAmountQueryRequest request) throws WxPayException {
|
||||
request.checkAndSign(this.payService.getConfig());
|
||||
String url = this.payService.getPayBaseUrl() + "/pay/profitsharingorderamountquery";
|
||||
|
||||
final String responseContent = payService.post(url, request.toXML(), true);
|
||||
ProfitSharingOrderAmountQueryResult result = BaseWxPayResult.fromXML(responseContent, ProfitSharingOrderAmountQueryResult.class);
|
||||
result.checkResult(payService, request.getSignType(), true);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfitSharingMerchantRatioQueryResult profitSharingMerchantRatioQuery(ProfitSharingMerchantRatioQueryRequest request) throws WxPayException {
|
||||
request.checkAndSign(this.payService.getConfig());
|
||||
String url = this.payService.getPayBaseUrl() + "/pay/profitsharingmerchantratioquery";
|
||||
|
||||
final String responseContent = payService.post(url, request.toXML(), true);
|
||||
ProfitSharingMerchantRatioQueryResult result = BaseWxPayResult.fromXML(responseContent, ProfitSharingMerchantRatioQueryResult.class);
|
||||
result.checkResult(payService, request.getSignType(), true);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfitSharingReturnResult profitSharingReturn(ProfitSharingReturnRequest returnRequest) throws WxPayException {
|
||||
returnRequest.checkAndSign(this.payService.getConfig());
|
||||
|
||||
@@ -100,6 +100,24 @@ public class ProfitSharingServiceImplTest {
|
||||
this.logger.info(result.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProfitSharingMerchantRatioQuery() throws WxPayException {
|
||||
final String subMchId = "subMchid";
|
||||
final ProfitSharingMerchantRatioQueryRequest request = new ProfitSharingMerchantRatioQueryRequest(subMchId);
|
||||
final ProfitSharingMerchantRatioQueryResult result = payService.getProfitSharingService().profitSharingMerchantRatioQuery(request);
|
||||
logger.info(result.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProfitSharingOrderAmountQuery() throws WxPayException {
|
||||
final String transactionId = "4200000916202012281633853127";
|
||||
final ProfitSharingOrderAmountQueryRequest request = ProfitSharingOrderAmountQueryRequest.newBuilder()
|
||||
.transactionId(transactionId)
|
||||
.build();
|
||||
final ProfitSharingOrderAmountQueryResult result = payService.getProfitSharingService().profitSharingOrderAmountQuery(request);
|
||||
logger.info(result.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProfitSharingReturn() throws WxPayException {
|
||||
ProfitSharingReturnRequest request = ProfitSharingReturnRequest
|
||||
|
||||
Reference in New Issue
Block a user