Althars123 4 жил өмнө
parent
commit
f94103b0cd

+ 4 - 0
zzjs-admin/src/main/java/com/miaxis/app/controller/carousel/AppletCarouselChartInfoController.java

@@ -2,9 +2,11 @@ package com.miaxis.app.controller.carousel;
 
 
 import com.miaxis.carousel.service.ICarouselChartInfoService;
 import com.miaxis.carousel.service.ICarouselChartInfoService;
 import com.miaxis.carousel.vo.CarouselChartInfoVo;
 import com.miaxis.carousel.vo.CarouselChartInfoVo;
+import com.miaxis.common.annotation.Log;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.common.core.page.ResponsePageInfo;
+import com.miaxis.common.enums.BusinessTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
@@ -38,4 +40,6 @@ public class AppletCarouselChartInfoController extends BaseController {
         return toResponsePageInfo(list);
         return toResponsePageInfo(list);
     }
     }
 
 
+
+
 }
 }

+ 1 - 1
zzjs-admin/src/main/java/com/miaxis/system/controller/common/CommonController.java

@@ -117,7 +117,7 @@ public class CommonController
         fileInfo.setFileType(fileUploadTypeEnum.getFileType());
         fileInfo.setFileType(fileUploadTypeEnum.getFileType());
         fileInfo.setFilePath(key+storagefileName);
         fileInfo.setFilePath(key+storagefileName);
         fileInfo.setFileUrl(fileUrl);
         fileInfo.setFileUrl(fileUrl);
-        fileInfo.setRemark(remark);
+        //fileInfo.setRemark(remark);
         fileInfoService.save(fileInfo);
         fileInfoService.save(fileInfo);
         return Response.success(fileInfo);
         return Response.success(fileInfo);
     }
     }

+ 2 - 4
zzjs-admin/src/main/resources/application-dev.yml

@@ -58,11 +58,11 @@ spring:
     # redis 配置
     # redis 配置
     redis:
     redis:
         # 地址
         # 地址
-        host: 1.15.29.64
+        host: 192.168.8.213
         # 端口,默认为6379
         # 端口,默认为6379
         port: 6379
         port: 6379
         # 密码
         # 密码
-        password: miaxis110
+        password:
         # 连接超时时间
         # 连接超时时间
         timeout: 10s
         timeout: 10s
         lettuce:
         lettuce:
@@ -75,5 +75,3 @@ spring:
                 max-active: 8
                 max-active: 8
                 # #连接池最大阻塞等待时间(使用负值表示没有限制)
                 # #连接池最大阻塞等待时间(使用负值表示没有限制)
                 max-wait: -1ms
                 max-wait: -1ms
-        # Redis数据库索引(默认为0)
-        database: 3

BIN
zzjs-admin/src/main/resources/wechatpay/apiclient_cert.p12


+ 24 - 0
zzjs-admin/src/main/resources/wechatpay/apiclient_cert.pem

@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIID8DCCAtigAwIBAgIUSHFZ4WgAHNug7+LJiCSahAI61swwDQYJKoZIhvcNAQEL
+BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
+FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
+Q0EwHhcNMjEwNDIxMDYxNzU4WhcNMjYwNDIwMDYxNzU4WjCBgTETMBEGA1UEAwwK
+MTYwODY5OTUwNDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL
+DCTnpo/lu7rkuK3mjK/nvZHnu5znp5HmioDmnInpmZDlhazlj7gxCzAJBgNVBAYM
+AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAPEY7H7S28zofHptl+LEbNs16644aKobQ8fOtmPtOM76II6x0yw8VKDq
+mbOONJxw95Y07svuozj6kuFB5O5gOK958yv57ZL5KysJZ6i74C/IeJdnACaKPcQf
+stcNaXYGRRKCdaKRbe+28SshgQPuFFgmUasyf5PtvtawCOgEEF8NHXK9PtwENZP0
+FoCAdAFxDSPB+Gtwv7WoxxOGo937lYQbyzQgC02l4in3t4fALIQQpxpvJSZaWou3
+XTqh0IKA0wnZntM+Y90eotPv8GnP700Tr4IlUJQFcWyeRjpQRFNx/Wnm+ZPHpr7E
++RMa1MU+Jvbb7gBMznMOXW/ppGoZVZcCAwEAAaOBgTB/MAkGA1UdEwQCMAAwCwYD
+VR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVzLmNv
+bS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1
+NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEAkB/SdHD7pgbSu/pg
+vWygXZqNE9d/nbXNBkRMm+B84piD2UjfbAA6dbC5rTjZIx/3c3/SS76S7c7+4Jio
+0zR+ytNixs+G3it7NkM4v4V87aEv81oOI8o68QPJW4pomjMl9hw6kPoZcO/C75P+
+JANLsmyM9i5hL7gIYAHMvThs+l3xORVfr69mHRtP9jpbDX2OKpuZUaDhCDE9Timf
+ZkVMn1UAvO3yUFMCfUByQLWyZVhEI0RFoJdd0UJgox3tHJh7yU8zyb3ZeTDX1E4r
+QCizZfZZKzgXD1MxCzpRqF4t6rJPnLQlflB261SIDfMH7+3+dSRd2W2BNe1F1yEO
+39R1rA==
+-----END CERTIFICATE-----

