From fe3b0f4a3c46892f08421dd4c4d0937fb8a87f93 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期二, 06 六月 2023 17:55:10 +0800
Subject: [PATCH] 优化代码

---
 service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgPaymentFactoryAdapt.java |  153 ++++++++++-----------------------------------------
 1 files changed, 30 insertions(+), 123 deletions(-)

diff --git a/service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgPaymentFactoryAdapt.java b/service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgPaymentFactoryAdapt.java
index 6e3a9f8..b461926 100644
--- a/service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgPaymentFactoryAdapt.java
+++ b/service-acct/src/main/java/com/java110/acct/payment/adapt/bbgpay/BbgPaymentFactoryAdapt.java
@@ -45,15 +45,11 @@
  * VALUES ( '9070', '鍖楅儴婀鹃摱琛屾敮浠�', '鍖楅儴婀鹃摱琛屾敮浠�', '2022-08-16 15:51:55', 'community_setting_key', 'setting_type');
  * <p>
  * INSERT INTO `TT`.`community_setting_key` (`key_id`, `setting_type`, `setting_name`, `setting_key`, `remark`, `create_time`, `status_cd`)
- * VALUES ('82', '9070', 'mchtNo_RSA2', 'mchtNo_RSA2', 'mchtNo_RSA2', '2021-10-10 21:25:46', '0');
+ * VALUES ('82', '9070', 'mchtNo_SM4', 'mchtNo_SM4', 'mchtNo_SM4', '2021-10-10 21:25:46', '0');
  * INSERT INTO `TT`.`community_setting_key` (`key_id`, `setting_type`, `setting_name`, `setting_key`, `remark`, `create_time`, `status_cd`)
- * VALUES ('88', '9070', 'productNo_RSA2', 'productNo_RSA2', 'productNo_RSA2', '2021-10-10 21:25:46', '0');
+ * VALUES ('88', '9070', 'productNo_SM4', 'productNo_SM4', 'productNo_SM4', '2021-10-10 21:25:46', '0');
  * INSERT INTO `TT`.`community_setting_key` (`key_id`, `setting_type`, `setting_name`, `setting_key`, `remark`, `create_time`, `status_cd`)
- * VALUES ('83', '9070', 'mcht_PrivateKey_RSA2', 'mcht_PrivateKey_RSA2', '鍊艰濉啓1 绉侀挜 璇峰~鍐欏湪澶囨敞涓�', '2021-10-10 21:25:46', '0');
- * INSERT INTO `TT`.`community_setting_key` (`key_id`, `setting_type`, `setting_name`, `setting_key`, `remark`, `create_time`, `status_cd`)
- * VALUES ('84', '9070', 'bank_PublicKey_RSA2', 'bank_PublicKey_RSA2', '鍊艰濉啓1 鍏挜 璇峰~鍐欏湪澶囨敞涓� ', '2021-10-10 21:25:46', '0');
- * INSERT INTO `TT`.`community_setting_key` (`key_id`, `setting_type`, `setting_name`, `setting_key`, `remark`, `create_time`, `status_cd`)
- * VALUES ('85', '9070', 'opToken_RSA2', 'opToken_RSA2', 'opToken_RSA2', '2021-10-10 21:25:46', '0');
+ * VALUES ('83', '9070', 'publicKey_SM4', 'publicKey_SM4', '鍊艰濉啓1 绉侀挜 璇峰~鍐欏湪澶囨敞涓�', '2021-10-10 21:25:46', '0');
  * // 浠ヤ笅鏁版嵁鍏堟煡璇㈡槸鍚﹀瓨鍦� 瀛樺湪鍒欎慨鏀� 涓嶅瓨鍦ㄦ坊鍔�
  * INSERT INTO `TT`.`c_mapping` (`domain`, `name`, `key`, `value`, `remark`, `create_time`, `status_cd`)
  * VALUES ('WECHAT', '琚壂鏀粯鍘傚', 'PAY_QR_ADAPT', 'qrCodeBbgPaymentAdapt', '', '2023-02-18 18:47:14', '0');
