xiongzhu 2 năm trước cách đây
mục cha
commit
2dc745d478

+ 1 - 0
src/main/java/com/izouma/awesomeAdmin/config/Constants.java

@@ -66,6 +66,7 @@ public interface Constants {
         String BONUS_MIN_AMOUNT              = "bonus_min_am";
         String PAY_CHANNEL                   = "pay_channel";
         String WITHDRAW_CHANNEL              = "withdraw_channel";
+        String GLOBAL_PAY_METHOD             = "global_pay_method";
     }
 
     interface Redis {

+ 3 - 2
src/main/java/com/izouma/awesomeAdmin/service/GlobalPayService.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.internal.util.StreamUtil;
 import com.github.kevinsawicki.http.HttpRequest;
+import com.izouma.awesomeAdmin.config.Constants;
 import com.izouma.awesomeAdmin.config.GeneralProperties;
 import com.izouma.awesomeAdmin.config.GlobalPayProperties;
 import com.izouma.awesomeAdmin.exception.BusinessException;
@@ -20,7 +21,6 @@ import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.security.KeyFactory;
 import java.security.PrivateKey;
 import java.security.Signature;
@@ -36,6 +36,7 @@ public class GlobalPayService {
 
     private final GlobalPayProperties properties;
     private final GeneralProperties   generalProperties;
+    private final SysConfigService    sysConfigService;
 
     public static PrivateKey getPrivateKeyFromPKCS8(String algorithm, InputStream ins) throws Exception {
         boolean validKey = ins != null && algorithm != null || algorithm.length() != 0;
@@ -76,7 +77,7 @@ public class GlobalPayService {
         params.put("phone", "9999999999");
         params.put("order_amount", amount.stripTrailingZeros().toPlainString());
         params.put("ccy_no", "PHP");
-        params.put("busi_code", "101203");
+        params.put("busi_code", sysConfigService.getString(Constants.Config.GLOBAL_PAY_METHOD));
         params.put("notifyUrl", properties.getNotifyUrl() + "/" + type);
         params.put("pageUrl", generalProperties.getHost() + "/static/return.html");
 

+ 64 - 56
src/main/java/com/izouma/awesomeAdmin/service/SysConfigService.java

@@ -20,24 +20,24 @@ public class SysConfigService {
 
     public BigDecimal getBigDecimal(String name) {
         return sysConfigRepo.findByName(name).map(sysConfig -> new BigDecimal(sysConfig.getValue()))
-                .orElse(BigDecimal.ZERO);
+                            .orElse(BigDecimal.ZERO);
     }
 
     public String getString(String name) {
         return sysConfigRepo.findByName(name).map(SysConfig::getValue)
-                .orElse(null);
+                            .orElse(null);
     }
 
     public LocalTime getTime(String name) {
         String str = sysConfigRepo.findByName(name).map(SysConfig::getValue)
-                .orElseThrow(new BusinessException("配置不存在"));
+                                  .orElseThrow(new BusinessException("配置不存在"));
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm");
         return LocalTime.from(dateTimeFormatter.parse(str));
     }
 
     public boolean getBoolean(String name) {
         String str = sysConfigRepo.findByName(name).map(SysConfig::getValue)
-                .orElseThrow(new BusinessException("配置不存在"));
+                                  .orElseThrow(new BusinessException("配置不存在"));
         return str.equals("1");
     }
 
@@ -46,94 +46,102 @@ public class SysConfigService {
         List<SysConfig> sysConfigs = sysConfigRepo.findAll();
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.WITHDRAW_FEE_RATE))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.WITHDRAW_FEE_RATE)
-                    .value("0.08")
-                    .desc("提现手续费率")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("0.08")
+                                        .desc("提现手续费率")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.WITHDRAW_FEE_LOW_RATE))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.WITHDRAW_FEE_LOW_RATE)
-                    .value("0.01")
-                    .desc("提现优惠费率")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("0.01")
+                                        .desc("提现优惠费率")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.FINANCE_PRODUCT_START_TIME))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.FINANCE_PRODUCT_START_TIME)
-                    .value("11:30")
-                    .desc("理财产品开售时间")
-                    .type(SysConfig.ValueType.TIME)
-                    .build());
+                                        .value("11:30")
+                                        .desc("理财产品开售时间")
+                                        .type(SysConfig.ValueType.TIME)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.FINANCE_PRODUCT_END_TIME))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.FINANCE_PRODUCT_END_TIME)
-                    .value("12:00")
-                    .desc("理财产品停售时间")
-                    .type(SysConfig.ValueType.TIME)
-                    .build());
+                                        .value("12:00")
+                                        .desc("理财产品停售时间")
+                                        .type(SysConfig.ValueType.TIME)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.FINANCE_RATE))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.FINANCE_RATE)
-                    .value("0.003")
-                    .desc("理财产品比例")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("0.003")
+                                        .desc("理财产品比例")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.BONUS_RATE))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.BONUS_RATE)
-                    .value("0.003")
-                    .desc("邀请奖励比例")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("0.003")
+                                        .desc("邀请奖励比例")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.CUSTOMER_SERVICE))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.CUSTOMER_SERVICE)
-                    .value("+639065504992,+639458113724,+639975948478")
-                    .desc("whatsapp客服")
-                    .type(SysConfig.ValueType.STRING)
-                    .build());
+                                        .value("+639065504992,+639458113724,+639975948478")
+                                        .desc("whatsapp客服")
+                                        .type(SysConfig.ValueType.STRING)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.CUSTOMER_JSON))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.CUSTOMER_JSON)
-                    .value("[]")
-                    .desc("客服")
-                    .type(SysConfig.ValueType.STRING)
-                    .build());
+                                        .value("[]")
+                                        .desc("客服")
+                                        .type(SysConfig.ValueType.STRING)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.FINANCE_PRODUCT_MIN_AMOUNT))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.FINANCE_PRODUCT_MIN_AMOUNT)
-                    .value("100")
-                    .desc("理财产品最小金额")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("100")
+                                        .desc("理财产品最小金额")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.BONUS_MIN_AMOUNT))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.BONUS_MIN_AMOUNT)
-                    .value("100")
-                    .desc("邀请奖励最小金额")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("100")
+                                        .desc("邀请奖励最小金额")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.FINANCE_PRODUCT_DEFAULT_STOCK))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.FINANCE_PRODUCT_DEFAULT_STOCK)
-                    .value("100")
-                    .desc("理财产品默认库存")
-                    .type(SysConfig.ValueType.NUMBER)
-                    .build());
+                                        .value("100")
+                                        .desc("理财产品默认库存")
+                                        .type(SysConfig.ValueType.NUMBER)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.PAY_CHANNEL))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.PAY_CHANNEL)
-                    .value(Constants.PayChannel.LUCK_PAY)
-                    .desc("支付通道")
-                    .type(SysConfig.ValueType.STRING)
-                    .build());
+                                        .value(Constants.PayChannel.LUCK_PAY)
+                                        .desc("支付通道")
+                                        .type(SysConfig.ValueType.STRING)
+                                        .build());
         }
         if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.WITHDRAW_CHANNEL))) {
             sysConfigRepo.save(SysConfig.builder().name(Constants.Config.WITHDRAW_CHANNEL)
-                    .value(Constants.PayChannel.LUCK_PAY)
-                    .desc("提现通道")
-                    .type(SysConfig.ValueType.STRING)
-                    .build());
+                                        .value(Constants.PayChannel.LUCK_PAY)
+                                        .desc("提现通道")
+                                        .type(SysConfig.ValueType.STRING)
+                                        .build());
+        }
+        if (sysConfigs.stream().noneMatch(s -> s.getName().equals(Constants.Config.GLOBAL_PAY_METHOD))) {
+            sysConfigRepo.save(SysConfig.builder().name(Constants.Config.GLOBAL_PAY_METHOD)
+                                        .value("101204")
+                                        .desc("globalPay method")
+                                        .type(SysConfig.ValueType.SELECT)
+                                        .options("101202,101203,101204")
+                                        .build());
         }
     }
 }

