Browse Source

feat:微信支付

zhanghui 1 month ago
parent
commit
5eae1db235

+ 1 - 1
src/main/java/org/springblade/common/enums/OrderStateEnum.java

@@ -8,7 +8,7 @@ import lombok.Getter;
 @Getter
 public enum OrderStateEnum {
 	WAIT_PAY("待付款", 1),
-	WAIT_DELIVERY("待货", 2),
+	WAIT_DELIVERY("待货", 2),
 	WAIT_RECEIVE("待收货", 3),
 	COMPLETED("已完成", 4),
 	CANCEL("已取消", 5),

+ 2 - 0
src/main/java/org/springblade/modules/api/controller/ApiOrderGoodsController.java

@@ -75,6 +75,8 @@ public class ApiOrderGoodsController {
         OrderGoodsVO orderGoodsVO = OrderGoodsWrapper.build().entityVO(orderGoods);
         orderGoodsVO.setOrderState(order.getOrderState());
         orderGoodsVO.setOrderNo(order.getOrderNo());
+        orderGoodsVO.setPaymentMode(order.getPaymentMode());
+        orderGoodsVO.setIsAfterSales(order.getIsAftersales());
         orderGoodsVO.setPaymentAmount(order.getPaymentAmount());
         orderGoodsVO.setTotalAmount(order.getTotalAmount());
         orderGoodsVO.setDiscountAmount(order.getDiscountAmount());

+ 21 - 21
src/main/java/org/springblade/modules/api/controller/WxPayController.java

@@ -131,29 +131,29 @@ public class WxPayController extends BladeController {
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "jspai下单API", notes = "jspai下单API")
     public R jsapiPay(@ApiParam(value = "订单号", required = true) @RequestParam String orderNo,
-                      @ApiParam(value = "openid", required = true) @RequestParam String openid) {
+                      @ApiParam(value = "openid", required = true) @RequestParam String openId) {
         try {
-            Order order = orderService.getByOrderNo(orderNo);
-            if (OrderTypeEnum.NORMAL.getValue().equals(order.getOrderType())) {
-                // 判断团购是否结束
-                OrderGroupon orderGroupon = orderGrouponService.lambdaQuery().eq(OrderGroupon::getOrderId, order.getId()).one();
-                Groupon groupon = grouponService.getById(orderGroupon.getGrouponId());
-                if (groupon.getGrouponEndTime().isBefore(LocalDateTime.now())) {
-                    // 团购已结束则取消订单
-                    orderService.orderCancel(order.getId());
-                    return R.fail("团购已结束!");
-                }
-            }
+//            Order order = orderService.getByOrderNo(orderNo);
+//            if (OrderTypeEnum.NORMAL.getValue().equals(order.getOrderType())) {
+//                // 判断团购是否结束
+//                OrderGroupon orderGroupon = orderGrouponService.lambdaQuery().eq(OrderGroupon::getOrderId, order.getId()).one();
+//                Groupon groupon = grouponService.getById(orderGroupon.getGrouponId());
+//                if (groupon.getGrouponEndTime().isBefore(LocalDateTime.now())) {
+//                    // 团购已结束则取消订单
+//                    orderService.orderCancel(order.getId());
+//                    return R.fail("团购已结束!");
+//                }
+//            }
             boolean profitSharing = false;
-            DistributionConfig config = distributionConfigService.lambdaQuery().one();
-            // 是否开启分销
-            if (config != null && config.getIsOpen()) {
-                // 查询用户是否有绑定上级
-                Embers embers = embersService.lambdaQuery().eq(Embers::getBindUserId, order.getUserId())
-                        .eq(Embers::getState,0).one();
-                profitSharing = embers != null;
-            }
-            Map<String, Object> map = this.generalOrder(WxApiType.JS_API_PAY, orderNo, openid, profitSharing);
+//            DistributionConfig config = distributionConfigService.lambdaQuery().one();
+//            // 是否开启分销
+//            if (config != null && config.getIsOpen()) {
+//                // 查询用户是否有绑定上级
+//                Embers embers = embersService.lambdaQuery().eq(Embers::getBindUserId, order.getUserId())
+//                        .eq(Embers::getState,0).one();
+//                profitSharing = embers != null;
+//            }
+            Map<String, Object> map = this.generalOrder(WxApiType.JS_API_PAY, orderNo, openId, profitSharing);
             return R.data(map);
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 2 - 1
src/main/java/org/springblade/modules/finance/mapper/OrderGoodsMapper.xml

@@ -81,7 +81,8 @@
             o.order_state,
             o.is_aftersales,
             o.total_amount,
-            o.payment_amount
+            o.payment_amount,
+            o.payment_mode
         FROM
             t_order o
             JOIN t_order_goods og ON o.id = og.order_id

+ 2 - 3
src/main/java/org/springblade/modules/finance/service/impl/OrderGoodsServiceImpl.java

@@ -96,10 +96,9 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
 		order.setUserId(request.getUserId());
 		// 订单总金额
 		order.setTotalAmount(cargoWay.getSalePrice().multiply(BigDecimal.valueOf(request.getGoodsNum())));
+		order.setDiscountAmount(BigDecimal.valueOf(cargoWay.getDiscount()).multiply(BigDecimal.valueOf(request.getGoodsNum())));
 		// 实付金额
-		BigDecimal payAmount = cargoWay.getSalePrice().multiply(BigDecimal.valueOf(cargoWay.getDiscount())).multiply(BigDecimal.valueOf(request.getGoodsNum()));
-		order.setPaymentAmount(payAmount);
-		order.setDiscountAmount(order.getTotalAmount().subtract(order.getPaymentAmount()));
+		order.setPaymentAmount(order.getTotalAmount().subtract(order.getDiscountAmount()));
 		order.setConsignee(user.getName());
 		order.setConsigneePhoneNumber(user.getPhone());
 		iOrderService.save(order);

+ 9 - 8
src/main/resources/application-dev.yml

@@ -58,19 +58,20 @@ oss:
   secret-key: 12345678
   bucket-name: bladex-dev
 wxpay:
-  fileRootPath: D:\workspace\groupon-api\src\main\resources\cert\
+  fileRootPath: D:\vending-machine-api\src\main\resources\cert\
   v3:
-    appId: wxb36cbb868a7d2d68
+    appId:
     appIdxcx: wxb36cbb868a7d2d68
     appSecretxcx: cf59d9b3f9030b9c601d29f2c957f70e
     keyPath: ${wxpay.fileRootPath}apiclient_key.pem
     certPath: ${wxpay.fileRootPath}apiclient_cert.pem
-    certP12Path: ${wxpay.fileRootPath}cert/apiclient_cert.p12
+    certP12Path: ${wxpay.fileRootPath}apiclient_cert.p12
     platformCertPath: ${wxpay.fileRootPath}wx_cert.pem
-    mchId: 1646838858
-    apiKey3: Dg0naaFoDj6vcd47n5DkM6DVkLKDr91B
-    apiKey: 89e3e5afd8623772bf5a56f460af839a
-    domain: http://65i1sxopd9qp.ngrok.xiaomiqiu123.top/
+    mchId: 1682199743
+    apiKey2: 30dffa037fe542df90bd71ca66088690
+    apiKey3: eccd49c1e92640f0a127e74518cc5f25
+    apiKey:
+    domain: http://u2mu3zixu5wm.ngrok.xiaomiqiu123.top/
 
 
 apk:
@@ -79,4 +80,4 @@ apk:
   logPath: /Users/pangqijun/Downloads/store/apklog/
 
 captcha:
-  length: 1
+  length: 1

BIN
src/main/resources/cert/apiclient_cert.p12


+ 25 - 0
src/main/resources/cert/apiclient_cert.pem

@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEKDCCAxCgAwIBAgIUTo+dwmoVj9jiVcAott/7zxYaxdMwDQYJKoZIhvcNAQEL
+BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
+FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
+Q0EwHhcNMjQwODA2MDIwMDA1WhcNMjkwODA1MDIwMDA1WjCBgTETMBEGA1UEAwwK
+MTY4MjE5OTc0MzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL
+DCTotaTmsLTluILorrDkuovmnKzphZLkuJrmnInpmZDlhazlj7gxCzAJBgNVBAYT
+AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAM73zI4WzSmImlwghsihO4qmEgwjYueWpSuOZ266xG9fILlZ6SMGQyPl
+xGBmYzY/pGwRyIXR7JHY/zHoBSj0MzD28hD2wJaBJbR8hLOR1yLSdwzk5FBF7U+y
++Zgcg+UQOzLfncvK7YyUvGiDF0BFQW72EESiTQkKtJdawtAgRccaXNJiP2/jPLTL
+gnzj4j26moNqhgTVruBrXGqjjmzN+XIf6+LU7EYrlRIENtQD/ChyB2dP3n7GeKWI
+hy3ZB2J8poTrlZvY2kKxFm2pJhuLkLLGDqRBjv45P/cOg+nFedH2kU/Ull3M2K3A
+w3nMUuFmy4CUQBIsx1yvToDpRglOU70CAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG
+A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu
+aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC
+MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB
+OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQC2eb2A
+IyfmFM0o/bHwZdV/EfwE7BEa4AcBbnAEspmVaPD/ZElDOdeoK57EP23F1IX9ZA+4
+CzSYEIL4/JErQYCaqJg6Sa5/1IsqiGzR/pQU79zRBLOxVn1FovdYbA1heJnxCMQS
+IuOvpYtxCgri3BkrcF8YkTJvnA/OfOfW0HRPDlCJJ/cOk2VQ4WD77eQim8WlcHfm
+ksMOGcNStPcGGnR6gRREQkOgsAB9nuJVmYsOwvZvHsgA1s5i6URkVyBpBjJYZIsp
+sxyEDXo/8OIjQzZ/gfZxmPHKBnNwO4ZoCoam8EcA+jI71yaDF+6KI6co1matE+w/
+L8dpIelJ5KfqfnUL
+-----END CERTIFICATE-----

+ 28 - 0
src/main/resources/cert/apiclient_key.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDO98yOFs0piJpc
+IIbIoTuKphIMI2LnlqUrjmduusRvXyC5WekjBkMj5cRgZmM2P6RsEciF0eyR2P8x
+6AUo9DMw9vIQ9sCWgSW0fISzkdci0ncM5ORQRe1PsvmYHIPlEDsy353Lyu2MlLxo
+gxdARUFu9hBEok0JCrSXWsLQIEXHGlzSYj9v4zy0y4J84+I9upqDaoYE1a7ga1xq
+o45szflyH+vi1OxGK5USBDbUA/wocgdnT95+xniliIct2QdifKaE65Wb2NpCsRZt
+qSYbi5Cyxg6kQY7+OT/3DoPpxXnR9pFP1JZdzNitwMN5zFLhZsuAlEASLMdcr06A
+6UYJTlO9AgMBAAECggEARFynLTus0o4zZkC8JGLVNuu5xFaf4Zzpu6RS18lK/vpt
+5askDZSQ8rd/ENRg6tdEqQmKsWDwghAp4sMfiTJ4AjFfLWlDnbLU0HPcpS+D3xWj
+ixfDrhwa0ZttQ+gPTMb6tsgT5++EXU33mZHLSUhW357ZKsJtLZJiqiepd3NheOzN
+IAMry3eHvF85lBhGobfCq+GuRmKLOv9Lt44JqEPl8xox67inDw0TgqnOA9TB4FWw
+8dfFwet6NPEZEYKWD+oy1N57ZKXWZlx0jrW3jlQ0BMJcgfEAzxkigOGpB/7WELC0
+b4im8xZEXnXtY+K8B/hX2QB+OKzLM3WL8lxX//N3AQKBgQDtWlfzCAm6PjoLGUR+
+K83E8dN1ySXL8j2YQR3CMo4wCOTNsDcltrDyEOUEU6FQK8UwRNHR6B1gGVcYcF/5
+3Ca1VJ1okN432z4a57zdmIDCqbeh3NNU8uZwyxLnMe9R5+/JvmjL+q7ISWpKkGnf
+1CqzwByNa8zN3QOiZSCIkfKw/QKBgQDfOloITaakoUXWw1VHo93bl6ogEUrlXDPo
+SvI3lNq01WcZWZmpqTMC2Kk2Pix23/RilP8HkOkGwZWcjB1et4qGKVkQkGYJ5GHJ
+zd6uGQMXD+YwdlU0o3SQ0wZc97L7/FkNaQioiDaiIODK2GCL4NK/dDVu94+fngHw
+ZMWB3vYJwQKBgQCousm89iDcKjJfA3Zib0dXU0Ys/HKHGkzZOKksDX5w/VGSO0vo
+3ofJfWMhAUay1HrYhoPWQbjoQPteXzyLRgqqa11/IUUn1g6/V7A2o5wdRkNJqM7/
+G7Hfyy1D94aW5lfbRiX/o9SugyoxmZn6STyWDeL+Uf0E97IGtvc6vu4VDQKBgF2m
+1nTbVwmEm49BffrDVeW12GsBtkFJkIFpR/tnmOX7DfkFrUEPulX8Xeli5jatOJNP
+XTtoYUszVjhKVFwTdqtYl4QqgJSv2xLWKxExbylywykbzB18YgAMeIPya4XqVdYZ
+dcd29izIzGZtpvuoQ+KMt4oplHjrynZ3YKFe0CxBAoGAYpwYIxIQFWOQj5yf2k46
+PJqHnbriWycMA9y3d6si4IkgktPU6E7PyLHHJ0MpsoL94UwyvOxzFd5e2dvT7uNX
+h3Ht+dXjQZRZj7vMwDpKyOc77VXCE6igoyocOmR/1L/xsR9RLrIsKu+y8mE72ne9
+QgH4J6mmGOQbc/oOtE8h/+c=
+-----END PRIVATE KEY-----

+ 24 - 0
src/main/resources/cert/wx_cert.pem

@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIIEFDCCAvygAwIBAgIUWEZm735UYUQKGHFDrDUwguoe3bgwDQYJKoZIhvcNAQEL
+BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
+FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
+Q0EwHhcNMjQwODA2MDIwMDA1WhcNMjkwODA1MDIwMDA1WjBuMRgwFgYDVQQDDA9U
+ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl
+bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGEwJDTjERMA8GA1UEBwwIU2hlblpo
+ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA5WH40BjyMOOY+3Gw
+HevmtPFDaMH4MpnttmoPsZea4msfshXb1zPQdsyDgqKf0YL/V1zEqyk/moLa3n2B
+m+X8mbRNmkXLqsLzFmodYh5+xYU02KwWwOtRgp5EVmPtyaSxZ3atDPLMvSmhgoGn
+3yXPDQ6i/gyKlwb1jzyAVY1AJ+KHJSNMCiZvhQtakupPoNXHjxuKTg9OUU714sjk
+jfDwCgV1LKyY1BxdwP/E6esV+9MLSLEHhWmfclwLsVC1CDNmqD5/rNQZjCJ8fFgw
+EYTaYsS0lasqGoyfYcx5JgUNNmvkLbFy4g2uh5mdCscdZ9paoVApnBSfKQJ2d3TN
+JedtAgMBAAGjgbkwgbYwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gwgZsGA1UdHwSB
+kzCBkDCBjaCBiqCBh4aBhGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMv
+aXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4
+RUJEMiZzZz1IQUNDNDcxQjY1NDIyRTEyQjI3QTlEMzNBODdBRDFDREY1OTI2RTE0
+MDM3MTANBgkqhkiG9w0BAQsFAAOCAQEAWMuDs4DUzjHI1QLA6XXcN38oeMEAM0l7
+cIhKJguXmOE1oPwNSf6hkixG3r6VsSCT5PVRRotQ2XHmWQvqaIfziHgzMxE9kUKn
+jtamP1Gdauleth/OTTD4sRts2WS8DGMZ4CUlUV7yR4OJ7UFllMDMPMv7C5HVrq7Q
+XZs3DgF00lWLxris68uf7dZ5yOxT2AU8+F6bRWgwhGZPxZ/lVLtyzs31W7PJ0MMb
+GUjQKEtCiqHcsOJnKLj0gAYsrRQB1SKUbpjFJbXXGT39ZGkQp1GJa5r7p/Eu2XEP
+LRL2jbk9T26MgUc1OlItAn/uyhgi7qkMa2mSbP7YXzVC9f/FevUN2w==
+-----END CERTIFICATE-----