@@ -89,7 +85,7 @@
 
     private static String SIGN_TYPE = "RSA2";// 鍔犲瘑绠楁硶锛歋M4銆丷SA2
 
-    private static String gzhPayUrl = "https://epaytest.bankofbbg.com/www/corepaycer/WxGzhPay";
+    private static String gzhPayUrl = "https://mbank.bankofbbg.com/www/corepaycer/WxGzhPay";
 
     @Autowired
     private ISmallWechatV1InnerServiceSMO smallWechatV1InnerServiceSMOImpl;
@@ -159,47 +155,17 @@
         );
 
 
-        if ("SUCCESS".equals(resMap.get("return_code")) && "SUCCESS".equals(resMap.get("result_code"))) {
-            if (TRADE_TYPE_JSAPI.equals(tradeType)) {
-
-                resultMap.put("appId", smallWeChatDto.getAppId());
-                resultMap.put("timeStamp", PayUtil.getCurrentTimeStamp());
-                resultMap.put("nonceStr", PayUtil.makeUUID(32));
-                resultMap.put("package", "prepay_id=" + resMap.get("prepay_id"));
-                resultMap.put("signType", "MD5");
-                resultMap.put("sign", PayUtil.createSign(resultMap, smallWeChatDto.getPayPassword()));
-            } else if (TRADE_TYPE_APP.equals(tradeType)) {
-                resultMap.put("appId", smallWeChatDto.getAppId());
-                resultMap.put("timeStamp", PayUtil.getCurrentTimeStamp());
-                resultMap.put("nonceStr", PayUtil.makeUUID(32));
-                resultMap.put("partnerid", smallWeChatDto.getMchId());
-                resultMap.put("prepayid", resMap.get("prepay_id"));
-                //resultMap.put("signType", "MD5");
-                resultMap.put("sign", PayUtil.createSign(resultMap, smallWeChatDto.getPayPassword()));
-            } else if (TRADE_TYPE_NATIVE.equals(tradeType)) {
-                resultMap.put("prepayId", resMap.get("prepay_id"));
-                resultMap.put("codeUrl", resMap.get("code_url"));
-            }
-            resultMap.put("code", "0");
-            resultMap.put("msg", "涓嬪崟鎴愬姛");
-            logger.info("銆愬皬绋嬪簭鏀粯銆戠粺涓�涓嬪崟鎴愬姛锛岃繑鍥炲弬鏁�:" + resultMap + "===notifyUrl===" + notifyUrl);
-        } else {
-            resultMap.put("code", resMap.get("return_code"));
-            resultMap.put("msg", resMap.get("return_msg"));
-            logger.info("銆愬皬绋嬪簭鏀粯銆戠粺涓�涓嬪崟澶辫触锛屽け璐ュ師鍥�:" + resMap.get("return_msg") + "===code===" + resMap.get("return_code") + "===notifyUrl===" + notifyUrl);
-        }
-        return resultMap;
+        return resMap;
     }
 
 
     private Map<String, String> java110UnifieldOrder(String feeName, String orderNum,
                                                      String tradeType, double payAmount, String openid,
                                                      SmallWeChatDto smallWeChatDto, String notifyUrl) throws Exception {
-        String mchtNo_RSA2 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "mchtNo_RSA2");
-        String productNo_RSA2 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "productNo_RSA2");
-        String opToken_RSA2 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "opToken_RSA2");
-        String mcht_PrivateKey_RSA2 = CommunitySettingFactory.getRemark(smallWeChatDto.getObjId(), "mcht_PrivateKey_RSA2");
-        String bank_PublicKey_RSA2 = CommunitySettingFactory.getRemark(smallWeChatDto.getObjId(), "bank_PublicKey_RSA2");
+
+        String mchtNo_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "mchtNo_SM4");
+        String productNo_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "productNo_SM4");
+        String publicKey_SM4 = CommunitySettingFactory.getValue(smallWeChatDto.getObjId(), "publicKey_SM4");
 
         if (feeName.length() > 127) {
             feeName = feeName.substring(0, 126);
@@ -207,8 +173,8 @@
 
         Map<String, Object> params = new HashMap<>();
         params.put("version", VERSION);// 鐗堟湰鍙� 1.0
-        params.put("mcht_no", mchtNo_RSA2);// 鏀舵鍟嗘埛缂栧彿
-        params.put("product_no", productNo_RSA2);// 浜у搧缂栧彿
+        params.put("mcht_no", mchtNo_SM4);// 鏀舵鍟嗘埛缂栧彿
+        params.put("product_no", productNo_SM4);// 浜у搧缂栧彿
         params.put("biz_type", "WX_GZH");// 涓氬姟绫诲瀷
         params.put("tran_no", String.valueOf(System.nanoTime()));// 鍟嗘埛娴佹按
         params.put("code", "");// 鎺堟潈鐮�
@@ -218,62 +184,16 @@
         params.put("ware_name", feeName);// 鍟嗗搧鍚嶇О
         params.put("ware_describe", "");// 鍟嗘埛鏁版嵁鍖�
         params.put("asyn_url", notifyUrl + "?wId=" + WechatFactory.getWId(smallWeChatDto.getAppId()));// 閫氱煡鍦板潃
-        String json = JsonUtil.mapToJson(params);
-        System.out.println("鍔犲瘑鍓嶏細" + json);
-
-        Map<String, Object> soreMap = JsonUtil.sortMapByKey(params);
-
-        // 寮�濮嬪姞瀵�
-        byte[] en = AesEncrypt.encryptByte(json, "utf-8", opToken_RSA2);
-        if (en == null || en.length <= 0) {
-            System.err.println("鍔犲瘑澶辫触");
-            throw new IllegalArgumentException("鍔犲瘑澶辫触");
-        }
-        String encryptBase64Str = AesEncrypt.parseByte2HexStr(en);
-        System.out.println("鍔犲瘑鍚庯細" + encryptBase64Str);
-
-        String signtBase64Str = CAUtil.rsa256Sign(json, "utf-8", mcht_PrivateKey_RSA2);
-        System.out.println("鍔犵涓诧細" + signtBase64Str);
-
-        Map<String, Object> signParams = new HashMap<>();
-        signParams.put("mcht_no", mchtNo_RSA2);// 鏀舵鍟嗘埛缂栧彿
-        signParams.put("sign_type", SIGN_TYPE);
-        signParams.put("sign", signtBase64Str);
-        signParams.put("enc_data", encryptBase64Str);// 鍔犲瘑鍚庤姹傚弬鏁�
-
-        String requestParams = JsonUtil.mapToJson(signParams);
-        System.out.println("鏈�缁堣姹傚弬鏁帮細" + requestParams);
-        System.err.println("");
-        String returnResult = HttpRequestUtil.httpPost(gzhPayUrl, requestParams);
-        System.out.println("鏀粯缁撴灉杩斿洖鍊�(鍘熸枃):" + returnResult);
-        if (returnResult == null) {
-            System.err.println("閫氶亾鍝嶅簲寮傚父");
-            throw new IllegalArgumentException("閫氶亾鍝嶅簲寮傚父");
-        }
-        // 寮�濮嬭В瀵�
-        Map<String, Object> responseParams = JsonUtil.jsonToMap(returnResult);
-        // 寮�濮嬭В瀵�
-        String decryptBase64Str = (String) responseParams.get("enc_data");
-        String verifyBase64Str = (String) responseParams.get("sign");
-        byte[] bt = AesEncrypt.parseHexStr2Byte(decryptBase64Str);
-        byte[] decrypt = AesEncrypt.decryptByte(bt, opToken_RSA2);
-        if (decrypt == null) {
-            System.err.println("瑙e瘑澶辫触");
-            throw new IllegalArgumentException("瑙e瘑澶辫触");
-        }
-        boolean isSuccess = CAUtil.rsa256Verify(decrypt, verifyBase64Str, bank_PublicKey_RSA2);
-        System.out.println("鏁版嵁楠岀锛�" + isSuccess);
-        if (!isSuccess) {
-            System.err.println("楠岀澶辫触");
-            throw new IllegalArgumentException("楠岀澶辫触");
-        }
-        String decryParams = new String(decrypt);
-        System.out.println("鏀粯缁撴灉杩斿洖鍊�(瑙e瘑鍚�):" + decryParams);
-
+        String decryParams = EncryptDecryptFactory.execute(smallWeChatDto.getObjId(), gzhPayUrl, params);
         JSONObject paramOut = JSONObject.parseObject(decryParams);
+        if (!"SUCCESS".equals(paramOut.getString("status"))
+                        || !"SUCCESS".equals(paramOut.getString("deal_status"))) {
+            throw new IllegalArgumentException("鏀粯澶辫触" + paramOut.getString("return_message"));
+        }
+
         if (!"0000".equals(paramOut.getString("return_code"))
-                || !"SUCCESS".equals(paramOut.getString("status"))
-                || !"SUCCESS".equals(paramOut.getString("deal_status"))) {
+                && !"0001".equals(paramOut.getString("return_code"))
+        ) {
             throw new IllegalArgumentException("鏀粯澶辫触" + paramOut.getString("return_message"));
         }
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
@@ -294,39 +214,26 @@
     @Override
     public PaymentOrderDto java110NotifyPayment(NotifyPaymentOrderDto notifyPaymentOrderDto) {
 
-        String opToken_RSA2 = CommunitySettingFactory.getValue(notifyPaymentOrderDto.getCommunityId(), "opToken_RSA2");
-        String bank_PublicKey_RSA2 = CommunitySettingFactory.getRemark(notifyPaymentOrderDto.getCommunityId(), "bank_PublicKey_RSA2");
+        String privateKey_SM4 = CommunitySettingFactory.getValue(notifyPaymentOrderDto.getCommunityId(), "privateKey_SM4");
 
         String resXml = "";
         String param = notifyPaymentOrderDto.getParam();
         PaymentOrderDto paymentOrderDto = new PaymentOrderDto();
-        Map<String, Object> responseParams = JsonUtil.jsonToMap(param);
         // 寮�濮嬭В瀵�
-        String decryptBase64Str = (String) responseParams.get("enc_data");
-        String verifyBase64Str = (String) responseParams.get("sign");
-        byte[] bt = AesEncrypt.parseHexStr2Byte(decryptBase64Str);
-        byte[] decrypt = new byte[0];
-        try {
-            decrypt = AesEncrypt.decryptByte(bt, opToken_RSA2);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+        Map<String, Object> responseParams = JsonUtil.jsonToMap(param);
+        if (!responseParams.containsKey("enc_data")) {
+            System.err.println("閫氱煡澶辫触");
+            throw new IllegalArgumentException("閫氱煡澶辫触");
         }
-        if (decrypt == null) {
+        String decryptStr = (String) responseParams.get("enc_data");
+        String messageKey = (String) responseParams.get("message_key");
+        String secretKey = GmUtil.decryptSm2(messageKey, privateKey_SM4);
+        if (secretKey == null) {
             System.err.println("瑙e瘑澶辫触");
             throw new IllegalArgumentException("瑙e瘑澶辫触");
         }
-        boolean isSuccess = false;
-        try {
-            isSuccess = CAUtil.rsa256Verify(decrypt, verifyBase64Str, bank_PublicKey_RSA2);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        System.out.println("鏁版嵁楠岀锛�" + isSuccess);
-        if (!isSuccess) {
-            System.err.println("楠岀澶辫触");
-            throw new IllegalArgumentException("楠岀澶辫触");
-        }
-        String decryParams = new String(decrypt);
+        String decryParams = GmUtil.decryptSm4(decryptStr, secretKey);
+
         System.out.println("鏀粯缁撴灉杩斿洖鍊�(瑙e瘑鍚�):" + decryParams);
 
         JSONObject paramOut = JSONObject.parseObject(decryParams);

--
Gitblit v1.8.0