Skip to content

Commit a888fb5

Browse files
committed
分账功能实现
1 parent 9db3f5a commit a888fb5

20 files changed

Lines changed: 1624 additions & 37 deletions
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.egzosn.pay.wx.v3.api;
2+
3+
import java.util.Map;
4+
5+
import com.egzosn.pay.common.bean.PayOrder;
6+
7+
/**
8+
* 分账服务
9+
* @author Egan
10+
* <pre>
11+
* email egan@egzosn.com
12+
* date 2021/10/6
13+
* </pre>
14+
*/
15+
public interface ProfitSharingService {
16+
17+
/**
18+
* 添加分账接收方
19+
* @param order 添加分账
20+
* @return 结果
21+
*/
22+
Map<String, Object> add(PayOrder order);
23+
/**
24+
* 删除分账接收方
25+
* @param order 删除分账
26+
* @return 结果
27+
*/
28+
Map<String, Object> delete(PayOrder order);
29+
/**
30+
* 解冻剩余资金
31+
* @param order 解冻
32+
* @return 结果
33+
*/
34+
Map<String, Object> unfreeze(PayOrder order);
35+
36+
}

pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxCombinePayService.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.alibaba.fastjson.JSON;
77
import com.alibaba.fastjson.JSONObject;
88
import com.alibaba.fastjson.serializer.SerializerFeature;
9-
import com.egzosn.pay.common.bean.CloseOrder;
9+
import com.egzosn.pay.common.bean.AssistOrder;
1010
import com.egzosn.pay.common.bean.Order;
1111
import com.egzosn.pay.common.bean.OrderParaStructure;
1212
import com.egzosn.pay.common.bean.PayMessage;
@@ -26,8 +26,8 @@
2626
*
2727
* @author egan
2828
* <pre>
29-
* email egzosn@gmail.com
30-
* date 2016-5-18 14:09:01
29+
* email egan@egzosn.com
30+
* date 2021/10/6
3131
* </pre>
3232
*/
3333
public class WxCombinePayService extends WxPayService {
@@ -114,9 +114,18 @@ public JSONObject unifiedOrder(PayOrder order) {
114114
*/
115115
@Override
116116
public Map<String, Object> query(String transactionId, String outTradeNo) {
117-
return getAssistService().doExecute("", WxTransactionType.COMBINE_TRANSACTION, outTradeNo);
117+
return query(new AssistOrder(outTradeNo));
118+
}
119+
/**
120+
* 交易查询接口
121+
*
122+
* @param assistOrder 查询条件
123+
* @return 返回查询回来的结果集,支付方原值返回
124+
*/
125+
@Override
126+
public Map<String, Object> query(AssistOrder assistOrder) {
127+
return getAssistService().doExecute("", WxTransactionType.COMBINE_TRANSACTION, assistOrder.getOutTradeNo());
118128
}
119-
120129

121130
/**
122131
* 交易关闭接口
@@ -133,16 +142,16 @@ public Map<String, Object> close(String transactionId, String outTradeNo) {
133142
/**
134143
* 交易关闭接口
135144
*
136-
* @param closeOrder 关闭订单
145+
* @param assistOrder 关闭订单
137146
* @return 返回支付方交易关闭后的结果
138147
*/
139148
@Override
140-
public Map<String, Object> close(CloseOrder closeOrder) {
149+
public Map<String, Object> close(AssistOrder assistOrder) {
141150
Map<String, Object> parameters = new MapGen<String, Object>(WxConst.COMBINE_APPID, payConfigStorage.getAppId())
142-
.keyValue(WxConst.SUB_ORDERS, closeOrder.getAttr(WxConst.SUB_ORDERS))
151+
.keyValue(WxConst.SUB_ORDERS, assistOrder.getAttr(WxConst.SUB_ORDERS))
143152
.getAttr();
144153
String requestBody = JSON.toJSONString(parameters, SerializerFeature.WriteMapNullValue);
145-
return getAssistService().doExecute(requestBody, WxTransactionType.COMBINE_CLOSE, closeOrder.getOutTradeNo());
154+
return getAssistService().doExecute(requestBody, WxTransactionType.COMBINE_CLOSE, assistOrder.getOutTradeNo());
146155
}
147156

148157
/**

pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxParameterStructure.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import java.util.HashMap;
44
import java.util.LinkedHashMap;
55
import java.util.Map;
6-
import java.util.TreeMap;
7-
86

97
import com.egzosn.pay.common.bean.Order;
108
import com.egzosn.pay.common.bean.OrderParaStructure;
@@ -56,7 +54,7 @@ public Map<String, Object> getPublicParameters() {
5654
public void loadSettleInfo(Map<String, Object> parameters, PayOrder order) {
5755
Object profitSharing = order.getAttr("profit_sharing");
5856
if (null != profitSharing) {
59-
Map<String, Object> settleInfo = new MapGen<String, Object>("profit_sharing", profitSharing).getAttr();
57+
Map<String, Object> settleInfo = new MapGen<>("profit_sharing", profitSharing).getAttr();
6058
parameters.put("settle_info", settleInfo);
6159
return;
6260
}

pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxPayService.java

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
import com.alibaba.fastjson.JSON;
2222
import com.alibaba.fastjson.JSONObject;
2323
import com.egzosn.pay.common.api.BasePayService;
24+
import com.egzosn.pay.common.bean.AssistOrder;
2425
import com.egzosn.pay.common.bean.BillType;
25-
import com.egzosn.pay.common.bean.CloseOrder;
26+
2627
import com.egzosn.pay.common.bean.CurType;
2728
import com.egzosn.pay.common.bean.MethodType;
2829
import com.egzosn.pay.common.bean.NoticeParams;
@@ -32,6 +33,7 @@
3233
import com.egzosn.pay.common.bean.PayOrder;
3334
import com.egzosn.pay.common.bean.PayOutMessage;
3435
import com.egzosn.pay.common.bean.RefundOrder;
36+
import com.egzosn.pay.common.bean.RefundResult;
3537
import com.egzosn.pay.common.bean.TransactionType;
3638
import com.egzosn.pay.common.bean.TransferOrder;
3739
import com.egzosn.pay.common.bean.result.PayException;
@@ -66,8 +68,8 @@
6668
*
6769
* @author egan
6870
* <pre>
69-
* email egzosn@gmail.com
70-
* date 2016-5-18 14:09:01
71+
* email egan@egzosn.com
72+
* date 2021/10/6
7173
* </pre>
7274
*/
7375
public class WxPayService extends BasePayService<WxPayConfigStorage> {
@@ -111,6 +113,7 @@ public WxPayService(WxPayConfigStorage payConfigStorage, HttpConfigStorage confi
111113

112114
/**
113115
* 辅助api
116+
*
114117
* @return 辅助api
115118
*/
116119
public WxPayAssistService getAssistService() {
@@ -126,7 +129,18 @@ public void setAssistService(WxPayAssistService assistService) {
126129
this.assistService = assistService;
127130
}
128131

132+
/**
133+
* 初始化之后执行
134+
*/
135+
@Override
136+
protected void initAfter() {
137+
new Thread(() -> {
138+
payConfigStorage.loadCertEnvironment();
139+
wxParameterStructure = new WxParameterStructure(payConfigStorage);
140+
getAssistService();
141+
}).start();
129142

143+
}
130144

131145
/**
132146
* 设置api服务器地址
@@ -223,8 +237,8 @@ public JSONObject unifiedOrder(PayOrder order) {
223237
Map<String, Object> parameters = wxParameterStructure.getPublicParameters();
224238
wxParameterStructure.initPartner(parameters);
225239
// 商品描述
226-
OrderParaStructure.loadParameters(parameters, "description", order.getSubject());
227-
OrderParaStructure.loadParameters(parameters, "description", order.getBody());
240+
OrderParaStructure.loadParameters(parameters, WxConst.DESCRIPTION, order.getSubject());
241+
OrderParaStructure.loadParameters(parameters, WxConst.DESCRIPTION, order.getBody());
228242
// 订单号
229243
parameters.put(WxConst.OUT_TRADE_NO, order.getOutTradeNo());
230244
//交易结束时间
@@ -430,15 +444,29 @@ public Map<String, Object> microPay(PayOrder order) {
430444
*/
431445
@Override
432446
public Map<String, Object> query(String transactionId, String outTradeNo) {
447+
return query(new AssistOrder(transactionId, outTradeNo));
448+
}
433449

450+
/**
451+
* 交易查询接口
452+
*
453+
* @param assistOrder 查询条件
454+
* @return 返回查询回来的结果集,支付方原值返回
455+
*/
456+
@Override
457+
public Map<String, Object> query(AssistOrder assistOrder) {
458+
String transactionId = assistOrder.getTradeNo();
459+
String outTradeNo = assistOrder.getOutTradeNo();
434460
String parameters = wxParameterStructure.getSpParameters();
435461
WxTransactionType transactionType = WxTransactionType.QUERY_TRANSACTION_ID;
436462
String uriVariable = transactionId;
437463
if (StringUtils.isNotEmpty(outTradeNo)) {
438464
transactionType = WxTransactionType.QUERY_OUT_TRADE_NO;
439465
uriVariable = outTradeNo;
440466
}
467+
441468
return getAssistService().doExecute(parameters, transactionType, uriVariable);
469+
442470
}
443471

444472

@@ -451,30 +479,30 @@ public Map<String, Object> query(String transactionId, String outTradeNo) {
451479
*/
452480
@Override
453481
public Map<String, Object> close(String transactionId, String outTradeNo) {
454-
return close(new CloseOrder(outTradeNo));
482+
return close(new AssistOrder(outTradeNo));
455483
}
456484

457-
458485
/**
459486
* 交易关闭接口
460487
*
461-
* @param closeOrder 关闭订单
488+
* @param assistOrder 关闭订单
462489
* @return 返回支付方交易关闭后的结果
463490
*/
464491
@Override
465-
public Map<String, Object> close(CloseOrder closeOrder) {
492+
public Map<String, Object> close(AssistOrder assistOrder) {
466493
String parameters = wxParameterStructure.getSpParameters();
467-
return getAssistService().doExecute(parameters, WxTransactionType.CLOSE, closeOrder.getOutTradeNo());
494+
return getAssistService().doExecute(parameters, WxTransactionType.CLOSE, assistOrder.getOutTradeNo());
468495
}
469496

497+
470498
/**
471499
* 申请退款接口
472500
*
473501
* @param refundOrder 退款订单信息
474502
* @return 返回支付方申请退款后的结果
475503
*/
476504
@Override
477-
public WxRefundResult refund(RefundOrder refundOrder) {
505+
public RefundResult refund(RefundOrder refundOrder) {
478506
//获取公共参数
479507
Map<String, Object> parameters = wxParameterStructure.initSubMchId(null);
480508

@@ -538,7 +566,7 @@ public Map<String, Object> downloadBill(Date billDate, BillType billType) {
538566
Map<String, Object> parameters = new HashMap<>(5);
539567

540568
//目前只支持日账单
541-
parameters.put("bill_date", DateUtils.formatDate(billDate, DateUtils.YYYYMMDD));
569+
parameters.put(WxConst.BILL_DATE, DateUtils.formatDate(billDate, DateUtils.YYYY_MM_DD));
542570
String fileType = billType.getFileType();
543571
OrderParaStructure.loadParameters(parameters, "tar_type", fileType);
544572
if (billType instanceof WxAccountType) {
@@ -567,7 +595,7 @@ public Map<String, Object> downloadBill(Date billDate, BillType billType) {
567595
}
568596
Map<String, Object> data = new HashMap<>();
569597
data.put("file", inputStream);
570-
return result;
598+
return data;
571599
}
572600

573601

@@ -579,7 +607,7 @@ public Map<String, Object> downloadBill(Date billDate, BillType billType) {
579607
*/
580608
@Override
581609
public Map<String, Object> transfer(TransferOrder order) {
582-
throw new PayErrorException(new WxPayError("", "等待作者实现"));
610+
throw new PayErrorException(new WxPayError("", "V3不支持转账"));
583611
}
584612

585613

@@ -596,7 +624,7 @@ public Map<String, Object> transfer(TransferOrder order) {
596624
*/
597625
@Override
598626
public Map<String, Object> transferQuery(String outNo, String wxTransferType) {
599-
throw new PayErrorException(new WxPayError("", "等待作者实现"));
627+
throw new PayErrorException(new WxPayError("", "V3不支持转账查询"));
600628
}
601629

602630

0 commit comments

Comments
 (0)