+ 28 - 0
zzjs-admin/src/main/resources/wechatpay/apiclient_key.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDxGOx+0tvM6Hx6
+bZfixGzbNeuuOGiqG0PHzrZj7TjO+iCOsdMsPFSg6pmzjjSccPeWNO7L7qM4+pLh
+QeTuYDivefMr+e2S+SsrCWeou+AvyHiXZwAmij3EH7LXDWl2BkUSgnWikW3vtvEr
+IYED7hRYJlGrMn+T7b7WsAjoBBBfDR1yvT7cBDWT9BaAgHQBcQ0jwfhrcL+1qMcT
+hqPd+5WEG8s0IAtNpeIp97eHwCyEEKcabyUmWlqLt106odCCgNMJ2Z7TPmPdHqLT
+7/Bpz+9NE6+CJVCUBXFsnkY6UERTcf1p5vmTx6a+xPkTGtTFPib22+4ATM5zDl1v
+6aRqGVWXAgMBAAECggEAQZbbN8FbZIpW2uOXr2xqhNRNco8MAkL6lI/q1JKDouMv
+GkLMRTuAdmp8N/nW3DxrTqTF1hrssqKQdNF9W1A3+5z8h5kthY9drA6Z8bBy0+0A
+yYeO5e0z0nghKhoO97nK7rcpE3nm45DsWSR7Obt6M2TxUNajGHZUNYmcUqpQXdrn
+WrngVb5GaxWixH7YdP29s2RImvb1fH+GbGo1KGvomAF3WVsHrlOfKGfJOAA63qsp
+cjAtur8bC1kTDv1M6h3q/QjhR03TiHMROODzdX35vE1URRYVccm1neXvrGaaPn0A
+KC8Y4HZCtLLQtyIRSmeaXe/CD2m97n5zB1tV9cM9IQKBgQD67gwyrxOrVcxAbJLc
+oc9PgQt9QaxJRpJP+48MYkkaF6WrKBUUxnDQ82L61uHZeUTguUQ/l/bAblSDVFG7
+eeK7aoG6S/X+aajWVYojuKdnfzjPUTzwZwvU2N/OQa6TryF6A2T3+mypUhI/KIrS
+Gkt2LHG5hOpJb32ULuvQBz52cQKBgQD1+ARMStNVDaMUF0PNGxwNT0oWfcHfIWhL
+0UydhOZucdhVRuwQDXwfAu8O6VWh0KhOtbAWqe5o7hKfqP8Oy8hOHTaEy/zB404l
+HbCWvYPOFeuGBvm2miQ45As8a9AEG3V6PKnDsOMi1FTM7YYGbEYsyLgABwZ9fJMa
+0Ey9d+bghwKBgFEZMI4M8YF1eE72CD0Qes0KOulfmUwRZ+Y7uk7ZUSECtYNsr+uH
++xw9HSdO3a2IuQ8cMYeQGKq2vc+4J7Y8vV+vG4BXXoi8I1oqSTwkSM51Wqn+aoCT
+/UnsUeD6b27BskMZ578Ri57prIYHF16yKuNll9fKsmHLi72hsIsKXFCxAoGAMg8q
+AMTxwcumtv4NJH8x9FuAvpcVj+3iphuQtjZIF44/8wseHB5CdqVINgazEN3Ag1Ri
+5BntlZluXOQuFLrQp2U2pUxGwscaLl+egu9LFfRMHNjqlYlFefafesqOaWeVPy19
+d4BWmc4Q/CwTLNd4aMDpAchsP7nMzpY6KA1xBZ0CgYEAgn18heUktnUy3flfVKRK
+WU3nH1tsQiDeGw6eKZPjwtvL1FzdpambVCyO8IFJl1ZDq9am9WwtB3Arz/IiqvSc
+lHAWJ5V8buitV4xeApk0kgFARvKxLFfx8lFnPJLvPak1S40kv5nu1Ft8xLYzIYDP
+6dIA7j5jQtUDV/vxLq7afZ8=
+-----END PRIVATE KEY-----

