From fc3b81782490c6b008c878dc2cc31d180d4922f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 29 Oct 2025 17:59:24 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E8=A7=A3=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/market/service/impl/BaseWx.java | 48 +++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/BaseWx.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/BaseWx.java index 435af52a6..37e9c9744 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/BaseWx.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/BaseWx.java @@ -167,14 +167,56 @@ public abstract class BaseWx { String signature = request.getHeader("Wechatpay-Signature"); String result = request.getReader().lines().reduce((a, b) -> a + b).orElse(""); log.info("参数信息: timestamp: {}, nonce: {}, serialNo: {}, signature: {}, result: {}", timestamp, nonce, serialNo, signature, result); - String resp = WxPayKit.verifyNotify(serialNo, result, signature, nonce, timestamp, config.getApiV3Key(), new ByteArrayInputStream(config.pubKey.getBytes(StandardCharsets.UTF_8))); - log.info("解密明文{}", resp); - return JSONObject.parseObject(resp); + boolean b = WxPayKit.verifySignature(signature, result, nonce, timestamp, config.pubKey); + if (!b) { + throw new CzgException("验签失败"); + } + JSONObject jsonObject = JSONObject.parseObject(result); + JSONObject resource = jsonObject.getJSONObject("resource"); + String associatedData = resource.getString("associated_data"); + String ciphertext = resource.getString("ciphertext"); + String nonceStr = resource.getString("nonce"); + + String plainText = decryptToString(associatedData, nonceStr, ciphertext); + log.info("充值支付通知明文 {}", plainText); + return JSONObject.parseObject(plainText); } catch (Exception e) { throw new RuntimeException(e); } } + public static void main(String[] args) throws Exception { + String key = "-----BEGIN PUBLIC KEY-----\n" + + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7sdF3xWrWPCYRjwulCpY\n" + + "KeER1+deVRLWqsMxibarVXt9+hJpMwZtqyEW5/KQrK8CIpefEVuiZuHM5SXZsL7X\n" + + "xWi24WY3wMqxnnrbcVmw4IA4OhVekajXnU4EBMqHzRXTwQpkv0qLfp7J5wEify7u\n" + + "y02j0t38k57IToCEwOY5cP/1vt/bZPJOpeefldaOnmIncF6xklywdGztncSMIzli\n" + + "rs1+Jnbrjx9DnhWmBJSa6yWL7sZjBa8YvZBvQBBHC1b82LFawjwKHKDBZlT+kFnp\n" + + "aboDHKhR4+DbXREkwlU4In70tcMUbitkKt6T2qpErskeKy2uF4iUDQxo3NGMC4AX\n" + + "vQIDAQAB\n" + + "-----END PUBLIC KEY-----"; + String timestamp = "1761731254"; + String nonce = "z0PqTTIyTE6vLkZWzX3RmBlS5yodUY5J"; + String serialNo = "PUB_KEY_ID_0117300912032025102500112177000200"; + String signature = "yMBK0e54XUS9lzmgeuWzg0Xw4UIQg3/f2o3BreByipvnaJcb2eiSU/gdL8MnJWXgXYaVE/c5NgXAsagbGQhgKS6RQ37ZlUhWTun+jFGfFi5V2Djd01JaSMHHzGHWXApIV8DJnJlr2uCeJtX3U0SNXovWxlkeId8SPFPQRK4DNIjiDJsmzlB33VZ+ma8QtGsUg5E+dP9wz42xfUbGpnMjjKuyK7sUeSrgRaSqQ6fb1sUNGy1yaCs/ZS/KpMJL3d3eZbB9cRIP7eanlHx11Xi8tboLPmyVSTm01LHYdCBAAQzK3QlbtCMaK0dzpFepEABpVt42ajH0GfVPsyvep7k5/A=="; + String result = "{\"id\":\"3946093d-5053-5d9d-9821-3b52acccac06\",\"create_time\":\"2025-10-29T17:47:29+08:00\",\"resource_type\":\"encrypt-resource\",\"event_type\":\"MCHTRANSFER.BILL.FINISHED\",\"summary\":\"商家转账单据终态通知\",\"resource\":{\"original_type\":\"mch_payment\",\"algorithm\":\"AEAD_AES_256_GCM\",\"ciphertext\":\"mWr+e0tYehbdV7nIMXeFTe/moALfDh+ky48XWBd0Oc0mb99JhTnHgbfIfRijNdTPKm1NMAO0/l4oJ78rCiLnanW2u2Dx7Rme9JjJ41PqXaQKuQeNSaEez2yK1uwagpu1bWL5fStNXFHDpgzzd+2fFPCv+9pTWD6BhbPq5L2WKjOpFNe4wsl4cozUS2hzyU63nv+QbIlEOyQgXu/cXc0fU4AKUO1mApnBILIA9pHNJaDZiktfyYKHz01u39iVnVJSWDKllWKIEeEhlzKrQvP1vdArj/ifvaymlwYRyFmRz2TNkYxw4LLEWj772wFEibRZTp0mbW/78gDP/yxOreIgdI75VrxJx46JYfT9lWHD7BTDH/c97CnWQlRq2EH4E14Es4bQYqnuWJIrrB6XZ1duOvVS86hP2dq2nMFKYN6niRKeTfCJ3yRU0A==\",\"associated_data\":\"mch_payment\",\"nonce\":\"PwmzF2cR2MRD\"}}"; + boolean b = WxPayKit.verifySignature(signature, result, nonce, timestamp, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7sdF3xWrWPCYRjwulCpY\n" + + "KeER1+deVRLWqsMxibarVXt9+hJpMwZtqyEW5/KQrK8CIpefEVuiZuHM5SXZsL7X\n" + + "xWi24WY3wMqxnnrbcVmw4IA4OhVekajXnU4EBMqHzRXTwQpkv0qLfp7J5wEify7u\n" + + "y02j0t38k57IToCEwOY5cP/1vt/bZPJOpeefldaOnmIncF6xklywdGztncSMIzli\n" + + "rs1+Jnbrjx9DnhWmBJSa6yWL7sZjBa8YvZBvQBBHC1b82LFawjwKHKDBZlT+kFnp\n" + + "aboDHKhR4+DbXREkwlU4In70tcMUbitkKt6T2qpErskeKy2uF4iUDQxo3NGMC4AX\n" + + "vQIDAQAB"); + + JSONObject jsonObject = JSONObject.parseObject(result); + JSONObject resource = jsonObject.getJSONObject("resource"); + String associatedData = resource.getString("associated_data"); + String ciphertext = resource.getString("ciphertext"); + String nonceStr = resource.getString("nonce"); + + + } + public String decryptToString(String associatedData, String nonceStr, String ciphertext) { AesUtil aesUtil = new AesUtil(config.getApiV3Key().getBytes(StandardCharsets.UTF_8)); try { From 3a9dc2be14266bed24a7499898d606fb70ebfaf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 29 Oct 2025 18:00:18 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E8=A7=A3=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkDistributionUserServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java index 6a7f337f2..826ad401e 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java @@ -592,7 +592,7 @@ public class MkDistributionUserServiceImpl extends ServiceImpl Date: Wed, 29 Oct 2025 18:06:59 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=8F=90=E7=8E=B0=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkDistributionUserServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java index 826ad401e..89b0a62a0 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java @@ -110,10 +110,11 @@ public class MkDistributionUserServiceImpl extends ServiceImpl result = new HashMap<>(5); result.put("totalIncome", centerTopVO == null ? 0.0 : centerTopVO.getTotalIncome()); result.put("pendingIncome", centerTopVO == null ? 0.0 : centerTopVO.getPendingIncome()); - result.put("cashOutAmount", centerTopVO == null ? 0.0 : centerTopVO.getUnCashOutAmount()); + result.put("cashOutAmount", userInfo.getDistributionAmount()); result.put("activates", activates(userId, 1, 5)); result.put("unActivates", unActivates(userId, 1, 3)); From 1bbe60f41339d2572709dad6d110cf73d656bceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 29 Oct 2025 18:10:46 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=8F=90=E7=8E=B0=E5=AE=9E=E5=90=8D?= =?UTF-8?q?=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/impl/MkDistributionUserServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java index 89b0a62a0..638491a1e 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkDistributionUserServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdcardUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; import com.czg.account.entity.ShopInfo; import com.czg.account.entity.ShopUser; @@ -659,6 +660,10 @@ public class MkDistributionUserServiceImpl extends ServiceImpl