diff --git a/CHANGELOG.md b/CHANGELOG.md index 82df01ad4..2911c191e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +### v3.45.0 (2026-03-09) +* * * +### Bug Fixes: +- Fixed JSON request body serialization to send valid JSON payload for API requests. + ### v3.44.0 (2026-03-02) * * * ### New Resources: diff --git a/VERSION b/VERSION index faf0dcbb0..ff3ff28f6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.44.0 +3.45.0 diff --git a/pom.xml b/pom.xml index 1f6f8cdda..da3bd9845 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.chargebee chargebee-java - 3.44.0 + 3.45.0 jar diff --git a/src/main/java/com/chargebee/Environment.java b/src/main/java/com/chargebee/Environment.java index 61cb4704e..c1c212e5e 100644 --- a/src/main/java/com/chargebee/Environment.java +++ b/src/main/java/com/chargebee/Environment.java @@ -37,19 +37,19 @@ public class Environment { public static final String CHARSET = "UTF-8"; public static final String API_VERSION = "v2"; - - public static final String LIBRARY_VERSION = "3.44.0"; + + public static final String LIBRARY_VERSION = "3.45.0"; private final String apiBaseUrl; private static Environment defaultEnv; // singleton - + private RequestInterceptor reqInterceptor; - + public Environment(String siteName, String apiKey) { this(siteName, apiKey, null); } - + public Environment(String siteName, String apiKey, RequestInterceptor reqInterceptor) { this.apiKey = apiKey; this.siteName = siteName; @@ -59,15 +59,15 @@ public Environment(String siteName, String apiKey, RequestInterceptor reqInterce this.apiBaseUrl = proto + "://" + siteName + "." + domainSuffix + "/api/" + API_VERSION; this.retryConfig = RetryConfig.defaultConfig(); } - + public static void configure(String siteName, String apikey) { Environment.defaultEnv = new Environment(siteName, apikey); } - + public static void reqInterceptor(RequestInterceptor reqInterceptor) { defaultConfig().reqInterceptor = reqInterceptor; } - + public RequestInterceptor reqInterceptor() { return reqInterceptor; } diff --git a/src/main/java/com/chargebee/internal/Params.java b/src/main/java/com/chargebee/internal/Params.java index 083b97b2d..e2bfaf2d0 100644 --- a/src/main/java/com/chargebee/internal/Params.java +++ b/src/main/java/com/chargebee/internal/Params.java @@ -11,15 +11,18 @@ public class Params { private Map m = new HashMap(); + private Map rawMap = new HashMap(); public void add(String paramName, Object value) { if(value == null) { throw new RuntimeException("The param {" + paramName + "} cannot be null"); } + rawMap.put(paramName, value); m.put(paramName, toValStr(value)); } public void addOpt(String paramName, Object value) { + rawMap.put(paramName, value); m.put(paramName, value != null ? toValStr(value) : ""); } @@ -45,7 +48,7 @@ public static Object toValStr(Object value) { return value.toString(); } else if (c == Date.class) { return new SimpleDateFormat("yyyy-MM-dd").format((Date)value); - } + } else if(c.isEnum()) { return value.toString().toLowerCase(); } else if(c == Timestamp.class) { @@ -54,16 +57,16 @@ else if(c.isEnum()) { List origList = ((List)value); List l = new ArrayList(origList.size()); for (Object item : origList) { - l.add((String)toValStr(item)); + l.add((String)toValStr(item)); } return l; } else if(value instanceof Object[]){ Object[] origList = ((Object[])value); List l = new ArrayList(origList.length); for (Object item : origList) { - l.add((String)toValStr(item)); + l.add((String)toValStr(item)); } - return l; + return l; } else if(value instanceof JSONObject) { return value.toString(); } else if(value instanceof JSONArray) { @@ -74,7 +77,12 @@ else if(c.isEnum()) { throw new RuntimeException("Type [" + c.getName() + "] not handled"); } } - + + public String toJson() { + JSONObject jsonObject = new JSONObject(rawMap); + return jsonObject.toString(); + } + public static Long asUnixTimestamp(Timestamp ts) { return ts.getTime() / 1000; } diff --git a/src/main/java/com/chargebee/internal/Request.java b/src/main/java/com/chargebee/internal/Request.java index dad5609d9..b65e83d92 100644 --- a/src/main/java/com/chargebee/internal/Request.java +++ b/src/main/java/com/chargebee/internal/Request.java @@ -79,7 +79,7 @@ private static Result _request(Environment env, Request req) throws IOExcepti return HttpUtil.post(url, ((BatchRequest) req).buildRequest(), req.headers, env, req.isIdempotent); } else if(req.isJsonRequest){ req.headers.put(HttpUtil.CONTENT_TYPE_HEADER_NAME, "application/json;charset=" + Environment.CHARSET); - return HttpUtil.post(url, req.params.toString(), req.headers, env, req.isIdempotent); + return HttpUtil.post(url, req.params.toJson(), req.headers, env, req.isIdempotent); }else { return HttpUtil.post(url, req.params(), req.headers, env, req.isIdempotent); }