diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AlipayCallbackController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AlipayCallbackController.java index 44a8fbf88..548657e74 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AlipayCallbackController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AlipayCallbackController.java @@ -67,7 +67,7 @@ public class AlipayCallbackController extends XktBaseController { boolean signVerified = false; try { //验证签名 - signVerified = AlipaySignature.rsaCheckV1(params, paymentManger.getAlipayPublicKey(), + signVerified = AlipaySignature.rsaCertCheckV1(params, paymentManger.getAlipayPublicCertPath(), paymentManger.getCharset(), paymentManger.getSignType()); } catch (AlipayApiException e) { logger.error("支付宝验签异常", e); diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 248a16ec1..a5c45c266 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -210,8 +210,10 @@ yto: # 支付宝配置 alipay: appId: 9021000144616672 - privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3x52ARikELwpOPvPcpY9jj7aEWIPivfBwkf3YRyUKnM7L6mOTxD1v3b7QLcL1+l0QmvOPSGgt2O3Qbjtvq+5ih4T32TlAzHGe8VqGVqrEv7ANQicsXz600ze5LdxCDRgBZWhO/GroGJKfenHf7K+arN4KXWWmHyZHCYD5z85TEvZZoA9e9MTMskXeDS8+fwP6McuNf4fR07kVuzblks+wWm1PsWfxFM7qNwSYKXbmEoyDe7+M9vBr7cwuj2OB3PEtj/FZjKMxVnFyVm61KiFAGUf3oUqWmPASTPDkFboRCS/njv980hk3sPba/qMDfMEpjoMZrcLBVzoj747oEi/DAgMBAAECggEAcVoXlRSxG7l/278MXl1nUXtEkeCeh+2rLWN+dDV9bUxGaJOLE4sIccUNeg2foGPpnuJTs15vk0endtVmp3weLntz0gMTQxpWQjiPIyi1b2Djz2msC7w7SwCz7+2PWtYEpmfLrFwX/Eubs+2r6vdrYDWbRj1RAuNXkp0UBgDcO3P9AFeGln5gUWxni4biN6B9sGGdsSwcm1A9biBPRsH2zMSVVWkhLVq+S73smm2Sh7WTIVEyeAuWEDeMs5oI2jQjPHMlUKmWW6JZ3uD5xbRm3Nkvve/nvfJ4ZXx58ABTI9EWzcBlEuLYef4T+P9q4KHZQljpJ4UliIxUVIDSk3GNMQKBgQDevjYnLW2FBNDYQvPf6FkD2iNzKFe80cQYR0+/jiSBgkmtQhXZgyJ2ZqQ5t20MjgLpeY0WJL2twBlFcYGico6Vnv+JMiJDtIjTu1UozAqV2VPeJ34nX34nqJptGwehiPXJupAiulAWtvTqsiYWlFHsr3dMtj6z07M+gDV8PU7P/QKBgQDTOCGgdrS3XYD680eH9vGKbH1DpIOMr3JokLk6kv4yui9Jxk5DMCxcJWkEQRnCrw2UYM8PfX17FqXrwhccmR9hskSmmbLONYzk4SDB73fM2nPqBw+VLO6jbWctylUsGaYfVxDOLDWPQkktKUsHK8pQHLNQ4jwlP5SGQUoIM/OqvwKBgHfRrmPIxh9GBeovqeyKmke+Mk+iJgBGfsvooHeUyQJ5yZRP9lz5c7JpaHI7v4d/ZQWfA0wkG3y5115JvshaA2VtEF0HAPOWy/vJy/eUOyV8sObSK8SWU9CVm+yRG7vDZyRLHXnw62AsrvcJOf/vbVp60RwM9RHbEZLPePYKLLkpAoGADPMaDK56ceuHptsXfZyEPopcO7NwZUW0a/jDgnXUo+OKVqmTzsa7UYLxp1MeczMsT/aHe1mkQdGnpoalyBkTNXgqgVRXBBGAa9/plDpMTADwrl50dB7nGpnwg3wuMJ/58V3zJ9DKD9huiBhKA0yKANNhownbyiTVxE1oboxQ2h0CgYEAkV4hjGe4t6mu5rhqvuIZkDskjuSOwO0dZsGXBZ/sOZusKNmskxeNZht4BajnATN4EaPg265k8ytWnOEQH041J8Wac1M+jAQQp6D1nkQWZZlrclTu7xvM+p6ypVtqNFTseIQtEhtyPw+fcsYrXM4u8LHpGlAzlwQ30lFg+K/Q++Y= - alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkiTTeQLIkyVHnYiNmRKEtsdlwKftUySN1SLkrhn6CgmHl5ovjPeYteweZEZmsf2kt6wRnaLkODVP7xUQiRVC2cu6StdJyvDzyiYI00u72PvSOvaWHcpzgKqTFpGiQseJQlHnI8U3ob4PxfJylBy8RDQHG9fZwNY1WOCsnSb3m2ufV1EQIjndzTq13yQE6jCz639rO8atlAG3PtJW/QRiGUzyGaOuKsS4HRzPbbpmVtsXoN76+x+WLWkeqlTBEu35X4Hdbkf1C36wp3b68sI5fVyLksF6elRv/It4aUzjXSXbO/Dx+zvMIN01FgwaFV6nLh++k3qlmo87p4I+hvsGiQIDAQAB + appPrivateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCLx2n7L1HNr8Tq92TUNJ/q66hWWHvoAwDxP27mpOrVbBwMCquxOW8ajMXooO6S/+d5PCZ1CXEjT2JpA264ptuY3LWnVbBWg6gxFzq2dX8XKk10GxdYQ63H3ZGHdPSgvUnHrG7AWSckbPSyutWXkeZITQJiD0Md/YxtjwxlW490EwTWRGLPgjoooJ9CdDgmvMgwJzUqV03rHLAPRVW1MhEBg4dJ2XtSMY0UzVejb+esOyrshNHTPoTQNUIONjPMEiihX7/ujRxUif8c/AYQh8sF3igVXSojghkJAhGboZbdBXf5VRx4DURgR0O1oujE1eG+qxYYk00Z5wa14+FPlP7RAgMBAAECggEAKru4hvach8mo5jzkMow0J9oMCPncR75DV34RJapdsQnwOS4592Cbuv42szwgNAjQd5wQFc/hKu5mI7zM6N76W+1+C76CvrBZh0iWxpl9VVO1gj2WEYH/aw8uIr962nmESOtKoLug393/oXTFQCV2xbvlcp0/47dUa1pEa+hmHxINZ7CJGQKiCjL9826lvpOyXigHaTYDu/fZluviu73lPIFyE62ZvEPfEPhpdt41pP/7ooCqarPMvqHb+7joKFSHDLJwjqdmZreh0vy5r9Dl2v79q1sbZ/30DWxa4Beb/y6SJT5lC2T7s+JZFIJ8igHXPsd7tY46Ko2AJmAg/JdvwQKBgQDNPniD8ssGdJ/M4jRrjqMwqpixBZvkgQwyl2HNp9LKRGDTuxT+4oDe9Y8e1a/jzYx64MJWOr0syR3HNggb09/mLpba8SBWqUqHCdU20hLbkAhs9kC18eBTAyKP1lDJgGKIM9AckYnJl0wwk6uD8r960kwkPjPNhLniuUMPMaDJbQKBgQCuWH/3EU8of/ZKpzsH90u3fdwhFJBQzlf4ZhWYnbFyDDdrEnobGlG642b5l6F/QTKj8+NvitTCWjYPZSz4hbSk3eNaN71bIf84KAWu1ab/+DNaMNXwzoQhXGTK86OLf8QWt93l90BIvUA2KACunUM1L/OwN5G9uFfH/nbrnFawdQKBgCfVGvCIu0xKcAUEVaYWLaexRCb+7q1fOi3LYWjXTDqDIMOWyFFbRiV/RMJ4OEWey8fBPRYdGj/J3GSgINy9tvNmUVK2f08yVct1ZhLYnF5OSsRS2mY1RhL2RcvijRU+PGEwpRAWUsZz/Y5j6mKWRwEgNTTHeahGPQk6aUBWolzVAoGAMml4pvIkV2uYxcFROl5xUF9eNVqC2DqyCStLd1OxqW6K37T6Bbg4hbeXYPhNRESP5gRxcSFNn90B4LW6qSnQMBPQ15dic2WDLLO14PX6Ue1su9l/IyAz6ImUw3Jribyp8H+98+7ocZ/3XzF18QecFVcGOZ/3zkntZ/DWZg5QqrkCgYBELNA1N1td+MA0VrncUF8c5kH7XI6KGfYqZR6QW4ouQa2Xu5WhfWAv68GsEBUmTIFDZQHNOKMC6qNq4BrGZ+C0S3A8FZIBvo3ztKxG1MQvznuh28vjN/yQu0qAx55JPXvJJVSPfvGXIk4lvhw53ZwYTvHjyR517AiQKemdESKQKw== + appCertPath: C:/alipay/test/appPublicCert.crt + rootCertPath: C:/alipay/test/alipayRootCert.crt + alipayPublicCertPath: C:/alipay/test/alipayPublicCert.crt notifyUrl: http://101.34.251.164:9310/rest/v1/alipay-callback/notify returnUrl: signType: RSA2 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index d424ce55e..a78ff1226 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -2,6 +2,7 @@ package com.ruoyi.common.constant; import io.jsonwebtoken.Claims; +import java.math.BigDecimal; import java.util.Arrays; import java.util.HashSet; import java.util.Locale; @@ -265,4 +266,8 @@ public class Constants */ public static final Set STORE_RECOMMEND_INSERT_POSITIONS = new HashSet<>(Arrays.asList(2, 9, 18, 27, 36)); + public static final String ALIPAY_DEFAULT_FORMAT = "json"; + + public static final BigDecimal ZERO_POINT_ONE = BigDecimal.valueOf(0.1); + } diff --git a/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java b/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java index 594958b51..6103c0b26 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/manager/impl/AliPaymentMangerImpl.java @@ -6,11 +6,13 @@ import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson2.JSON; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; +import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.diagnosis.DiagnosisUtils; import com.alipay.api.domain.*; import com.alipay.api.request.*; import com.alipay.api.response.*; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.framework.notice.fs.FsNotice; import com.ruoyi.xkt.domain.StoreOrderDetail; @@ -24,6 +26,7 @@ import com.ruoyi.xkt.enums.EPayStatus; import com.ruoyi.xkt.manager.PaymentManager; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -38,56 +41,68 @@ import java.util.Date; @Slf4j @Getter @Component -public class AliPaymentMangerImpl implements PaymentManager { +public class AliPaymentMangerImpl implements PaymentManager, InitializingBean { - private static final String DEFAULT_FORMAT = "json"; - private static final String PAY_PRODUCT_CODE_WEB = "FAST_INSTANT_TRADE_PAY"; - private static final String PAY_PRODUCT_CODE_WAP = "QUICK_WAP_WAY"; - private static final String PAY_PRODUCT_CODE_APP = "QUICK_MSECURITY_PAY"; - /** - * 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 - */ - @Value("${alipay.appId:9021000144616672}") + @Value("${alipay.appId:}") private String appId; - /** - * 商户私钥,您的PKCS8格式RSA2私钥 - */ - @Value("${alipay.privateKey:MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3x52ARikELwpOPvPcpY9jj7aEWIPivfBwkf3YRyUKnM7L6mOTxD1v3b7QLcL1+l0QmvOPSGgt2O3Qbjtvq+5ih4T32TlAzHGe8VqGVqrEv7ANQicsXz600ze5LdxCDRgBZWhO/GroGJKfenHf7K+arN4KXWWmHyZHCYD5z85TEvZZoA9e9MTMskXeDS8+fwP6McuNf4fR07kVuzblks+wWm1PsWfxFM7qNwSYKXbmEoyDe7+M9vBr7cwuj2OB3PEtj/FZjKMxVnFyVm61KiFAGUf3oUqWmPASTPDkFboRCS/njv980hk3sPba/qMDfMEpjoMZrcLBVzoj747oEi/DAgMBAAECggEAcVoXlRSxG7l/278MXl1nUXtEkeCeh+2rLWN+dDV9bUxGaJOLE4sIccUNeg2foGPpnuJTs15vk0endtVmp3weLntz0gMTQxpWQjiPIyi1b2Djz2msC7w7SwCz7+2PWtYEpmfLrFwX/Eubs+2r6vdrYDWbRj1RAuNXkp0UBgDcO3P9AFeGln5gUWxni4biN6B9sGGdsSwcm1A9biBPRsH2zMSVVWkhLVq+S73smm2Sh7WTIVEyeAuWEDeMs5oI2jQjPHMlUKmWW6JZ3uD5xbRm3Nkvve/nvfJ4ZXx58ABTI9EWzcBlEuLYef4T+P9q4KHZQljpJ4UliIxUVIDSk3GNMQKBgQDevjYnLW2FBNDYQvPf6FkD2iNzKFe80cQYR0+/jiSBgkmtQhXZgyJ2ZqQ5t20MjgLpeY0WJL2twBlFcYGico6Vnv+JMiJDtIjTu1UozAqV2VPeJ34nX34nqJptGwehiPXJupAiulAWtvTqsiYWlFHsr3dMtj6z07M+gDV8PU7P/QKBgQDTOCGgdrS3XYD680eH9vGKbH1DpIOMr3JokLk6kv4yui9Jxk5DMCxcJWkEQRnCrw2UYM8PfX17FqXrwhccmR9hskSmmbLONYzk4SDB73fM2nPqBw+VLO6jbWctylUsGaYfVxDOLDWPQkktKUsHK8pQHLNQ4jwlP5SGQUoIM/OqvwKBgHfRrmPIxh9GBeovqeyKmke+Mk+iJgBGfsvooHeUyQJ5yZRP9lz5c7JpaHI7v4d/ZQWfA0wkG3y5115JvshaA2VtEF0HAPOWy/vJy/eUOyV8sObSK8SWU9CVm+yRG7vDZyRLHXnw62AsrvcJOf/vbVp60RwM9RHbEZLPePYKLLkpAoGADPMaDK56ceuHptsXfZyEPopcO7NwZUW0a/jDgnXUo+OKVqmTzsa7UYLxp1MeczMsT/aHe1mkQdGnpoalyBkTNXgqgVRXBBGAa9/plDpMTADwrl50dB7nGpnwg3wuMJ/58V3zJ9DKD9huiBhKA0yKANNhownbyiTVxE1oboxQ2h0CgYEAkV4hjGe4t6mu5rhqvuIZkDskjuSOwO0dZsGXBZ/sOZusKNmskxeNZht4BajnATN4EaPg265k8ytWnOEQH041J8Wac1M+jAQQp6D1nkQWZZlrclTu7xvM+p6ypVtqNFTseIQtEhtyPw+fcsYrXM4u8LHpGlAzlwQ30lFg+K/Q++Y=}") - private String privateKey; - /** - * 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 - */ - @Value("${alipay.alipayPublicKey:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkiTTeQLIkyVHnYiNmRKEtsdlwKftUySN1SLkrhn6CgmHl5ovjPeYteweZEZmsf2kt6wRnaLkODVP7xUQiRVC2cu6StdJyvDzyiYI00u72PvSOvaWHcpzgKqTFpGiQseJQlHnI8U3ob4PxfJylBy8RDQHG9fZwNY1WOCsnSb3m2ufV1EQIjndzTq13yQE6jCz639rO8atlAG3PtJW/QRiGUzyGaOuKsS4HRzPbbpmVtsXoN76+x+WLWkeqlTBEu35X4Hdbkf1C36wp3b68sI5fVyLksF6elRv/It4aUzjXSXbO/Dx+zvMIN01FgwaFV6nLh++k3qlmo87p4I+hvsGiQIDAQAB}") - private String alipayPublicKey; - /** - * 服务器异步通知页面路径 - */ + + @Value("${alipay.appPrivateKey:}") + private String appPrivateKey; + + @Value("${alipay.appCertPath:}") + private String appCertPath; + + @Value("${alipay.rootCertPath:}") + private String rootCertPath; + + @Value("${alipay.alipayPublicCertPath:}") + private String alipayPublicCertPath; + @Value("${alipay.notifyUrl:}") private String notifyUrl; - /** - * 页面跳转同步通知页面路径 - */ + @Value("${alipay.returnUrl:}") private String returnUrl; - /** - * 签名方式 - */ - @Value("${alipay.signType:RSA2}") + + @Value("${alipay.signType:}") private String signType; - /** - * 字符编码格式 - */ - @Value("${alipay.charset:UTF-8}") + + @Value("${alipay.charset:}") private String charset; - /** - * 支付宝网关 - */ - @Value("${alipay.gatewayUrl:https://openapi-sandbox.dl.alipaydev.com/gateway.do}") + + @Value("${alipay.gatewayUrl:}") private String gatewayUrl; @Autowired private FsNotice fsNotice; + private AlipayClient alipayClient; + + @Override + public void afterPropertiesSet() throws Exception { + AlipayConfig alipayConfig = new AlipayConfig(); + //设置网关地址 + alipayConfig.setServerUrl(gatewayUrl); + //设置应用APPID + alipayConfig.setAppId(appId); + //设置应用私钥 + alipayConfig.setPrivateKey(appPrivateKey); + //设置应用公钥证书路径 + alipayConfig.setAppCertPath(appCertPath); + //设置支付宝公钥证书路径 + alipayConfig.setAlipayPublicCertPath(alipayPublicCertPath); + //设置支付宝根证书路径 + alipayConfig.setRootCertPath(rootCertPath); + //设置请求格式,固定值json + alipayConfig.setFormat(Constants.ALIPAY_DEFAULT_FORMAT); + //设置字符集 + alipayConfig.setCharset(charset); + //设置签名类型 + alipayConfig.setSignType(signType); + //构造client + alipayClient = new DefaultAlipayClient(alipayConfig); + } + @Override public EPayChannel channel() { return EPayChannel.ALI_PAY; @@ -105,11 +120,9 @@ public class AliPaymentMangerImpl implements PaymentManager { reqDTO.setSubject(subject); reqDTO.setTimeExpire(DateUtil.formatDateTime(expireTime)); - AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, DEFAULT_FORMAT, charset, - alipayPublicKey, signType); switch (payPage) { case WEB: - reqDTO.setProductCode(PAY_PRODUCT_CODE_WEB); + reqDTO.setProductCode("FAST_INSTANT_TRADE_PAY"); AlipayTradePagePayRequest webReq = new AlipayTradePagePayRequest(); webReq.setReturnUrl(returnUrl); webReq.setNotifyUrl(notifyUrl); @@ -128,7 +141,7 @@ public class AliPaymentMangerImpl implements PaymentManager { } break; case WAP: - reqDTO.setProductCode(PAY_PRODUCT_CODE_WAP); + reqDTO.setProductCode("QUICK_WAP_WAY"); AlipayTradeWapPayRequest wapReq = new AlipayTradeWapPayRequest(); wapReq.setReturnUrl(returnUrl); wapReq.setNotifyUrl(notifyUrl); @@ -147,7 +160,7 @@ public class AliPaymentMangerImpl implements PaymentManager { } break; case APP: - reqDTO.setProductCode(PAY_PRODUCT_CODE_APP); + reqDTO.setProductCode("QUICK_MSECURITY_PAY"); AlipayTradeAppPayRequest appReq = new AlipayTradeAppPayRequest(); appReq.setReturnUrl(returnUrl); appReq.setNotifyUrl(notifyUrl); @@ -191,8 +204,6 @@ public class AliPaymentMangerImpl implements PaymentManager { Assert.notNull(orderRefund.getRefundOrder()); Assert.notEmpty(orderRefund.getRefundOrderDetails()); Assert.notEmpty(orderRefund.getOriginOrder().getPayTradeNo()); - AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, DEFAULT_FORMAT, charset, - alipayPublicKey, signType); // 构造请求参数以调用接口 AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); AlipayTradeRefundModel model = new AlipayTradeRefundModel(); @@ -213,8 +224,7 @@ public class AliPaymentMangerImpl implements PaymentManager { model.setOutRequestNo(orderRefund.getRefundOrder().getOrderNo()); try { //TODO 沙箱环境接口无法完全退款? -// AlipayTradeRefundResponse response = alipayClient.certificateExecute(request); - AlipayTradeRefundResponse response = alipayClient.execute(request); + AlipayTradeRefundResponse response = alipayClient.certificateExecute(request); log.info("支付宝退款:{}", response.getBody()); String fundChange = JSON.parseObject(response.getBody()) .getJSONObject("alipay_trade_refund_response") @@ -241,8 +251,6 @@ public class AliPaymentMangerImpl implements PaymentManager { public ENetResult queryStoreOrderRefundResult(String refundOrderNo, String originOrderNo) { Assert.notEmpty(refundOrderNo); Assert.notEmpty(originOrderNo); - AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, DEFAULT_FORMAT, charset, - alipayPublicKey, signType); // 构造请求参数以调用接口 AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest(); AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel(); @@ -250,7 +258,7 @@ public class AliPaymentMangerImpl implements PaymentManager { model.setOutTradeNo(originOrderNo); request.setBizModel(model); try { - AlipayTradeFastpayRefundQueryResponse response = alipayClient.execute(request); + AlipayTradeFastpayRefundQueryResponse response = alipayClient.certificateExecute(request); log.warn("查询支付宝订单退款结果: {}", response.getBody()); if (response.isSuccess()) { String refundStatus = JSON.parseObject(response.getBody()) @@ -277,15 +285,13 @@ public class AliPaymentMangerImpl implements PaymentManager { @Override public ENetResult queryStoreOrderPayResult(String orderNo) { Assert.notEmpty(orderNo); - AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, DEFAULT_FORMAT, charset, - alipayPublicKey, signType); // 构造请求参数以调用接口 AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); AlipayTradeQueryModel model = new AlipayTradeQueryModel(); model.setOutTradeNo(orderNo); request.setBizModel(model); try { - AlipayTradeQueryResponse response = alipayClient.execute(request); + AlipayTradeQueryResponse response = alipayClient.certificateExecute(request); log.warn("查询订单支付结果: {}", response.getBody()); if (response.isSuccess()) { String tradeStatus = JSON.parseObject(response.getBody()) @@ -328,8 +334,7 @@ public class AliPaymentMangerImpl implements PaymentManager { Assert.notEmpty(identity); Assert.notEmpty(realName); Assert.notNull(amount); - AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, DEFAULT_FORMAT, charset, - alipayPublicKey, signType); + Assert.isTrue(NumberUtil.isGreaterOrEqual(amount, Constants.ZERO_POINT_ONE), "提现金额不能低于0.1元"); // 构造请求参数以调用接口 AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); @@ -354,8 +359,7 @@ public class AliPaymentMangerImpl implements PaymentManager { request.setBizModel(model); try { //TODO 测试 -// AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request); - AlipayFundTransUniTransferResponse response = alipayClient.execute(request); + AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request); log.info("支付宝转账: {}", response.getBody()); if (response.isSuccess()) { String status = JSON.parseObject(response.getBody()) @@ -379,8 +383,6 @@ public class AliPaymentMangerImpl implements PaymentManager { @Override public ENetResult queryTransferResult(String bizNo) { Assert.notEmpty(bizNo); - AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, DEFAULT_FORMAT, charset, - alipayPublicKey, signType); // 构造请求参数以调用接口 AlipayFundTransCommonQueryRequest request = new AlipayFundTransCommonQueryRequest(); AlipayFundTransCommonQueryModel model = new AlipayFundTransCommonQueryModel(); @@ -392,7 +394,7 @@ public class AliPaymentMangerImpl implements PaymentManager { model.setProductCode("TRANS_ACCOUNT_NO_PWD"); request.setBizModel(model); try { - AlipayFundTransCommonQueryResponse response = alipayClient.execute(request); + AlipayFundTransCommonQueryResponse response = alipayClient.certificateExecute(request); log.info("查询支付宝转账结果: {}", response.getBody()); if (response.isSuccess()) { String status = JSON.parseObject(response.getBody())