+ 3 - 3
src/main/java/com/izouma/awesomeAdmin/web/GlobalPayNotifyController.java

@@ -36,13 +36,13 @@ public class GlobalPayNotifyController {
 
         try {
             if ("recharge".equals(type)) {
-                if ("1".equals(status)) {
+                if ("SUCCESS".equals(status)) {
                     rechargeOrderService.notify(Long.valueOf(merOrderNo));
                 }
             } else if ("withdraw".equals(type)) {
-                if ("1".equals(status)) {
+                if ("SUCCESS".equals(status)) {
                     withdrawApplyService.notifyWithdraw(orderNo, true);
-                } else if ("3".equals(status)) {
+                } else if ("FAIL".equals(status)) {
                     withdrawApplyService.notifyWithdraw(orderNo, false);
                 }
             }

+ 9 - 22
src/test/java/com/izouma/awesomeAdmin/service/GlobalPayServiceTest.java

@@ -4,36 +4,23 @@ import com.izouma.awesomeAdmin.config.GeneralProperties;
 import com.izouma.awesomeAdmin.config.GlobalPayProperties;
 import com.izouma.awesomeAdmin.utils.SnowflakeIdWorker;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import java.math.BigDecimal;
 
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 public class GlobalPayServiceTest {
-
-    private GlobalPayService    globalPayService;
-    private GlobalPayProperties globalPayProperties;
-    private GeneralProperties   generalProperties;
-
-
-    public GlobalPayServiceTest() {
-
-        globalPayProperties = new GlobalPayProperties();
-        globalPayProperties.setMerNo("861100000033178");
-        globalPayProperties.setMd5Key("5B8F9493253D97A9EA413F20A46DC1B4");
-        globalPayProperties.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRC2BImd8iGDqNjc28HA+RZt8OTVslBtFGmG1/Jfs5arSqwhslEIY8aQzhos+0ILnT5X1beMnPsxW7cSRg/Y08yBwpMnTYhlc4ZSxY7usl5zUw+xVOb9XqvnxbL/6GWyr4k1WqYJJDG4y5uc31qsUDDs0zH+k+0Uj4UuuqGfdsEwIDAQAB");
-        globalPayProperties.setPrivateKey("MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJELYEiZ3yIYOo2NzbwcD5Fm3w5NWyUG0UaYbX8l+zlqtKrCGyUQhjxpDOGiz7QgudPlfVt4yc+zFbtxJGD9jTzIHCkydNiGVzhlLFju6yXnNTD7FU5v1eq+fFsv/oZbKviTVapgkkMbjLm5zfWqxQMOzTMf6T7RSPhS66oZ92wTAgMBAAECgYEAjJbeSQD8y2t4teSRWphIbsOryY0pn4YwK6Fr4SbLkCfh3vIupYqS0tNwbPUHJq3h8YYsMBGwa+ZGVl2gyXJ7Bs0t5/dEnHD5ArMTxhSc+CqKt54Y0b1/Z4U9XiU+qG1gkkZS5Gcxjwyc0kUW2M6uga46N2WrjkHnDWs+4spCXuECQQDMTrpXEHAwgmmvLssOlSgm56aI3FBKiI0UOlBEbI0P0KaDZc4OPg5BE/AmKlTDt84Mcg1PDw0JJJbq/0kv6PJHAkEAtb4ZMPArDqPWKG6EipT37xI6HhM1WNU4YI3jpECoiJaYH65vZB4M+uvz0bp+uOMRdj4LddPX8JTmawRjlefx1QJBALaSn/hPq0HeOJ0g3rpgVio2Fl71KhcA4bmyxqnuqzv3w+Vl43ZcxBYpwBALAgaISWxbu0Lr+0UxWmAT044px98CQFCgPui5A0EBafaR4Pbh04QZ3/KLrvTz0ojzKXQqwxmlRWN4rS4LLtL6bjYyuBkpkwuTxt3E112BkR8U2WEdfukCQDujWa09aQEGBCgw1w2uWiOJsuaOSefpF1DfVmHTwSsM7tj3hqoDiDivQWe//ftW2Ua+n1V6tIRK8udLWaVFcOE=");
-        globalPayProperties.setPlatformPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCA4XAJF/pZXcGc/SO00FEw+SOAVO3Q6ITOEqw+y0TjPrc1leG2+HoYkpugIJLVKpGKvZpYfcddbppyI+UsvfwLX1MDnLbduxL6aUpUMWNIHCHid6Q46Rl/PVu3RQSwt9YagehAFEmb1M9Gl+/V7FXcJdOmVBrSBQ0vaEB9lVRzfQIDAQAB");
-        globalPayProperties.setNotifyUrl("https://paimaide.izouma.com/globalPay/notify");
-
-        generalProperties = new GeneralProperties();
-        generalProperties.setHost("https://paimaide.izouma.com");
-
-        globalPayService = new GlobalPayService(globalPayProperties, generalProperties);
-    }
+    @Autowired
+    private GlobalPayService globalPayService;
 
     @Test
     public void pay() throws Exception {
         String url = globalPayService.pay(new SnowflakeIdWorker(1, 1).nextId() + "",
-                new BigDecimal("50"), "recharge");
+                new BigDecimal("40"), "recharge");
         System.out.println(url);
     }
 }