From 700368d0511913dff6985bb9cadedcdaabd96003 Mon Sep 17 00:00:00 2001 From: I578439 Date: Fri, 13 Nov 2026 14:34:14 +0530 Subject: [PATCH] fix: correct MIME type detection and skip duplicate file part in multipart upload - Use .equals() instead of == for string comparison in getMediaType (== compares references, always false for string literals at runtime) - Fix MIME types: image/jpeg for images, application/pdf for PDFs (was image/jpg and image/pdf) - Add .toLowerCase() so extension matching is case-insensitive - Skip the "file" key in the form-data loop to prevent adding it twice (once as a proper file part, once as a plain string) --- src/main/java/com/razorpay/ApiUtils.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/razorpay/ApiUtils.java b/src/main/java/com/razorpay/ApiUtils.java index 20778b08..fec6dc11 100755 --- a/src/main/java/com/razorpay/ApiUtils.java +++ b/src/main/java/com/razorpay/ApiUtils.java @@ -238,11 +238,11 @@ private static X509TrustManager createDefaultTrustManager() throws NoSuchAlgorit private static String getMediaType(String fileName){ int extensionIndex = fileName.lastIndexOf('.'); - String extenionName = fileName.substring(extensionIndex + 1); - if(extenionName == "jpg" | extenionName == "jpeg" | extenionName == "png" | extenionName == "jfif"){ - return "image/jpg"; + String extensionName = fileName.substring(extensionIndex + 1).toLowerCase(); + if(extensionName.equals("jpg") || extensionName.equals("jpeg") || extensionName.equals("png") || extensionName.equals("jfif")){ + return "image/jpeg"; } - return "image/pdf"; + return "application/pdf"; } private static RequestBody fileRequestBody(JSONObject requestObject){ @@ -258,6 +258,7 @@ private static RequestBody fileRequestBody(JSONObject requestObject){ Iterator iterator = requestObject.keys(); while (iterator.hasNext()) { Object key = iterator.next(); + if (key.toString().equals("file")) continue; Object value = requestObject.get(key.toString()); multipartBodyBuilder.addFormDataPart((String) key, (String) value); }