+ 0 - 24
zzjs-admin/src/main/resources/zs/fujianzhongzhen.cer

@@ -1,24 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID7zCCAtegAwIBAgIGAWWzd6mtMA0GCSqGSIb3DQEBCwUAMGMxCzAJBgNVBAYT
-AkNOMREwDwYDVQQKHghW/U6kT+GQGjEMMAoGA1UECxMDUEtJMTMwMQYDVQQDHioA
-TwBwAGUAcgBhAHQAaQBvAG4AIABDAEEAIABmAG8AcgAgVv1OpE/hkBowHhcNMTgw
-OTA2MTYwMDAwWhcNMjgwOTA2MTYwMDAwWjA+MQswCQYDVQQGEwJDTjEVMBMGA1UE
-Ch4Mi6Fl9n7Ieu+LwU5mMRgwFgYDVQQDEw9mdWppYW56aG9uZ3poZW4wggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6e2QNUV1KjEC06zpo+G9uCi8/O5BH
-eTua3Akj825ORPEitOOclULkTyEO+b/z61vski9xcp36zz0IZ4TDJjixrDIMejg0
-iyzO8j4/IqSeDlaINioQuK4WwVqHSbe8lQ0Fz4QDc0KTD31UTERJirppnQXaPvMU
-+UNSf7c7KKm1mQdhW9n2PQWmoOWlgbo+5PeEAfDJQEBFfTNzzUWUhmU9qi/fJ6T4
-YzjgHVp9qFqN9AJ1j3jqpRUwO+mok/B+Jdr75m73pVhbcBYIoMIH+Pv4kCmMc1B3
-4NszFK4DOCIkkUPmMpZqHoxBjxziTiD7LlGvGUJ9wldYA0dyFzmFvzl/AgMBAAGj
-gc0wgcowHwYDVR0jBBgwFoAUXKqOitJrMkwHwGNrPDT8fn6yrnswHQYDVR0OBBYE
-FAA1XrvSNkIfOb9lypi9uqD5ovGDMF0GA1UdHwRWMFQwUqBQoE6kTDBKMRcwFQYD
-VQQDHg4AQwBSAEwAMQAwADAAMDEPMA0GA1UECx4GAEMAUgBMMREwDwYDVQQKHghW
-/U6kT+GQGjELMAkGA1UEBhMCQ04wCQYDVR0TBAIwADALBgNVHQ8EBAMCAPgwEQYJ
-YIZIAYb4QgEBBAQDAgCgMA0GCSqGSIb3DQEBCwUAA4IBAQAl1dus2bk65a+mhiaQ
-txu4l8dYwCrL7P8RV0A5ov0CqqKVugT+++1V/59aDQ094hvN8RLABr/ma0rdzrr2
-dWdEuvl0DrBOwMOObCsz/yU5fiDFbSar/58ihM2jdvhD+kQZETNP7efkgF67Gp7i
-KM+K7kXx39BoJAAyq/XU/D+TIM5gpXv9uSoZeZzkr1wMl1jWglD81Dyvip1pmMoD
-JZ5mg2l9qoH3bR/sQsrcqkpW8pBjNZhFkDP/E6QksfiZ45r7WYjOX3ngtbehBpsp
-gk17wUoiS+cAlUimic3K0ZDRE4nl100TK/Nc54CvsV8BZEJvWe1Moas8rWz+X+ct
-sir7
------END CERTIFICATE-----

BIN
zzjs-admin/src/main/resources/zs/fujianzhongzhen.pfx


+ 110 - 1
zzjs-admin/src/test/java/com/miaxis/test/NormalTest.java

@@ -1,18 +1,127 @@
 package com.miaxis.test;
 package com.miaxis.test;
 
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.miaxis.ZzjsApplication;
 import com.miaxis.ZzjsApplication;
