From eb2c49c4f1c03dd11eaef7a89c01f367627c595d Mon Sep 17 00:00:00 2001 From: cho Date: Tue, 27 Jan 2026 17:03:37 +0900 Subject: [PATCH] =?UTF-8?q?Tossbank=20=EC=97=85=EB=AC=B4=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=88=98=EC=A0=95=20=EC=9A=94=EA=B1=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit header에 guid, traceId 추가해야함. --- .../HttpClient5AdapterFilterFactory.java | 3 + .../filter/HttpClient5AdapterFilterType.java | 1 + .../client/filter/TOSSBankBodyFilter.java | 71 +++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java diff --git a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java index 4a0aeae..2721707 100644 --- a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java +++ b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterFactory.java @@ -45,6 +45,9 @@ public class HttpClient5AdapterFilterFactory { case NICECREDIT: filter = new NICECreditFilter(); break; + case TOSSBANKBODY: + filter = new TOSSBankBodyFilter(); + break; case TOSSBANK: filter = new TOSSBankFilter(); break; diff --git a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java index 150f9c5..51b1638 100644 --- a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java +++ b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/HttpClient5AdapterFilterType.java @@ -10,6 +10,7 @@ public enum HttpClient5AdapterFilterType { NAVERFIN, NICECREDIT, TOSSBANK, + TOSSBANKBODY, ASYNCRESPONSE, ALLHEADER, UNKNOWN; diff --git a/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java new file mode 100644 index 0000000..a72c6c0 --- /dev/null +++ b/src/main/java/com/eactive/eai/custom/kjb/adapter/http/client/filter/TOSSBankBodyFilter.java @@ -0,0 +1,71 @@ +package com.eactive.eai.custom.kjb.adapter.http.client.filter; + +import java.util.Properties; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.adapter.http.dynamic.HttpAdapterServiceKey; +import com.eactive.eai.common.TransactionContextKeys; +import com.eactive.eai.common.util.Logger; +import com.nimbusds.jose.shaded.gson.JsonObject; + +public class TOSSBankBodyFilter implements HttpClientAdapterFilter, HttpAdapterServiceKey { + + protected static Logger logger = Logger.getLogger(Logger.LOGGER_ADAPTER); + + public static final String BIZ_HEADER = "header"; + public static final String GUID = "guid"; + public static final String TRACEID = "traceId"; + + @Override + public Object doPreFilter(String adptGrpName, String adptName, Properties prop, Object message, Properties tempProp) + throws Exception { + + JSONObject bizJsonStr = null; + + if (message instanceof String) { + + bizJsonStr = (JSONObject) JSONValue.parse((String) message); + + if ( bizJsonStr == null ) return message; //json string이 아님. + + if (bizJsonStr.containsKey(BIZ_HEADER)) { + JSONObject bizHeader = (JSONObject) bizJsonStr.get(BIZ_HEADER); + + putBizHeaderData(bizHeader, tempProp); + + }else { + + JSONObject bizHeader = new JSONObject(); + bizJsonStr.put(BIZ_HEADER, bizHeader); + putBizHeaderData(bizHeader, tempProp); + + } + + } + + return bizJsonStr != null ? bizJsonStr.toJSONString() : message; + } + + static private void putBizHeaderData(JSONObject bizHeader, Properties tempProp) { + + String traceId = tempProp.getProperty(TransactionContextKeys.TRANSACTION_UUID, ""); + + String guid = tempProp.getProperty(TransactionContextKeys.GUID, ""); + + bizHeader.put(GUID, guid); + logger.debug("Processing Key [" + GUID + "], value [" + guid + "]"); + + bizHeader.put(TRACEID, traceId); + logger.debug("Processing Key [" + TRACEID + "], value [" + traceId + "]"); + } + + @Override + public Object doPostFilter(String adptGrpName, String adptName, Properties prop, Object message, + Properties tempProp) throws Exception { + // TODO Auto-generated method stub + return message; + } + +}