From 2deecf1bf2852a3fd5ee1d9bbb95911aaa7ebac2 Mon Sep 17 00:00:00 2001 From: androidlover5842 Date: Sun, 1 Feb 2026 10:12:40 +0530 Subject: [PATCH] Accept legacy settings payload for Razorpay --- .../controller/RazorpaySettingsController.kt | 18 ++++++++++++++---- .../controller/dto/RazorpayDtos.kt | 11 ++++++++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/RazorpaySettingsController.kt b/src/main/kotlin/com/android/trisolarisserver/controller/RazorpaySettingsController.kt index 2d53142..876dcdb 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/RazorpaySettingsController.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/RazorpaySettingsController.kt @@ -59,19 +59,29 @@ class RazorpaySettingsController( val property = propertyRepo.findById(propertyId).orElseThrow { ResponseStatusException(HttpStatus.NOT_FOUND, "Property not found") } + val keyId = request.keyId?.trim()?.ifBlank { null } ?: request.merchantKey?.trim()?.ifBlank { null } + val keySecret = request.keySecret?.trim()?.ifBlank { null } + ?: run { + val prefer256 = request.useSalt256 == true + val candidate = if (prefer256) request.salt256 else request.salt32 + candidate?.trim()?.ifBlank { null } ?: request.salt256?.trim()?.ifBlank { null } ?: request.salt32?.trim()?.ifBlank { null } + } + if (keyId == null || keySecret == null) { + throw ResponseStatusException(HttpStatus.BAD_REQUEST, "keyId/keySecret required") + } val existing = settingsRepo.findByPropertyId(propertyId) val updated = if (existing == null) { RazorpaySettings( property = property, - keyId = request.keyId.trim(), - keySecret = request.keySecret.trim(), + keyId = keyId, + keySecret = keySecret, webhookSecret = request.webhookSecret?.trim(), isTest = request.isTest ?: false, updatedAt = OffsetDateTime.now() ) } else { - existing.keyId = request.keyId.trim() - existing.keySecret = request.keySecret.trim() + existing.keyId = keyId + existing.keySecret = keySecret existing.webhookSecret = request.webhookSecret?.trim() request.isTest?.let { existing.isTest = it } existing.updatedAt = OffsetDateTime.now() diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt index 544e95f..406ffb2 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RazorpayDtos.kt @@ -3,10 +3,15 @@ package com.android.trisolarisserver.controller.dto import java.util.UUID data class RazorpaySettingsUpsertRequest( - val keyId: String, - val keySecret: String, + val keyId: String? = null, + val keySecret: String? = null, val webhookSecret: String? = null, - val isTest: Boolean? = null + val isTest: Boolean? = null, + // Backward-compatible aliases (older clients sending PayU-shaped payloads) + val merchantKey: String? = null, + val salt32: String? = null, + val salt256: String? = null, + val useSalt256: Boolean? = null ) data class RazorpaySettingsResponse(