Browse Source

【功能优化】支付:支付应用,增加 appKey 标识,用于不同接入方的标识

YunaiV 6 months ago
parent
commit
e850fbf675

+ 1 - 1
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceImpl.java

@@ -113,7 +113,7 @@ public class PayRefundServiceImpl implements PayRefundService {
         // 2.1 插入退款单
         String no = noRedisDAO.generate(payProperties.getRefundNoPrefix());
         refund = PayRefundConvert.INSTANCE.convert(reqDTO)
-                .setNo(no).setOrderId(order.getId()).setOrderNo(order.getNo())
+                .setNo(no).setAppId(app.getId()).setOrderId(order.getId()).setOrderNo(order.getNo())
                 .setChannelId(order.getChannelId()).setChannelCode(order.getChannelCode())
                 // 商户相关的字段
                 .setNotifyUrl(app.getRefundNotifyUrl())

+ 3 - 0
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceTest.java

@@ -243,6 +243,9 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
         // mock 数据
         PayOrderDO dbOrder = randomPojo(PayOrderDO.class,  o -> o.setAppId(1L).setMerchantOrderId("10"));
         orderMapper.insert(dbOrder);
+        // mock 方法
+        PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L).setOrderNotifyUrl("http://127.0.0.1"));
+        when(appService.validPayApp(eq(reqDTO.getAppKey()))).thenReturn(app);
 
         // 调用
         Long orderId = orderService.createOrder(reqDTO);

+ 8 - 8
yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/refund/PayRefundServiceTest.java

@@ -212,7 +212,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                 o -> o.setAppKey("demo"));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
 
         // 调用,并断言异常
         assertServiceException(() -> refundService.createPayRefund(reqDTO),
@@ -235,7 +235,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                 o -> o.setAppKey("demo").setMerchantOrderId("100"));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
         // mock 数据(order)
         PayOrderDO order = randomPojo(PayOrderDO.class, o -> o.setStatus(status));
         when(orderService.getOrder(eq(1L), eq("100"))).thenReturn(order);
@@ -252,7 +252,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                 o -> o.setAppKey("demo").setMerchantOrderId("100").setPrice(10));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
         // mock 数据(order)
         PayOrderDO order = randomPojo(PayOrderDO.class, o ->
                 o.setStatus(PayOrderStatusEnum.REFUND.getStatus())
@@ -271,7 +271,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                 o -> o.setAppKey("demo").setMerchantOrderId("100").setPrice(10));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
         // mock 数据(order)
         PayOrderDO order = randomPojo(PayOrderDO.class, o ->
                 o.setStatus(PayOrderStatusEnum.REFUND.getStatus())
@@ -294,7 +294,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                 o -> o.setAppKey("demo").setMerchantOrderId("100").setPrice(9));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
         // mock 数据(order)
         PayOrderDO order = randomPojo(PayOrderDO.class, o ->
                 o.setStatus(PayOrderStatusEnum.REFUND.getStatus())
@@ -319,7 +319,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                         .setMerchantRefundId("200").setReason("测试退款"));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
         // mock 数据(order)
         PayOrderDO order = randomPojo(PayOrderDO.class, o ->
                 o.setStatus(PayOrderStatusEnum.REFUND.getStatus())
@@ -351,7 +351,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                         .setMerchantRefundId("200").setReason("测试退款"));
         // mock 方法(app)
         PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-        when(appService.validPayApp(eq(1L))).thenReturn(app);
+        when(appService.validPayApp(eq("demo"))).thenReturn(app);
         // mock 数据(order)
         PayOrderDO order = randomPojo(PayOrderDO.class, o ->
                 o.setStatus(PayOrderStatusEnum.REFUND.getStatus())
@@ -395,7 +395,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
                             .setMerchantRefundId("200").setReason("测试退款"));
             // mock 方法(app)
             PayAppDO app = randomPojo(PayAppDO.class, o -> o.setId(1L));
-            when(appService.validPayApp(eq(1L))).thenReturn(app);
+            when(appService.validPayApp(eq("demo"))).thenReturn(app);
             // mock 数据(order)
             PayOrderDO order = randomPojo(PayOrderDO.class, o ->
                     o.setStatus(PayOrderStatusEnum.REFUND.getStatus())

+ 1 - 0
yudao-module-pay/yudao-module-pay-biz/src/test/resources/sql/create_tables.sql

@@ -1,5 +1,6 @@
 CREATE TABLE IF NOT EXISTS "pay_app" (
     "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "app_key"              varchar(64)   NOT NULL,
     "name"              varchar(64)   NOT NULL,
     "status"            tinyint       NOT NULL,
     "remark"            varchar(255)           DEFAULT NULL,