From 2c13a6f34253ee595eedac139ab2c4b05a26bbc2 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 11 一月 2022 12:18:02 +0800
Subject: [PATCH] 优化代码
---
service-api/src/main/java/com/java110/api/smo/payment/adapt/plutuspay/PlutusPayNotifyAdapt.java | 52 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/service-api/src/main/java/com/java110/api/smo/payment/adapt/plutuspay/PlutusPayNotifyAdapt.java b/service-api/src/main/java/com/java110/api/smo/payment/adapt/plutuspay/PlutusPayNotifyAdapt.java
index a1793e6..e87bb8b 100644
--- a/service-api/src/main/java/com/java110/api/smo/payment/adapt/plutuspay/PlutusPayNotifyAdapt.java
+++ b/service-api/src/main/java/com/java110/api/smo/payment/adapt/plutuspay/PlutusPayNotifyAdapt.java
@@ -15,18 +15,21 @@
*/
package com.java110.api.smo.payment.adapt.plutuspay;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.properties.WechatAuthProperties;
import com.java110.api.smo.DefaultAbstractComponentSMO;
import com.java110.api.smo.payment.adapt.IPayNotifyAdapt;
+import com.java110.core.factory.CommunitySettingFactory;
+import com.java110.core.factory.PlutusFactory;
import com.java110.core.factory.WechatFactory;
import com.java110.dto.smallWeChat.SmallWeChatDto;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.PayUtil;
-import org.apache.commons.codec.digest.DigestUtils;
+import org.bouncycastle.util.encoders.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -77,25 +80,42 @@
* @throws Exception
*/
public String confirmPayFee(String param, String wId) {
- JSONObject resJson = new JSONObject();
- resJson.put("errCode", "INTERNAL_ERROR");
- resJson.put("errMsg", "澶辫触");
+
+ JSONObject json = JSON.parseObject(param);
+
+ String signature = json.getString("signature");
+ String content = json.getString("content");
+
+ String appId = WechatFactory.getAppId(wId);
+ SmallWeChatDto smallWeChatDto = getSmallWechat(appId);
+ if (smallWeChatDto == null) {
+ throw new IllegalArgumentException("鏈厤缃叕浼楀彿鎴栬�呭皬绋嬪簭淇℃伅");
+ }
+ String publicKey = CommunitySettingFactory.getRemark(smallWeChatDto.getObjId(),"PLUTUS_PUBLIC_KEY");
+ //楠岀
+ Boolean verify = PlutusFactory.verify256(param, org.bouncycastle.util.encoders.Base64.decode(signature),publicKey);
+ //楠岀鎴愬姛
+ if (!verify) {
+ throw new IllegalArgumentException("鏀粯澶辫触绛惧悕澶辫触");
+ }
+ //瑙e瘑
+ byte[] bb = PlutusFactory.decrypt(Base64.decode(content), PlutusFactory.SECRET_KEY);
+ //鏈嶅姟鍣ㄨ繑鍥炲唴瀹�
+ String paramOut = new String(bb);
try {
- JSONObject map = JSONObject.parseObject(param);
+ JSONObject map = JSONObject.parseObject(paramOut);
logger.info("銆愰摱鑱旀敮浠樺洖璋冦�� 鍥炶皟鏁版嵁锛� \n" + map);
//鏇存柊鏁版嵁
int result = confirmPayFee(map, wId);
if (result > 0) {
//鏀粯鎴愬姛
- resJson.put("errCode", "SUCCESS");
- resJson.put("errMsg", "鎴愬姛");
+ return "SUCCESS";
}
} catch (Exception e) {
logger.error("閫氱煡澶辫触", e);
- resJson.put("result_msg", "閴存潈澶辫触");
+ return "ERROR";
}
-
- return resJson.toJSONString();
+ return "ERROR";
}
@@ -122,20 +142,12 @@
paramMap.put(key, map.get(key).toString());
}
//String sign = PayUtil.createChinaUmsSign(paramMap, smallWeChatDto.getPayPassword());
- String preSign = map.getString("preSign");
- String text = preSign + smallWeChatDto.getPayPassword();
- System.out.println("寰呯鍚嶅瓧绗︿覆锛�" + text);
- String sign = DigestUtils.sha256Hex(getContentBytes(text)).toUpperCase();
-
- if (!sign.equals(map.get("sign"))) {
- throw new IllegalArgumentException("閴存潈澶辫触");
- }
//JSONObject billPayment = JSONObject.parseObject(map.getString("billPayment"));
- String outTradeNo = map.get("merOrderId").toString();
+ String outTradeNo = map.get("outTransId").toString();
//鏌ヨ鐢ㄦ埛ID
JSONObject paramIn = new JSONObject();
- paramIn.put("oId", outTradeNo.substring(4));
+ paramIn.put("oId", outTradeNo);
String url = "fee.payFeeConfirm";
responseEntity = this.callCenterService(getHeaders("-1"), paramIn.toJSONString(), url, HttpMethod.POST);
--
Gitblit v1.8.0