diff --git a/src/main/java/com/sczx/pay/config/AlipayConf.java b/src/main/java/com/sczx/pay/config/AlipayConf.java index 3f7d8aa..30f2eed 100644 --- a/src/main/java/com/sczx/pay/config/AlipayConf.java +++ b/src/main/java/com/sczx/pay/config/AlipayConf.java @@ -3,41 +3,40 @@ package com.sczx.pay.config; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; -import com.alipay.api.AlipayConfig; -import com.alipay.api.DefaultAlipayClient; import com.sczx.pay.entity.CompanyAlipayConfig; import com.sczx.pay.mapper.CompanyAlipayConfigMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; import java.util.Objects; +@Slf4j @Component public class AlipayConf { - @Value("${ali.pay.app-id}") - private String appId; - - @Value("${ali.pay.gateway-url}") - private String gatewayUrl; - - @Value("${ali.pay.privateKey}") - private String privateKey; - -// @Value("${alipay.miniapp.publicKey}") -// private String publicKey; - - @Value("${ali.pay.appCertPath}") - private String appCertPath; - - @Value("${ali.pay.alipayCertPath}") - private String alipayCertPath; - - @Value("${ali.pay.alipayRootCertPath}") - private String alipayRootCertPath; +// @Value("${ali.pay.app-id}") +// private String appId; +// +// @Value("${ali.pay.gateway-url}") +// private String gatewayUrl; +// +// @Value("${ali.pay.privateKey}") +// private String privateKey; +// +//// @Value("${alipay.miniapp.publicKey}") +//// private String publicKey; +// +// @Value("${ali.pay.appCertPath}") +// private String appCertPath; +// +// @Value("${ali.pay.alipayCertPath}") +// private String alipayCertPath; +// +// @Value("${ali.pay.alipayRootCertPath}") +// private String alipayRootCertPath; @Autowired @@ -47,33 +46,35 @@ public class AlipayConf { private static AlipayClient alipayClient; - public AlipayClient alipayClient() throws AlipayApiException { - - if(Objects.isNull(alipayClient)){ - AlipayConfig alipayConfig = new AlipayConfig(); - //设置网关地址 - alipayConfig.setServerUrl(gatewayUrl); - //设置应用ID - alipayConfig.setAppId(appId); - //设置应用私钥 - alipayConfig.setPrivateKey(privateKey); - //设置请求格式,固定值json - alipayConfig.setFormat("JSON"); - //设置字符集 - alipayConfig.setCharset("UTF-8"); - //设置签名类型 - alipayConfig.setSignType("RSA2"); - //设置应用公钥证书路径 - alipayConfig.setAppCertPath(appCertPath); - //设置支付宝公钥证书路径 - alipayConfig.setAlipayPublicCertPath(alipayCertPath); - //设置支付宝根证书路径 - alipayConfig.setRootCertPath(alipayRootCertPath); - - alipayClient = new DefaultAlipayClient(alipayConfig); - } - return alipayClient; - } +// public AlipayClient alipayClient() throws AlipayApiException { +// +// if(Objects.isNull(alipayClient)){ +// AlipayConfig alipayConfig = new AlipayConfig(); +// //设置网关地址 +// alipayConfig.setServerUrl(gatewayUrl); +// //设置应用ID +// alipayConfig.setAppId(appId); +// //设置应用私钥 +// alipayConfig.setPrivateKey(privateKey); +// //设置请求格式,固定值json +// alipayConfig.setFormat("JSON"); +// //设置字符集 +// alipayConfig.setCharset("UTF-8"); +// //设置签名类型 +// alipayConfig.setSignType("RSA2"); +// //设置应用公钥证书路径 +// alipayConfig.setAppCertPath(appCertPath); +// //设置支付宝公钥证书路径 +// alipayConfig.setAlipayPublicCertPath(alipayCertPath); +// //设置支付宝根证书路径 +// alipayConfig.setRootCertPath(alipayRootCertPath); +// +// log.info("支付宝配置信息:{}",alipayConfig); +// +// alipayClient = new DefaultAlipayClient(alipayConfig); +// } +// return alipayClient; +// } public String getCompanyAppid(Long companyId) throws AlipayApiException { CompanyAlipayConfig companyAlipayConfig = companyAlipayConfigMapper.getConfigByCompanyId(companyId); @@ -92,22 +93,22 @@ public class AlipayConf { * @param alipayPublicKey * @return * @throws AlipayApiException - */ - public AlipayClient alipayClient(Long companyId, String privateKey, String alipayPublicKey) throws AlipayApiException { - AlipayClient alipayClient = apiClientMap.get(companyId.toString()); - if(Objects.isNull(alipayClient)){ - AlipayConfig alipayConfig = new AlipayConfig(); - alipayConfig.setServerUrl(gatewayUrl); - alipayConfig.setAppId(appId); - alipayConfig.setPrivateKey(privateKey); - alipayConfig.setFormat("json"); - alipayConfig.setAlipayPublicKey(alipayPublicKey); - alipayConfig.setCharset("UTF-8"); - alipayConfig.setSignType("RSA2"); - alipayClient = new DefaultAlipayClient(alipayConfig); - apiClientMap.put(companyId.toString(),alipayClient); - } - - return alipayClient; - } +// */ +// public AlipayClient alipayClient(Long companyId, String privateKey, String alipayPublicKey) throws AlipayApiException { +// AlipayClient alipayClient = apiClientMap.get(companyId.toString()); +// if(Objects.isNull(alipayClient)){ +// AlipayConfig alipayConfig = new AlipayConfig(); +// alipayConfig.setServerUrl(gatewayUrl); +// alipayConfig.setAppId(appId); +// alipayConfig.setPrivateKey(privateKey); +// alipayConfig.setFormat("json"); +// alipayConfig.setAlipayPublicKey(alipayPublicKey); +// alipayConfig.setCharset("UTF-8"); +// alipayConfig.setSignType("RSA2"); +// alipayClient = new DefaultAlipayClient(alipayConfig); +// apiClientMap.put(companyId.toString(),alipayClient); +// } +// +// return alipayClient; +// } } diff --git a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java index 2e43e00..98b34a2 100644 --- a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java +++ b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java @@ -1,8 +1,8 @@ package com.sczx.pay.service.impl; +import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; -import com.alipay.api.AlipayClient; import com.alipay.api.domain.*; import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.*; @@ -17,6 +17,7 @@ import com.sczx.pay.mapper.OrderPayMapper; import com.sczx.pay.mapper.PaymentRecordMapper; import com.sczx.pay.mapper.RefundRecordMapper; import com.sczx.pay.service.AlipayService; +import com.sczx.pay.utils.AlipaySdkUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -33,6 +34,9 @@ public class AlipayServiceImpl implements AlipayService { @Autowired private AlipayConf alipayConf; + @Autowired + private AlipaySdkUtil alipaySdkUtil; + @Value("${ali.pay.app-id}") private String appId; @@ -71,7 +75,7 @@ public class AlipayServiceImpl implements AlipayService { public AlipayCreateResponse unifiedOrder(AlipayCreateRequest alipayCreateRequest) { AlipayCreateResponse response = new AlipayCreateResponse(); try { - AlipayClient alipayClient = alipayConf.alipayClient(); +// AlipayClient alipayClient = alipayConf.alipayClient(); // 构造请求参数以调用接口 AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); @@ -107,9 +111,9 @@ public class AlipayServiceImpl implements AlipayService { // 第三方代调用模式下请设置app_auth_token // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->"); - - AlipayTradeCreateResponse alipayResponse = alipayClient.certificateExecute(request); - + log.info("支付宝下单请求:{}", JSONObject.toJSONString(request)); + AlipayTradeCreateResponse alipayResponse = alipaySdkUtil.execute(request); + log.info("支付宝下单返回:{}", JSONObject.toJSONString(alipayResponse)); if (alipayResponse.isSuccess()) { response.setSuccess(true); response.setOrderStr(alipayResponse.getBody()); @@ -139,7 +143,7 @@ public class AlipayServiceImpl implements AlipayService { public AlipayQueryResponse orderQuery(Long companyId, String outTradeNo) { AlipayQueryResponse response = new AlipayQueryResponse(); try { - AlipayClient alipayClient = alipayConf.alipayClient(); +// AlipayClient alipayClient = alipayConf.alipayClient(); // 构造请求参数以调用接口 // 构造请求参数以调用接口 @@ -154,7 +158,7 @@ public class AlipayServiceImpl implements AlipayService { // 第三方代调用模式下请设置app_auth_token // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->"); - AlipayTradeQueryResponse alipayResponse = alipayClient.certificateExecute(request); + AlipayTradeQueryResponse alipayResponse = alipaySdkUtil.execute(request); if (alipayResponse.isSuccess()) { response.setSuccess(true); @@ -181,7 +185,7 @@ public class AlipayServiceImpl implements AlipayService { public AlipayResponse closeOrder(AlipayCloseRequest alipayCloseRequest) { AlipayResponse response = new AlipayResponse(); try { - AlipayClient alipayClient = alipayConf.alipayClient(); +// AlipayClient alipayClient = alipayConf.alipayClient(); // 构造请求参数以调用接口 AlipayTradeCloseRequest request = new AlipayTradeCloseRequest(); AlipayTradeCloseModel model = new AlipayTradeCloseModel(); @@ -194,7 +198,7 @@ public class AlipayServiceImpl implements AlipayService { // 第三方代调用模式下请设置app_auth_token // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->"); - AlipayTradeCloseResponse closeResponse = alipayClient.certificateExecute(request); + AlipayTradeCloseResponse closeResponse = alipaySdkUtil.execute(request); log.info("关闭订单响应 : {}",closeResponse.getBody()); if (closeResponse.isSuccess()) { @@ -219,7 +223,7 @@ public class AlipayServiceImpl implements AlipayService { public AlipayResponse refund(AlipayRefundRequest request) { AlipayResponse response = new AlipayResponse(); try { - AlipayClient alipayClient = alipayConf.alipayClient(); +// AlipayClient alipayClient = alipayConf.alipayClient(); // 构造请求参数以调用接口 AlipayTradeRefundRequest refundRequest = new AlipayTradeRefundRequest(); AlipayTradeRefundModel model = new AlipayTradeRefundModel(); @@ -240,7 +244,7 @@ public class AlipayServiceImpl implements AlipayService { model.setOutRequestNo(request.getOutRequestNo()); refundRequest.setBizModel(model); - AlipayTradeRefundResponse refundResponse = alipayClient.certificateExecute(refundRequest); + AlipayTradeRefundResponse refundResponse = alipaySdkUtil.execute(refundRequest); log.info("退款响应 : {}",refundResponse.getBody()); if (refundResponse.isSuccess()) { @@ -267,7 +271,7 @@ public class AlipayServiceImpl implements AlipayService { public AlipayResponse refundQuery(AlipayRefundRequest refundQueryRequest) { AlipayResponse response = new AlipayResponse(); try { - AlipayClient alipayClient = alipayConf.alipayClient(); +// AlipayClient alipayClient = alipayConf.alipayClient(); // 构造请求参数以调用接口 AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest(); AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel(); @@ -283,7 +287,7 @@ public class AlipayServiceImpl implements AlipayService { // 第三方代调用模式下请设置app_auth_token // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->"); - AlipayTradeFastpayRefundQueryResponse refundQueryResponse = alipayClient.certificateExecute(request); + AlipayTradeFastpayRefundQueryResponse refundQueryResponse = alipaySdkUtil.execute(request); log.info("退款查询响应 : {}",refundQueryResponse.getBody()); if (refundQueryResponse.isSuccess() && "REFUND_SUCCESS".equals(refundQueryResponse.getRefundStatus())) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 602dbba..12ded66 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -63,17 +63,17 @@ wechat: notify-url: https://www.minbo.wang:8020/api/payment/notify refund-notify-url: https://www.minbo.wang:8020/api/payment/refundNotify -ali: - pay: - app-id: 2021004169641281 - gateway-url: https://openapi.alipay.com/gateway.do - notify-url: https://www.minbo.wang:8020/api/alipay/notify - refund-notify-url: https://www.minbo.wang:8020/api/alipay/refundNotify - privateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCQke+mZsxNXJXMn2iUZRkhITWY9qPczwHMgRxl68JRuNzZE2AXhAc2ciF7EGob1y0al4hvJo5JUrDew9Zkv0BocAsPjLma3A9KFgj131xMuLxVvHtktkNSwwW9VIbOOhFAQAy3J9jt8PdEk40UONyu9J5Shjs6jbQ8RogdDuwuzKpNj0ZOTeUqgR6RME4xZ0VqvZe9XhVfq3QtVGttUzOpLPNg6boBy/5RqwC64lVFICMqjKkMW2NklVPBDFO46QwfWEbaA+APnd9bd+9WadyNySPb7kAK8GOlvZYfysy+QkOQdj/oebKWKzdKXpFnF+n52dYzeGTvckt1suDngwAFAgMBAAECggEAcPc39iTZe5HfE9d0FpCxBCw4/1+qRz4SP8SbdiC05Lq5B36WVYm7QRYJh2oaH8sR2XeTCpdsE2tj/Y21l1/Calkyq2HhHlraL5/sPIPeUa0ArVXsbZPmI2N0tq6376l8FWJ3DR876SGjdZh+YtDT0HogxIdS/LwBnB/Y+CvS7fWcqiMjcR4h28RU70CQqxpzYuPfqG6GZmByGyJAcdlhFAYgiksb+qZnkjoaKHsjb61xfUX4z+HGdQLqOlVKfNqIpiO7arXaeAb0RQiB8Lqi7fBvn8LLhlTmM1Hr4gyQO14lJmP5Vp2BIg9m5AC9vRkpZ9l79bUTIepDe9+Ovcx5eQKBgQDWZ5yoz8q8Z5VIfMSVTHO3wpfwOBM92S2c21hTsds7NezsMVqGcTuAcvbMW2i1MwxtS7kahXraRAxZnCDB9ZVJs+88xcgu5QJWZ1rJyrwEwB2gTQhColv+XZW6Ck/J6kk2/PG26rNQG6pg/xrKaMtPnXXyKCsdQTyEpr+mlNIJ2wKBgQCsnf4lIuwftCSm0jI73tO1Bb4U9TCIapKidnIhutbyg6u+hJMUTVDNkjsBnrTN24sSP7Cu4Zs/W4lkDqq86fHNEvnF+FouIfO/CwaGteDBNwXHSLM0D+zEBbK04bfoYi7lYZeDRPygFrM49Sxkp0MAmItDmXqbYRQBlhN1XVzznwKBgQCQ+72fFex1XOJBA0X345v4rlkKMxEn6J2EjXr8FbA3KO8OhQ0/DoD7CkLDzChRJ7UGj4cbXRnHUO69BevM3SHXlhp4ERKeS3Q6M2fcPwDHgZZHGPA2Bw6IQoaGKITt+EUMLx3Q4ILi7+JV9wwJxbV+H+9rEiidfsjKtuuwXMBvswKBgQChpElrCSrH/W8c8FSuD9l7+GapRXkvJW0uyW/S+h1yd66J96erKUNzXW339GAnLWErs4yGFynDyLn9gmaMBR6zBQP0SL5Z2N1hlreDyikvhZDZrtBw/kCexx8zlvMan2Z+0kaJXD6cwuUNfzkVADQUCMTQhpZzjhKn8ZtDGiyCzQKBgQCAhU0khG/ufZfQ089+1G7PAlErBr5MQaG40a2vfIWGtHkYyXq5N/3jow1bd2qsyLuz8mr2sWQeURK+B2xZridf6JtYz3gB+dLw0frlLKk4Q6jeehiRlE8H8tIYe/7KcgTmdIzEbo3lmyGMFAILvr/pSCWeUehQYR9PH91Qyi+Tog== - # publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArPG4JQ9YY9+tOeImQO0eNkp+NZkenJ9hMHEVVmwAHAI5BoJMCLvAm504BXSpgpqaiCJ6ARTwBkiDz4dyCMVfE3VE8+oMFtXqfHaZLhfd+X9VQNqRCz0HeR2IbjGnnbYxQOAEOM6z092UfNieG00HyU5yREfzjJkIcyuGeGgbIBG1gPpLhXsQKRhQYqp4Exgd4LX6qnKLPL90kJVkQnHcJkp+rCoQ5zS6ZUXE2d/2GzY7xi93uTU2CLMiZ7Vi2OZ1g7xY+yDQzTA/CseveJeW3rM6T8yBjlEJwsywEL5co3YqpJUIMIe/fLjhRRgj+JUq5w0sRqb3+CswQHIjgc71QwIDAQAB - appCertPath: /root/cert/appCertPublicKey_2021005174658269.crt - alipayCertPath: /root/cert/alipayCertPublicKey_RSA2.crt - alipayRootCertPath: /root/cert/alipayRootCert.crt +#ali: +# pay: +# app-id: 2021004169641281 +# gateway-url: https://openapi.alipay.com/gateway.do +# notify-url: https://www.minbo.wang:8020/api/alipay/notify +# refund-notify-url: https://www.minbo.wang:8020/api/alipay/refundNotify +# privateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCQke+mZsxNXJXMn2iUZRkhITWY9qPczwHMgRxl68JRuNzZE2AXhAc2ciF7EGob1y0al4hvJo5JUrDew9Zkv0BocAsPjLma3A9KFgj131xMuLxVvHtktkNSwwW9VIbOOhFAQAy3J9jt8PdEk40UONyu9J5Shjs6jbQ8RogdDuwuzKpNj0ZOTeUqgR6RME4xZ0VqvZe9XhVfq3QtVGttUzOpLPNg6boBy/5RqwC64lVFICMqjKkMW2NklVPBDFO46QwfWEbaA+APnd9bd+9WadyNySPb7kAK8GOlvZYfysy+QkOQdj/oebKWKzdKXpFnF+n52dYzeGTvckt1suDngwAFAgMBAAECggEAcPc39iTZe5HfE9d0FpCxBCw4/1+qRz4SP8SbdiC05Lq5B36WVYm7QRYJh2oaH8sR2XeTCpdsE2tj/Y21l1/Calkyq2HhHlraL5/sPIPeUa0ArVXsbZPmI2N0tq6376l8FWJ3DR876SGjdZh+YtDT0HogxIdS/LwBnB/Y+CvS7fWcqiMjcR4h28RU70CQqxpzYuPfqG6GZmByGyJAcdlhFAYgiksb+qZnkjoaKHsjb61xfUX4z+HGdQLqOlVKfNqIpiO7arXaeAb0RQiB8Lqi7fBvn8LLhlTmM1Hr4gyQO14lJmP5Vp2BIg9m5AC9vRkpZ9l79bUTIepDe9+Ovcx5eQKBgQDWZ5yoz8q8Z5VIfMSVTHO3wpfwOBM92S2c21hTsds7NezsMVqGcTuAcvbMW2i1MwxtS7kahXraRAxZnCDB9ZVJs+88xcgu5QJWZ1rJyrwEwB2gTQhColv+XZW6Ck/J6kk2/PG26rNQG6pg/xrKaMtPnXXyKCsdQTyEpr+mlNIJ2wKBgQCsnf4lIuwftCSm0jI73tO1Bb4U9TCIapKidnIhutbyg6u+hJMUTVDNkjsBnrTN24sSP7Cu4Zs/W4lkDqq86fHNEvnF+FouIfO/CwaGteDBNwXHSLM0D+zEBbK04bfoYi7lYZeDRPygFrM49Sxkp0MAmItDmXqbYRQBlhN1XVzznwKBgQCQ+72fFex1XOJBA0X345v4rlkKMxEn6J2EjXr8FbA3KO8OhQ0/DoD7CkLDzChRJ7UGj4cbXRnHUO69BevM3SHXlhp4ERKeS3Q6M2fcPwDHgZZHGPA2Bw6IQoaGKITt+EUMLx3Q4ILi7+JV9wwJxbV+H+9rEiidfsjKtuuwXMBvswKBgQChpElrCSrH/W8c8FSuD9l7+GapRXkvJW0uyW/S+h1yd66J96erKUNzXW339GAnLWErs4yGFynDyLn9gmaMBR6zBQP0SL5Z2N1hlreDyikvhZDZrtBw/kCexx8zlvMan2Z+0kaJXD6cwuUNfzkVADQUCMTQhpZzjhKn8ZtDGiyCzQKBgQCAhU0khG/ufZfQ089+1G7PAlErBr5MQaG40a2vfIWGtHkYyXq5N/3jow1bd2qsyLuz8mr2sWQeURK+B2xZridf6JtYz3gB+dLw0frlLKk4Q6jeehiRlE8H8tIYe/7KcgTmdIzEbo3lmyGMFAILvr/pSCWeUehQYR9PH91Qyi+Tog== +# # publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArPG4JQ9YY9+tOeImQO0eNkp+NZkenJ9hMHEVVmwAHAI5BoJMCLvAm504BXSpgpqaiCJ6ARTwBkiDz4dyCMVfE3VE8+oMFtXqfHaZLhfd+X9VQNqRCz0HeR2IbjGnnbYxQOAEOM6z092UfNieG00HyU5yREfzjJkIcyuGeGgbIBG1gPpLhXsQKRhQYqp4Exgd4LX6qnKLPL90kJVkQnHcJkp+rCoQ5zS6ZUXE2d/2GzY7xi93uTU2CLMiZ7Vi2OZ1g7xY+yDQzTA/CseveJeW3rM6T8yBjlEJwsywEL5co3YqpJUIMIe/fLjhRRgj+JUq5w0sRqb3+CswQHIjgc71QwIDAQAB +# appCertPath: /root/cert/appCertPublicKey_2021005174658269.crt +# alipayCertPath: /root/cert/alipayCertPublicKey_RSA2.crt +# alipayRootCertPath: /root/cert/alipayRootCert.crt cert-path: /root/cert/