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