From b05f3c36b4ec6edf570e83c5b6c638799823a856 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 27 Sep 2021 18:18:43 +0800 Subject: [PATCH] add alipay --- src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java | 24 ++++ src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java | 43 ++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 22 ++- src/main/resources/application-prod.yml | 12 ++ src/main/java/cc/mrbird/febs/pay/service/IPayService.java | 12 ++ src/main/resources/application-test.yml | 12 ++ pom.xml | 7 + src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java | 15 +++ src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java | 62 ++++++++++++ src/main/resources/application-dev.yml | 12 ++ src/test/java/cc/mrbird/febs/PayTest.java | 33 ++++++ src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java | 31 ++++++ src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 1 13 files changed, 274 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 9e4f7c5..6a367e2 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ <tomcat.version>9.0.31</tomcat.version> <hutool.version>5.3.1</hutool.version> <aliyun-oss.version>3.8.0</aliyun-oss.version> + <ijapy.version>2.7.8</ijapy.version> <mapstruct.version>1.3.1.Final</mapstruct.version> </properties> @@ -274,6 +275,12 @@ </dependency> <dependency> + <groupId>com.github.javen205</groupId> + <artifactId>IJPay-AliPay</artifactId> + <version>${ijapy.version}</version> + </dependency> + + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java index 5a9998f..dc92049 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java +++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java @@ -21,5 +21,6 @@ registration.excludePathPatterns("/api/common/**"); registration.excludePathPatterns("/api/category/**"); registration.excludePathPatterns("/api/goods/**"); + registration.excludePathPatterns("/api/pay/**"); } } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 5d3d9bd..fad46d2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -20,6 +20,7 @@ import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; import cc.mrbird.febs.mall.vo.OrderRefundVo; +import cc.mrbird.febs.pay.service.IPayService; import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUnit; @@ -61,6 +62,7 @@ private final RedisUtils redisUtils; private final AgentProducer agentProducer; + private final IPayService payService; @Override @Transactional(rollbackFor = Exception.class) @@ -164,20 +166,21 @@ throw new FebsException("订单状态不能支付"); } - String orderNo = ""; + String payResultStr = ""; switch (payOrderDto.getType()) { case "1": - orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); - orderInfo.setPayImage(payOrderDto.getPayImage()); +// orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); +// orderInfo.setPayImage(payOrderDto.getPayImage()); orderInfo.setPayMethod("微信支付"); break; case "2": - orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); - orderInfo.setPayImage(payOrderDto.getPayImage()); + payResultStr = payService.aliPay(orderInfo); + + orderInfo.setPayOrderNo(payResultStr); orderInfo.setPayMethod("支付宝支付"); break; case "3": - orderNo = balancePay(orderInfo, payOrderDto.getTradePwd()); + payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd()); orderInfo.setPayOrderNo(orderInfo.getOrderNo()); orderInfo.setPayMethod("积分支付"); @@ -193,11 +196,12 @@ memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null); Map<String, Object> map = new HashMap<>(); - map.put("orderNo", orderNo); + map.put("orderInfo", payResultStr); + map.put("orderNo", orderInfo.getOrderNo()); map.put("orderId", orderInfo.getId()); - agentProducer.sendAutoLevelUpMsg(member.getId()); - agentProducer.sendReturnMoneyMsg(orderInfo.getId()); +// agentProducer.sendAutoLevelUpMsg(member.getId()); +// agentProducer.sendReturnMoneyMsg(orderInfo.getId()); return map; } diff --git a/src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java b/src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java new file mode 100644 index 0000000..a191273 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java @@ -0,0 +1,43 @@ +package cc.mrbird.febs.pay.configure; + +import cc.mrbird.febs.pay.properties.AliPayProperties; +import com.ijpay.alipay.AliPayApiConfig; +import com.ijpay.alipay.AliPayApiConfigKit; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author wzy + * @date 2021-09-27 + **/ +@Slf4j +@Configuration +public class AliPayConfigure { + + @Autowired + private AliPayProperties aliPayProperties; + + @Bean + public AliPayApiConfig aliPayConfig() { + log.info("===================="); + AliPayApiConfig aliPayApiConfig; + try { + aliPayApiConfig = AliPayApiConfigKit.getApiConfig(aliPayProperties.getAppId()); + } catch (Exception e) { + aliPayApiConfig = AliPayApiConfig.builder() + .setAppId(aliPayProperties.getAppId()) + .setAliPayPublicKey(aliPayProperties.getPublicKey()) + .setCharset("UTF-8") + .setPrivateKey(aliPayProperties.getPrivateKey()) + .setServiceUrl("https://openapi.alipaydev.com/gateway.do") + .setSignType("RSA2") + // 普通公钥方式 + .build(); + + } + AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig); + return aliPayApiConfig; + } +} diff --git a/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java new file mode 100644 index 0000000..26ed5a7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java @@ -0,0 +1,31 @@ +package cc.mrbird.febs.pay.controller; + +import cc.mrbird.febs.common.entity.FebsResponse; +import com.ijpay.alipay.AliPayApi; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +/** + * @author wzy + * @date 2021-09-27 + **/ +@Slf4j +@RestController +@RequestMapping(value = "/api/pay") +public class PayCallBackController { + + @GetMapping("/aliCallBack") + public FebsResponse aliPayCallBack(HttpServletRequest request) { + Map<String, String> params = AliPayApi.toMap(request); + + for (Map.Entry<String, String> entry : params.entrySet()) { + log.info("支付宝回调:{}===={}", entry.getKey(), entry.getValue()); + } + return new FebsResponse().success(); + } +} diff --git a/src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java b/src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java new file mode 100644 index 0000000..b15ef73 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.pay.model; + +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-27 + **/ +@Data +public class AliPayPassbackModel { + + private Long orderId; + + private Long memberId; +} diff --git a/src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java b/src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java new file mode 100644 index 0000000..42e5e8d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.pay.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author wzy + * @date 2021-09-27 + **/ + +@Data +@Configuration +@ConfigurationProperties(prefix = "pay.ali") +public class AliPayProperties { + + private String appId; + + private String publicKey; + + private String privateKey; + + private String noticeUrl; +} diff --git a/src/main/java/cc/mrbird/febs/pay/service/IPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IPayService.java new file mode 100644 index 0000000..cd10f45 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/service/IPayService.java @@ -0,0 +1,12 @@ +package cc.mrbird.febs.pay.service; + +import cc.mrbird.febs.mall.entity.MallOrderInfo; + +/** + * @author wzy + * @date 2021-09-27 + **/ +public interface IPayService { + + String aliPay(MallOrderInfo orderInfo); +} diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java new file mode 100644 index 0000000..e940f38 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java @@ -0,0 +1,62 @@ +package cc.mrbird.febs.pay.service.impl; + +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.mall.entity.MallOrderInfo; +import cc.mrbird.febs.pay.model.AliPayPassbackModel; +import cc.mrbird.febs.pay.properties.AliPayProperties; +import cc.mrbird.febs.pay.service.IPayService; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.domain.AlipayTradeAppPayModel; +import com.alipay.api.response.AlipayTradeAppPayResponse; +import com.ijpay.alipay.AliPayApi; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author wzy + * @date 2021-09-27 + **/ +@Slf4j +@Service +public class PayServiceImpl implements IPayService { + + @Resource + private AliPayProperties aliPayProperties; + + @Value("${spring.profiles.active}") + private String active; + + @Override + public String aliPay(MallOrderInfo orderInfo) { + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + model.setSubject("全民商城商品支付"); + model.setBody(orderInfo.getName()); + model.setOutTradeNo(orderInfo.getOrderNo()); + model.setTimeoutExpress("15m"); + + if ("dev".equals(active) || "test".equals(active)) { + model.setTotalAmount("0.01"); + } else { + model.setTotalAmount(orderInfo.getAmount().toString()); + } + + AliPayPassbackModel passbackModel = new AliPayPassbackModel(); + passbackModel.setOrderId(orderInfo.getId()); + passbackModel.setMemberId(orderInfo.getMemberId()); + model.setPassbackParams(JSONObject.toJSONString(passbackModel)); + + model.setProductCode("QUICK_MSECURITY_PAY"); + AlipayTradeAppPayResponse resp = null; + try { + resp = AliPayApi.appPayToResponse(model, aliPayProperties.getNoticeUrl()); + } catch (AlipayApiException e) { + log.error("支付宝支付异常", e); + throw new FebsException("支付宝支付异常"); + } + return resp.getBody(); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 0afbd49..4ca7b9b 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -46,4 +46,14 @@ port: 5672 username: ct_rabbit password: 123456 - publisher-confirm-type: correlated \ No newline at end of file + publisher-confirm-type: correlated + +pay: + ali: + appId: 2021002182686737 + # 支付宝公钥 + publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB + # 支付宝私钥 + privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw== + # 回调地址 + noticeUrl: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 1285e7e..60baf48 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -52,4 +52,14 @@ port: 5672 username: ct_rabbit password: 123456 - publisher-confirm-type: correlated \ No newline at end of file + publisher-confirm-type: correlated + +pay: + ali: + appId: 2021002182686737 + # 支付宝公钥 + publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB + # 支付宝私钥 + privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw== + # 回调地址 + noticeUrl: \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index a5d65d6..a895b7d 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -46,4 +46,14 @@ port: 5672 username: ct_rabbit password: 123456 - publisher-confirm-type: correlated \ No newline at end of file + publisher-confirm-type: correlated + +pay: + ali: + appId: 2021002182686737 + # 支付宝公钥 + publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB + # 支付宝私钥 + privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw== + # 回调地址 + noticeUrl: \ No newline at end of file diff --git a/src/test/java/cc/mrbird/febs/PayTest.java b/src/test/java/cc/mrbird/febs/PayTest.java new file mode 100644 index 0000000..ede5efa --- /dev/null +++ b/src/test/java/cc/mrbird/febs/PayTest.java @@ -0,0 +1,33 @@ +package cc.mrbird.febs; + +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.domain.AlipayTradeAppPayModel; +import com.alipay.api.response.AlipayTradeAppPayResponse; +import com.ijpay.alipay.AliPayApi; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +/** + * @author wzy + * @date 2021-09-27 + **/ +@Slf4j +@SpringBootTest +public class PayTest { + + @Test + public void aliPay() throws AlipayApiException { + AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); + model.setBody("这是测试用"); + model.setSubject("支付测试用的"); + model.setOutTradeNo("2021092712215802974"); + model.setTimeoutExpress("15m"); + model.setTotalAmount("0.01"); + model.setPassbackParams("callback params"); + model.setProductCode("QUICK_MSECURITY_PAY"); + AlipayTradeAppPayResponse resp = AliPayApi.appPayToResponse(model, ""); + log.info("=====>>>{}", JSONObject.toJSONString(resp)); + } +} -- Gitblit v1.9.1