+import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
+import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
+import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
+import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
+import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Validator;
+import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.util.EntityUtils;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.junit4.SpringRunner;
 
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.KeyFactory;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
+
+
 @SpringBootTest(classes = ZzjsApplication.class)
 @SpringBootTest(classes = ZzjsApplication.class)
 @RunWith(SpringRunner.class)
 @RunWith(SpringRunner.class)
 public class NormalTest {
 public class NormalTest {
 
 
-    @Test
+    private HttpClient httpClient = null;
+    @Before
     public void test1() throws Exception {
     public void test1() throws Exception {
+        ClassPathResource classPathResource = new ClassPathResource("");
+        File file = new ClassPathResource("wechatpay/apiclient_key.pem").getFile();
+        String realPath =file.getAbsolutePath();
+        PrivateKey privateKey = getPrivateKey(realPath);
+//        // 加载商户私钥(privateKey:私钥字符串)
+//        PrivateKey merchantPrivateKey = PemUtil
+//                .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
+
+        // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
+        AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
+                new WechatPay2Credentials("1608699504",
+                        new PrivateKeySigner("487159E168001CDBA0EFE2C988249A84023AD6CC", privateKey)),
+                "qqwweerrttyyuuiioopp123456789000".getBytes("utf-8"));
+
+        // 初始化httpClient
+        httpClient = WechatPayHttpClientBuilder.create()
+                .withMerchant("1608699504", "487159E168001CDBA0EFE2C988249A84023AD6CC", privateKey)
+                .withValidator(new WechatPay2Validator(verifier)).build();
+
+        //创建订单
+
+
+
+
+    }
+    @Test
+    public void CreateOrder() throws Exception{
+        HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi");
+        httpPost.addHeader("Accept", "application/json");
+        httpPost.addHeader("Content-type","application/json; charset=utf-8");
+
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ObjectMapper objectMapper = new ObjectMapper();
+
+        ObjectNode rootNode = objectMapper.createObjectNode();
+        rootNode.put("mchid","1608699504")
+                .put("appid", "wx8f43db501343feab")
+                .put("description", "Image形象店-深圳腾大-QQ公仔")
+                .put("notify_url", "https://www.weixin.qq.com/wxpay/pay.php")
+                .put("out_trade_no", "1217752501201407033233368044");
+        rootNode.putObject("amount")
+                .put("total", 1);
+        rootNode.putObject("payer")
+                .put("openid", "oO7PJ5GVKa0c_rfU34yIO0RgfTTg");
+
+        objectMapper.writeValue(bos, rootNode);
+
+        httpPost.setEntity(new StringEntity(bos.toString("UTF-8")));
+        HttpResponse response = httpClient.execute(httpPost);
+
+        String bodyAsString = EntityUtils.toString(response.getEntity());
+        System.out.println(bodyAsString);
+        System.out.println(bodyAsString);
+    }
+
+
+
+    /**
+     * 获取私钥。
+     *
+     * @param filename 私钥文件路径  (required)
+     * @return 私钥对象
+     */
+    public static PrivateKey getPrivateKey(String filename) throws IOException {
+        String content = new String(Files.readAllBytes(Paths.get(filename)), "utf-8");
+        try {
+            String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
+                    .replace("-----END PRIVATE KEY-----", "")
+                    .replaceAll("\\s+", "");
 
 
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            return kf.generatePrivate(
+                    new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException("当前Java环境不支持RSA", e);
+        } catch (InvalidKeySpecException e) {
+            throw new RuntimeException("无效的密钥格式");
+        }
     }
     }
 
 
 
 

+ 5 - 0
zzjs-common/pom.xml

@@ -211,6 +211,11 @@
             <artifactId>feign-form-spring</artifactId>
             <artifactId>feign-form-spring</artifactId>
             <version>3.8.0</version>
             <version>3.8.0</version>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>com.github.wechatpay-apiv3</groupId>
+            <artifactId>wechatpay-apache-httpclient</artifactId>
+            <version>0.2.2</version>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
 
 

+ 8 - 6
zzjs-framework/src/main/java/com/miaxis/framework/web/exception/GlobalExceptionHandler.java

@@ -78,12 +78,7 @@ public class GlobalExceptionHandler
         return Response.error().setMsg(e.getMessage());
         return Response.error().setMsg(e.getMessage());
     }
     }
 
 
-    @ExceptionHandler(Exception.class)
-    public Response handleException(Exception e)
-    {
-        log.error(e.getMessage(), e);
-        return Response.error().setMsg(e.getMessage());
-    }
+
 
 
     /**
     /**
      * 自定义验证异常
      * 自定义验证异常
@@ -107,6 +102,13 @@ public class GlobalExceptionHandler
         return Response.error().setMsg(message);
         return Response.error().setMsg(message);
     }
     }
 
 
+
+    @ExceptionHandler(Exception.class)
+    public Response handleException(Exception e)
+    {
+        log.error(e.getMessage(), e);
+        return Response.error().setMsg(toString());
+    }
 //    /**
 //    /**
 //     * 演示模式异常
 //     * 演示模式异常
 //     */
 //     */