diff --git a/_doc/Task.md b/_doc/Task.md
index 7c1dd35fe..bad55e6b2 100644
--- a/_doc/Task.md
+++ b/_doc/Task.md
@@ -2,7 +2,9 @@
2.0.8: 转账/撤销接口和系统优化
- [x] 支持撤销接口
- [x] 增加转账接口功能
-- [ ] 支付宝支持JSAPI方式支付
+- [ ] 转账同步接口
+- [x] 支付宝支持JSAPI方式支付
+- [ ] 支付宝SDK修改为官方SDK
- [ ] 细分各种支付异常类和编码(部分)
- [ ] 增加分账回调处理(支付宝)
- [ ] 增加分账修复功能
diff --git a/bootx-platform/pom.xml b/bootx-platform/pom.xml
index 3565400a1..cb4c6e1fe 100644
--- a/bootx-platform/pom.xml
+++ b/bootx-platform/pom.xml
@@ -61,7 +61,6 @@
3.5.3
3.3.2
2.4.0
- 2.9.7
1.36.0
1.16.6
8.5.4
diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/allocation/AllocationParam.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/allocation/AllocationParam.java
index 77b982fc9..cfa95ce50 100644
--- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/allocation/AllocationParam.java
+++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/allocation/AllocationParam.java
@@ -20,7 +20,7 @@ import java.util.List;
public class AllocationParam extends DaxPayRequest {
/** 商户分账单号 */
- private String bizAllocationNo;
+ private String bizAllocNo;
/** 支付订单号 */
private String orderNo;
diff --git a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/allocation/AllocationTest.java b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/allocation/AllocationTest.java
index 4e3d1a613..8bd96e016 100644
--- a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/allocation/AllocationTest.java
+++ b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/allocation/AllocationTest.java
@@ -91,7 +91,7 @@ public class AllocationTest {
public void allocationOpen() {
// 分账参数
AllocationParam param = new AllocationParam();
- param.setBizAllocationNo("A"+ RandomUtil.randomNumbers(5));
+ param.setBizAllocNo("A"+ RandomUtil.randomNumbers(5));
param.setAttach("88899");
param.setBizOrderNo("SDK_1717264053245");
param.setDescription("测试分账");
@@ -108,7 +108,7 @@ public class AllocationTest {
public void allocationOpenByGroup() {
// 分账参数
AllocationParam param = new AllocationParam();
- param.setBizAllocationNo("A"+ RandomUtil.randomNumbers(5));
+ param.setBizAllocNo("A"+ RandomUtil.randomNumbers(5));
param.setAttach("88899");
param.setBizOrderNo("SDK_1717257064753");
param.setGroupNo("123");
@@ -126,7 +126,7 @@ public class AllocationTest {
public void allocationOpenByReceivers() {
// 分账参数
AllocationParam param = new AllocationParam();
- param.setBizAllocationNo("A"+ RandomUtil.randomNumbers(5));
+ param.setBizAllocNo("A"+ RandomUtil.randomNumbers(5));
param.setAttach("88899");
param.setOrderNo("DEVP24060201473363000001");
AllocReceiverParam allocReceiverParam = new AllocReceiverParam();
diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationOrderController.java
index fa5b25b26..709cadf99 100644
--- a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationOrderController.java
+++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationOrderController.java
@@ -92,9 +92,9 @@ public class AllocationOrderController {
@InitPaymentContext(PaymentApiCode.ALLOCATION_FINISH)
@Operation(summary = "分账完结")
@PostMapping("/finish")
- public ResResult finish(String allocationNo){
+ public ResResult finish(String allocNo){
AllocFinishParam param = new AllocFinishParam();
- param.setAllocNo(allocationNo);
+ param.setAllocNo(allocNo);
allocationService.finish(param);
return Res.ok();
}
@@ -102,9 +102,9 @@ public class AllocationOrderController {
@InitPaymentContext(PaymentApiCode.ALLOCATION)
@Operation(summary = "重新发起分账")
@PostMapping("/retry")
- public ResResult retryAllocation(String bizAllocationNo){
+ public ResResult retryAllocation(String bizAllocNo){
AllocationParam param = new AllocationParam();
- param.setBizAllocationNo(bizAllocationNo);
+ param.setBizAllocNo(bizAllocNo);
allocationService.allocation(param);
return Res.ok();
}
diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/PayOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/PayOrderController.java
index 8ca9612d6..d8b8e91e1 100644
--- a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/PayOrderController.java
+++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/PayOrderController.java
@@ -91,7 +91,7 @@ public class PayOrderController {
public ResResult allocation(String orderNo){
AllocationParam param = new AllocationParam();
param.setOrderNo(orderNo);
- param.setBizAllocationNo(OrderNoGenerateUtil.allocation());
+ param.setBizAllocNo(OrderNoGenerateUtil.allocation());
allocationService.allocation(param);
return Res.ok();
}
diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/param/payment/allocation/AllocationParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/param/payment/allocation/AllocationParam.java
index e4414e302..34a124f95 100644
--- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/param/payment/allocation/AllocationParam.java
+++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/param/payment/allocation/AllocationParam.java
@@ -24,7 +24,7 @@ public class AllocationParam extends PaymentCommonParam {
@NotBlank(message = "商户分账单号不可为空")
@Size(max = 100, message = "商户分账单号不可超过100位")
@Schema(description = "商户分账单号")
- private String bizAllocationNo;
+ private String bizAllocNo;
/** 支付订单号 */
@Size(max = 32, message = "支付订单号不可超过32位")
diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/util/PayUtil.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/util/PayUtil.java
index cfe3cd918..28d359f4f 100644
--- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/util/PayUtil.java
+++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/util/PayUtil.java
@@ -4,10 +4,13 @@ import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
import cn.hutool.core.date.DatePattern;
import lombok.experimental.UtilityClass;
+import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
+import java.util.HashMap;
+import java.util.Map;
/**
* 支付工具类
@@ -51,7 +54,7 @@ public class PayUtil {
* @param amount 元的金额
* @return 分的金额
*/
- public static int convertCentAmount(BigDecimal amount) {
+ public int convertCentAmount(BigDecimal amount) {
return amount.multiply(HUNDRED).setScale(0, RoundingMode.HALF_UP).intValue();
}
@@ -61,7 +64,27 @@ public class PayUtil {
* @param amount 元的金额
* @return 元的金额 两位小数
*/
- public static BigDecimal conversionAmount(int amount) {
+ public BigDecimal conversionAmount(int amount) {
return BigDecimal.valueOf(amount).divide(HUNDRED,2, RoundingMode.HALF_UP);
}
+
+ /**
+ * 获取请求参数
+ */
+ public Map toMap(HttpServletRequest request) {
+ Map params = new HashMap<>();
+ Map requestParams = request.getParameterMap();
+
+ for (String name : requestParams.keySet()) {
+ String[] values = requestParams.get(name);
+ String valueStr = "";
+
+ for (int i = 0; i < values.length; ++i) {
+ valueStr = i == values.length - 1 ? valueStr + values[i] : valueStr + values[i] + ",";
+ }
+
+ params.put(name, valueStr);
+ }
+ return params;
+ }
}
diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayCallbackController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayCallbackController.java
index 8eecdc17a..99991b8bc 100644
--- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayCallbackController.java
+++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayCallbackController.java
@@ -7,8 +7,8 @@ import cn.daxpay.single.service.core.channel.wechat.service.WeChatPayCallbackSer
import cn.daxpay.single.service.core.extra.AliPayAuthService;
import cn.daxpay.single.service.core.extra.WeChatAuthService;
import cn.daxpay.single.service.sdk.union.api.UnionPayKit;
+import cn.daxpay.single.util.PayUtil;
import com.egzosn.pay.union.api.UnionPayConfigStorage;
-import com.ijpay.alipay.AliPayApi;
import com.ijpay.core.kit.HttpKit;
import com.ijpay.core.kit.WxPayKit;
import io.swagger.v3.oas.annotations.Operation;
@@ -50,7 +50,7 @@ public class PayCallbackController {
@Operation(summary = "支付宝信息回调")
@PostMapping("/alipay")
public String aliPayNotify(HttpServletRequest request) {
- Map stringStringMap = AliPayApi.toMap(request);
+ Map stringStringMap = PayUtil.toMap(request);
return aliPayCallbackService.callback(stringStringMap);
}
diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayNoticeReceiverController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayNoticeReceiverController.java
index a34beb89c..bacfb5fc6 100644
--- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayNoticeReceiverController.java
+++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/PayNoticeReceiverController.java
@@ -2,7 +2,7 @@ package cn.daxpay.single.gateway.controller;
import cn.bootx.platform.common.core.annotation.IgnoreAuth;
import cn.daxpay.single.service.core.channel.alipay.service.AliPayNoticeReceiverService;
-import com.ijpay.alipay.AliPayApi;
+import cn.daxpay.single.util.PayUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
@@ -32,7 +32,7 @@ public class PayNoticeReceiverController {
@Operation(summary = "支付宝消息通知")
@PostMapping("/alipay")
public String aliPayNotice(HttpServletRequest request) {
- Map map = AliPayApi.toMap(request);
+ Map map = PayUtil.toMap(request);
return aliPayNoticeReceiverService.noticeReceiver(map);
}
diff --git a/daxpay-single/daxpay-single-service/pom.xml b/daxpay-single/daxpay-single-service/pom.xml
index e3917bed8..cfc91d960 100644
--- a/daxpay-single/daxpay-single-service/pom.xml
+++ b/daxpay-single/daxpay-single-service/pom.xml
@@ -78,17 +78,11 @@
${daxpay.version}
-
+
- com.github.javen205
- IJPay-AliPay
- ${IJPay.version}
-
-
- fastjson
- com.alibaba
-
-
+ com.alipay.sdk
+ alipay-sdk-java
+ ${alipay.version}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java
index 5a17bd57c..2a0ee1345 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java
@@ -13,5 +13,5 @@ import lombok.experimental.Accessors;
public class AllocationLocal {
/** 通道分账号 */
- private String outAllocationNo;
+ private String outAllocNo;
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationReceiverService.java
index 68c79e92e..e86e0a478 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationReceiverService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationReceiverService.java
@@ -3,15 +3,18 @@ package cn.daxpay.single.service.core.channel.alipay.service;
import cn.daxpay.single.code.AllocReceiverTypeEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
+import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.payment.allocation.entity.AllocationReceiver;
import cn.hutool.core.util.StrUtil;
+import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayResponse;
import com.alipay.api.domain.AlipayTradeRoyaltyRelationBindModel;
import com.alipay.api.domain.AlipayTradeRoyaltyRelationUnbindModel;
import com.alipay.api.domain.RoyaltyEntity;
+import com.alipay.api.request.AlipayTradeRoyaltyRelationBindRequest;
+import com.alipay.api.request.AlipayTradeRoyaltyRelationUnbindRequest;
import com.alipay.api.response.AlipayTradeRoyaltyRelationBindResponse;
import com.alipay.api.response.AlipayTradeRoyaltyRelationUnbindResponse;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -33,6 +36,7 @@ import static cn.daxpay.single.code.AllocReceiverTypeEnum.*;
@Service
@RequiredArgsConstructor
public class AliPayAllocationReceiverService {
+ private final AliPayConfigService aliPayConfigService;
/**
* 校验
@@ -47,7 +51,8 @@ public class AliPayAllocationReceiverService {
* 绑定关系
*/
@SneakyThrows
- public void bind(AllocationReceiver allocationReceiver){
+ public void bind(AllocationReceiver allocationReceiver, AliPayConfig aliPayConfig){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayTradeRoyaltyRelationBindModel model = new AlipayTradeRoyaltyRelationBindModel();
model.setOutRequestNo(String.valueOf(allocationReceiver.getId()));
@@ -60,7 +65,9 @@ public class AliPayAllocationReceiverService {
// 不报错视为同步成功
model.setReceiverList(Collections.singletonList(entity));
- AlipayTradeRoyaltyRelationBindResponse response = AliPayApi.tradeRoyaltyRelationBind(model);
+ AlipayTradeRoyaltyRelationBindRequest request = new AlipayTradeRoyaltyRelationBindRequest();
+ request.setBizModel(model);
+ AlipayTradeRoyaltyRelationBindResponse response = alipayClient.execute(request);
this.verifyErrorMsg(response);
}
@@ -68,7 +75,8 @@ public class AliPayAllocationReceiverService {
* 解绑关系
*/
@SneakyThrows
- public void unbind(AllocationReceiver allocationReceiver){
+ public void unbind(AllocationReceiver allocationReceiver, AliPayConfig aliPayConfig){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayTradeRoyaltyRelationUnbindModel model = new AlipayTradeRoyaltyRelationUnbindModel();
model.setOutRequestNo(String.valueOf(allocationReceiver.getId()));
@@ -78,7 +86,9 @@ public class AliPayAllocationReceiverService {
entity.setAccount(allocationReceiver.getReceiverAccount());
model.setReceiverList(Collections.singletonList(entity));
- AlipayTradeRoyaltyRelationUnbindResponse response = AliPayApi.tradeRoyaltyRelationUnBind(model);
+ AlipayTradeRoyaltyRelationUnbindRequest request = new AlipayTradeRoyaltyRelationUnbindRequest();
+ request.setBizModel(model);
+ AlipayTradeRoyaltyRelationUnbindResponse response = alipayClient.execute(request);
System.out.println(response);
// 如果出现分账方不存在也视为成功
if (Objects.equals(response.getSubCode(), AliPayCode.USER_NOT_EXIST)) {
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationService.java
index 281ffc919..26711aba7 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayAllocationService.java
@@ -6,6 +6,7 @@ import cn.daxpay.single.code.AllocDetailResultEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.common.local.PaymentContextLocal;
+import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.allocation.entity.AllocOrder;
import cn.daxpay.single.service.core.order.allocation.entity.AllocOrderDetail;
import cn.daxpay.single.service.core.payment.sync.result.AllocRemoteSyncResult;
@@ -13,12 +14,13 @@ import cn.daxpay.single.util.PayUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
+import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayResponse;
import com.alipay.api.domain.*;
import com.alipay.api.request.AlipayTradeOrderSettleQueryRequest;
+import com.alipay.api.request.AlipayTradeOrderSettleRequest;
import com.alipay.api.response.AlipayTradeOrderSettleQueryResponse;
import com.alipay.api.response.AlipayTradeOrderSettleResponse;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -41,12 +43,13 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class AliPayAllocationService {
-
+ private final AliPayConfigService aliPayConfigService;
/**
* 发起分账
*/
@SneakyThrows
- public void allocation(AllocOrder allocOrder, List orderDetails){
+ public void allocation(AllocOrder allocOrder, List orderDetails, AliPayConfig config){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
// 分账主体参数
AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel();
model.setOutRequestNo(allocOrder.getAllocNo());
@@ -64,11 +67,12 @@ public class AliPayAllocationService {
})
.collect(Collectors.toList());
model.setRoyaltyParameters(royaltyParameters);
-
- AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model);
+ AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
+ request.setBizModel(model);
+ AlipayTradeOrderSettleResponse response = alipayClient.execute(request);
// 需要写入到分账订单中
String settleNo = response.getSettleNo();
- PaymentContextLocal.get().getAllocationInfo().setOutAllocationNo(settleNo);
+ PaymentContextLocal.get().getAllocationInfo().setOutAllocNo(settleNo);
this.verifyErrorMsg(response);
}
@@ -76,7 +80,8 @@ public class AliPayAllocationService {
* 分账完结
*/
@SneakyThrows
- public void finish(AllocOrder allocOrder, List orderDetails ){
+ public void finish(AllocOrder allocOrder, List orderDetails, AliPayConfig config){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
// 分账主体参数
AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel();
model.setOutRequestNo(String.valueOf(allocOrder.getAllocNo()));
@@ -98,7 +103,9 @@ public class AliPayAllocationService {
})
.collect(Collectors.toList());
model.setRoyaltyParameters(royaltyParameters);
- AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model);
+ AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
+ request.setBizModel(model);
+ AlipayTradeOrderSettleResponse response = alipayClient.execute(request);
this.verifyErrorMsg(response);
}
@@ -106,13 +113,14 @@ public class AliPayAllocationService {
* 分账状态同步
*/
@SneakyThrows
- public AllocRemoteSyncResult sync(AllocOrder allocOrder, List allocOrderDetails){
+ public AllocRemoteSyncResult sync(AllocOrder allocOrder, List allocOrderDetails, AliPayConfig config){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayTradeOrderSettleQueryModel model = new AlipayTradeOrderSettleQueryModel();
model.setTradeNo(allocOrder.getOutOrderNo());
model.setOutRequestNo(allocOrder.getAllocNo());
AlipayTradeOrderSettleQueryRequest request = new AlipayTradeOrderSettleQueryRequest();
request.setBizModel(model);
- AlipayTradeOrderSettleQueryResponse response = AliPayApi.execute(request);
+ AlipayTradeOrderSettleQueryResponse response = alipayClient.execute(request);
// 验证
this.verifyErrorMsg(response);
Map detailMap = allocOrderDetails.stream()
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCallbackService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCallbackService.java
index d1dc57e6d..941753a82 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCallbackService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCallbackService.java
@@ -50,7 +50,6 @@ public class AliPayCallbackService {
private final RefundCallbackService refundCallbackService;
-
/**
* 回调处理入口
*/
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCloseService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCloseService.java
index 501438990..965352aec 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCloseService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayCloseService.java
@@ -3,14 +3,17 @@ package cn.daxpay.single.service.core.channel.alipay.service;
import cn.daxpay.single.code.PaySyncStatusEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
+import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.pay.entity.PayOrder;
import cn.daxpay.single.service.core.payment.sync.result.PayRemoteSyncResult;
import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeCancelModel;
import com.alipay.api.domain.AlipayTradeCloseModel;
+import com.alipay.api.request.AlipayTradeCancelRequest;
+import com.alipay.api.request.AlipayTradeCloseRequest;
import com.alipay.api.response.AlipayTradeCancelResponse;
import com.alipay.api.response.AlipayTradeCloseResponse;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -29,6 +32,8 @@ import java.util.Objects;
public class AliPayCloseService {
private final AliPaySyncService aliPaySyncService;
+ private final AliPayConfigService aliPayConfigService;
+
/**
* 关闭支付 此处使用交易关闭接口
* 交易关闭: 只有订单在未支付的状态下才可以进行关闭, 商户不需要额外申请就有此接口的权限
@@ -37,16 +42,18 @@ public class AliPayCloseService {
* 2. 如果返回"当前交易状态不支持此操作", 同步网关支付状态, 判断网关是否已经被关闭
*
*/
- public void close(PayOrder payOrder) {
+ public void close(PayOrder payOrder, AliPayConfig config) {
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayTradeCloseModel model = new AlipayTradeCloseModel();
model.setOutTradeNo(payOrder.getOrderNo());
-
+ AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
+ request.setBizModel(model);
try {
- AlipayTradeCloseResponse response = AliPayApi.tradeCloseToResponse(model);
+ AlipayTradeCloseResponse response = alipayClient.execute(request);
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
// 如果返回"当前交易状态不支持此操作", 同步网关支付状态, 判断网关是否已经被关闭
if (Objects.equals(response.getSubCode(),AliPayCode.ACQ_TRADE_STATUS_ERROR)){
- if (this.syncStatus(payOrder)){
+ if (this.syncStatus(payOrder, config)){
return;
}
}
@@ -67,17 +74,20 @@ public class AliPayCloseService {
* 交易撤销: 如果用户支付成功,会将此订单资金退还给用户. 限制时间为1天,过了24小时,该接口无法再使用。
* 可以视为一个特殊的接口, 需要专门签约这个接口的权限
*/
- public void cancel(PayOrder payOrder) {
+ public void cancel(PayOrder payOrder, AliPayConfig config) {
+
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayTradeCancelModel model = new AlipayTradeCancelModel();
model.setOutTradeNo(payOrder.getOrderNo());
-
+ AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
+ request.setBizModel(model);
try {
- AlipayTradeCancelResponse response = AliPayApi.tradeCancelToResponse(model);
+ AlipayTradeCancelResponse response = alipayClient.execute(request);;
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
// 如果返回"当前交易状态不支持此操作", 同步网关支付状态, 判断网关是否已经被关闭
if (Objects.equals(response.getSubCode(),AliPayCode.ACQ_TRADE_STATUS_ERROR)){
- if (this.syncStatus(payOrder)){
+ if (this.syncStatus(payOrder, config)){
return;
}
}
@@ -99,8 +109,8 @@ public class AliPayCloseService {
/**
* 关闭失败后, 获取支付网关的状态, 如果是关闭返回true, 其他情况抛出异常
*/
- private boolean syncStatus(PayOrder payOrder){
- PayRemoteSyncResult gatewaySyncResult = aliPaySyncService.syncPayStatus(payOrder);
+ private boolean syncStatus(PayOrder payOrder, AliPayConfig config){
+ PayRemoteSyncResult gatewaySyncResult = aliPaySyncService.syncPayStatus(payOrder,config);
// 已经关闭
if (Objects.equals(gatewaySyncResult.getSyncStatus(), PaySyncStatusEnum.CLOSED)){
return true;
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayConfigService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayConfigService.java
index 2bc533aed..bde29a6df 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayConfigService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayConfigService.java
@@ -1,6 +1,5 @@
package cn.daxpay.single.service.core.channel.alipay.service;
-import cn.bootx.platform.common.core.exception.BizException;
import cn.bootx.platform.common.core.exception.DataNotExistException;
import cn.bootx.platform.common.core.rest.dto.LabelValue;
import cn.daxpay.single.exception.pay.PayFailureException;
@@ -12,12 +11,9 @@ import cn.daxpay.single.service.core.system.config.service.PlatformConfigService
import cn.daxpay.single.service.param.channel.alipay.AliPayConfigParam;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
-import cn.hutool.core.util.CharsetUtil;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.DefaultAlipayClient;
-import com.ijpay.alipay.AliPayApiConfig;
-import com.ijpay.alipay.AliPayApiConfigKit;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -126,41 +122,4 @@ public class AliPayConfigService {
}
return new DefaultAlipayClient(config);
}
-
- /**
- * 初始化IJPay服务
- */
- @SneakyThrows
- public void initConfig(AliPayConfig alipayConfig) {
- AliPayApiConfig aliPayApiConfig;
- // 公钥
- if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_KEY)) {
- aliPayApiConfig = AliPayApiConfig.builder()
- .setAppId(alipayConfig.getAppId())
- .setPrivateKey(alipayConfig.getPrivateKey())
- .setAliPayPublicKey(alipayConfig.getAlipayPublicKey())
- .setCharset(CharsetUtil.UTF_8)
- .setServiceUrl(alipayConfig.getServerUrl())
- .setSignType(alipayConfig.getSignType())
- .build();
- }
- // 证书
- else if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_CART)) {
- aliPayApiConfig = AliPayApiConfig.builder()
- .setAppId(alipayConfig.getAppId())
- .setPrivateKey(alipayConfig.getPrivateKey())
- .setAppCertContent(alipayConfig.getAppCert())
- .setAliPayCertContent(alipayConfig.getAlipayCert())
- .setAliPayRootCertContent(alipayConfig.getAlipayRootCert())
- .setCharset(CharsetUtil.UTF_8)
- .setServiceUrl(alipayConfig.getServerUrl())
- .setSignType(alipayConfig.getSignType())
- .buildByCertContent();
- }
- else {
- throw new BizException("支付宝认证方式不可为空");
- }
- AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
- }
-
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayNoticeReceiverService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayNoticeReceiverService.java
index 111874f5e..f67eb501f 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayNoticeReceiverService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayNoticeReceiverService.java
@@ -29,8 +29,6 @@ import static cn.daxpay.single.service.code.AliPayCode.AUTH_TYPE_KEY;
@RequiredArgsConstructor
public class AliPayNoticeReceiverService {
- private final AllocationCallbackService allocationCallbackService;
-
private final AliPayConfigService aliPayConfigService;
/**
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayReconcileService.java
index aaeb7be97..e2c1facda 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayReconcileService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayReconcileService.java
@@ -1,7 +1,6 @@
package cn.daxpay.single.service.core.channel.alipay.service;
import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
-import cn.daxpay.single.code.PayChannelEnum;
import cn.daxpay.single.code.ReconcileTradeEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
@@ -9,6 +8,7 @@ import cn.daxpay.single.service.code.ReconcileFileTypeEnum;
import cn.daxpay.single.service.common.local.PaymentContextLocal;
import cn.daxpay.single.service.core.channel.alipay.dao.AliReconcileBillDetailManager;
import cn.daxpay.single.service.core.channel.alipay.dao.AliReconcileBillTotalManager;
+import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.channel.alipay.entity.AliReconcileBillDetail;
import cn.daxpay.single.service.core.channel.alipay.entity.AliReconcileBillTotal;
import cn.daxpay.single.service.core.order.reconcile.dao.ReconcileFileManager;
@@ -23,12 +23,13 @@ import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayDataDataserviceBillDownloadurlQueryModel;
-import com.ijpay.alipay.AliPayApi;
+import com.alipay.api.request.AlipayDataDataserviceBillDownloadurlQueryRequest;
+import com.alipay.api.response.AlipayDataDataserviceBillDownloadurlQueryResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
-import lombok.val;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.dromara.x.file.storage.core.FileInfo;
@@ -57,6 +58,8 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class AliPayReconcileService {
+ private final AliPayConfigService aliPayConfigService;
+
private final AliReconcileBillDetailManager reconcileBillDetailManager;
private final AliReconcileBillTotalManager reconcileBillTotalManager;
@@ -71,16 +74,19 @@ public class AliPayReconcileService {
*
* @param date 对账日期 yyyy-MM-dd 格式
* @param recordOrder 对账单对象
+ * @param config
*/
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
- public void downAndSave(String date, ReconcileOrder recordOrder){
-
+ public void downAndSave(String date, ReconcileOrder recordOrder, AliPayConfig config){
try {
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayDataDataserviceBillDownloadurlQueryModel model = new AlipayDataDataserviceBillDownloadurlQueryModel();
model.setBillDate(date);
model.setBillType("trade");
- val response = AliPayApi.billDownloadUrlQueryToResponse(model);
+ AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();
+ request.setBizModel(model);
+ AlipayDataDataserviceBillDownloadurlQueryResponse response = alipayClient.execute(request);
// 判断返回结果
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
log.error("获取支付宝对账单失败: {}", response.getSubMsg());
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayRefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayRefundService.java
index 6d05b51f2..4dc16feb8 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayRefundService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayRefundService.java
@@ -6,12 +6,14 @@ import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.common.context.ErrorInfoLocal;
import cn.daxpay.single.service.common.context.RefundLocal;
import cn.daxpay.single.service.common.local.PaymentContextLocal;
+import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.refund.entity.RefundOrder;
import cn.daxpay.single.util.PayUtil;
import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeRefundModel;
+import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeRefundResponse;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -29,22 +31,27 @@ import java.util.Objects;
@RequiredArgsConstructor
public class AliPayRefundService {
+ private final AliPayConfigService aliPayConfigService;
+
/**
* 退款, 调用支付宝退款
*/
- public void refund(RefundOrder refundOrder) {
+ public void refund(RefundOrder refundOrder, AliPayConfig config) {
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
+
RefundLocal refundInfo = PaymentContextLocal.get().getRefundInfo();
ErrorInfoLocal errorInfo = PaymentContextLocal.get().getErrorInfo();
- AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel();
- refundModel.setOutTradeNo(refundOrder.getOrderNo());
- refundModel.setOutRequestNo(refundOrder.getRefundNo());
+ AlipayTradeRefundModel model = new AlipayTradeRefundModel();
+ model.setOutTradeNo(refundOrder.getOrderNo());
+ model.setOutRequestNo(refundOrder.getRefundNo());
// 金额转换
String refundAmount = PayUtil.conversionAmount(refundOrder.getAmount()).toString();
- refundModel.setRefundAmount(refundAmount);
+ model.setRefundAmount(refundAmount);
+ AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
+ request.setBizModel(model);
- // 设置退款信息
try {
- AlipayTradeRefundResponse response = AliPayApi.tradeRefundToResponse(refundModel);
+ AlipayTradeRefundResponse response = alipayClient.execute(request);
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
errorInfo.setErrorMsg(response.getSubMsg());
errorInfo.setErrorCode(response.getCode());
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayService.java
index a1c3e2ca3..9378f5f4a 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayService.java
@@ -21,7 +21,6 @@ import com.alipay.api.AlipayResponse;
import com.alipay.api.domain.*;
import com.alipay.api.request.*;
import com.alipay.api.response.*;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPaySyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPaySyncService.java
index 7d5e1c2aa..c33077328 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPaySyncService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPaySyncService.java
@@ -1,20 +1,23 @@
package cn.daxpay.single.service.core.channel.alipay.service;
import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
-import cn.daxpay.single.code.RefundSyncStatusEnum;
import cn.daxpay.single.code.PaySyncStatusEnum;
+import cn.daxpay.single.code.RefundSyncStatusEnum;
import cn.daxpay.single.service.code.AliPayCode;
+import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.pay.entity.PayOrder;
import cn.daxpay.single.service.core.order.refund.entity.RefundOrder;
import cn.daxpay.single.service.core.payment.sync.result.PayRemoteSyncResult;
import cn.daxpay.single.service.core.payment.sync.result.RefundRemoteSyncResult;
import cn.hutool.json.JSONUtil;
import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeFastpayRefundQueryModel;
import com.alipay.api.domain.AlipayTradeQueryModel;
+import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest;
+import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -35,6 +38,8 @@ import static cn.daxpay.single.service.code.AliPayCode.GMT_REFUND_PAY;
@Service
@RequiredArgsConstructor
public class AliPaySyncService {
+ private final AliPayConfigService aliPayConfigService;
+
/**
* 与支付宝网关同步状态, 退款状态有
* 1 远程支付成功
@@ -43,18 +48,21 @@ public class AliPaySyncService {
* 4 查询不到
* 5 查询失败
*/
- public PayRemoteSyncResult syncPayStatus(PayOrder payOrder) {
+ public PayRemoteSyncResult syncPayStatus(PayOrder payOrder, AliPayConfig aliPayConfig){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
PayRemoteSyncResult syncResult = new PayRemoteSyncResult().setSyncStatus(PaySyncStatusEnum.FAIL);
// 查询
try {
- AlipayTradeQueryModel queryModel = new AlipayTradeQueryModel();
- queryModel.setOutTradeNo(payOrder.getOrderNo());
- AlipayTradeQueryResponse response = AliPayApi.tradeQueryToResponse(queryModel);
+ AlipayTradeQueryModel model = new AlipayTradeQueryModel();
+ model.setOutTradeNo(payOrder.getOrderNo());
+ AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
+ request.setBizModel(model);
+ AlipayTradeQueryResponse response = alipayClient.execute(request);
String tradeStatus = response.getTradeStatus();
syncResult.setSyncInfo(JSONUtil.toJsonStr(response));
// 设置网关订单号
syncResult.setOutOrderNo(response.getTradeNo());
- // 支付完成 TODO 部分退款也在这个地方, 但无法进行区分, 需要借助对账进行处理
+ // 支付完成 部分退款无法进行区分, 需要借助对账进行处理
if (Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_SUCCESS) || Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_FINISHED)) {
// 支付完成时间
LocalDateTime payTime = LocalDateTimeUtil.of(response.getSendPayDate());
@@ -96,17 +104,20 @@ public class AliPaySyncService {
* 退款同步查询
* 注意: 支付宝退款没有网关订单号, 网关订单号是支付单的
*/
- public RefundRemoteSyncResult syncRefundStatus(RefundOrder refundOrder) {
+ public RefundRemoteSyncResult syncRefundStatus(RefundOrder refundOrder){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient();
RefundRemoteSyncResult syncResult = new RefundRemoteSyncResult().setSyncStatus(RefundSyncStatusEnum.FAIL);
try {
- AlipayTradeFastpayRefundQueryModel queryModel = new AlipayTradeFastpayRefundQueryModel();
+ AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel();
// 退款请求号
- queryModel.setOutRequestNo(String.valueOf(refundOrder.getRefundNo()));
+ model.setOutRequestNo(String.valueOf(refundOrder.getRefundNo()));
// 商户订单号
- queryModel.setOutTradeNo(String.valueOf(refundOrder.getOrderNo()));
+ model.setOutTradeNo(String.valueOf(refundOrder.getOrderNo()));
// 设置返回退款完成时间
- queryModel.setQueryOptions(Collections.singletonList(GMT_REFUND_PAY));
- AlipayTradeFastpayRefundQueryResponse response = AliPayApi.tradeRefundQueryToResponse(queryModel);
+ model.setQueryOptions(Collections.singletonList(GMT_REFUND_PAY));
+ AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
+ request.setBizModel(model);
+ AlipayTradeFastpayRefundQueryResponse response = alipayClient.execute(request);
syncResult.setSyncInfo(JSONUtil.toJsonStr(response));
// 失败
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java
index 04f2d247e..0d6aee8ad 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java
@@ -12,11 +12,13 @@ import cn.daxpay.single.util.OrderNoGenerateUtil;
import cn.daxpay.single.util.PayUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.util.StrUtil;
+import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayFundAccountQueryModel;
import com.alipay.api.domain.AlipayFundTransToaccountTransferModel;
+import com.alipay.api.request.AlipayFundAccountQueryRequest;
+import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.response.AlipayFundAccountQueryResponse;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
-import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -32,15 +34,20 @@ import static cn.daxpay.single.service.code.AliPayCode.QUERY_ACCOUNT_TYPE;
@RequiredArgsConstructor
public class AliPayTransferService {
+ private final AliPayConfigService aliPayConfigService;
+
/**
* 余额查询接口
*/
@SneakyThrows
- public void queryAccountAmount(AliPayConfig config) {
+ public void queryAccountAmount(AliPayConfig config, AliPayConfig aliPayConfig){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel();
model.setAccountType(QUERY_ACCOUNT_TYPE);
model.setAlipayUserId(config.getAlipayUserId());
- AlipayFundAccountQueryResponse response = AliPayApi.accountQueryToResponse(model, null);
+ AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest();
+ request.setBizModel(model);
+ AlipayFundAccountQueryResponse response = alipayClient.execute(request);
System.out.println(response);
}
@@ -48,17 +55,20 @@ public class AliPayTransferService {
* 转账接口
*/
@SneakyThrows
- public void transfer(TransferOrder order) {
+ public void transfer(TransferOrder order, AliPayConfig aliPayConfig){
+ AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
model.setAmount(PayUtil.conversionAmount(order.getAmount()).toString());
model.setOutBizNo(OrderNoGenerateUtil.transfer());
model.setPayeeType(order.getPayeeType());
model.setPayeeAccount(order.getPayeeAccount());
model.setPayerShowName(order.getPayerShowName());
- // 标题
+ // 标题需要用附加方式传输进去
model.setExtParam(StrUtil.format("{order_title: '{}'}", order.getTitle()));
model.setRemark(order.getReason());
- AlipayFundTransToaccountTransferResponse response = AliPayApi.transferToResponse(model);
+ AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
+ request.setBizModel(model);
+ AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
log.error("网关返回退款失败: {}", response.getSubMsg());
throw new PayFailureException(response.getSubMsg());
@@ -70,8 +80,7 @@ public class AliPayTransferService {
String payDate = response.getPayDate();
if (StrUtil.isNotBlank(payDate)){
LocalDateTime time = LocalDateTimeUtil.parse(payDate, DatePattern.NORM_DATETIME_PATTERN);
- transferInfo.setFinishTime(time)
- .setStatus(TransferStatusEnum.SUCCESS);
+ transferInfo.setFinishTime(time).setStatus(TransferStatusEnum.SUCCESS);
}
}
}
diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java
index 0f7abc285..f1ad88bca 100644
--- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java
+++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java
@@ -49,7 +49,7 @@ public class AllocOrder extends MpBaseEntity implements EntityBaseFunction1.4.01
0.0.38
3.5.2
- 2.9.10
+ 4.39.104.ALL
+ 2.9.11
2.14.7
4.4.0
1.5.3.Final