improved polling logi

This commit is contained in:
Prince
2026-06-12 23:48:47 +02:00
parent 573e4b154c
commit 5d3c9a46a3
3 changed files with 49 additions and 59 deletions

View File

@@ -144,19 +144,17 @@ public class ProviderService {
return meta.get("hotProductId");
}
public String getExternalId(String providerId, String productUuid) {
public String getExternalId(String providerId, String productName) {
try {
UUID productUid = UUID.fromString(productUuid);
List<SBZProductDto> products = getProviderProducts(providerId);
return products.stream()
.filter(product -> product.getUid().equals(productUid))
.filter(product -> product.getName().equals(productName))
.map(SBZProductDto::getExternalId)
.findFirst()
.orElse(null);
} catch (IllegalArgumentException e) {
log.error("Invalid UUID format: " + productUuid, e);
} catch (Exception e) {
log.error("Failed to fetch external Id: " + productName, e);
return null;
}
}

View File

@@ -14,6 +14,7 @@ import zw.qantra.tm.domain.enums.CurrencyType;
import zw.qantra.tm.domain.enums.RequestType;
import zw.qantra.tm.domain.enums.Status;
import zw.qantra.tm.domain.models.AdditionalData;
import zw.qantra.tm.domain.models.Provider;
import zw.qantra.tm.domain.models.Transaction;
import zw.qantra.tm.domain.services.*;
import zw.qantra.tm.domain.services.processors.TransactionProcessorInterface;
@@ -170,13 +171,16 @@ public class HotRechargeIntegrationProcessor implements TransactionProcessorInte
// do this for Econet bundles
if(providerId.equals("111")) {
String productCode = providerService.getExternalId(providerId, transaction.getProductUid());
Provider provider = providerService.getProviderRepository()
.findByClientId(transaction.getBillClientId());
String productCode = providerService.getExternalId(provider.getId().toString(), transaction.getBillProductName());
List<Map<String, String>> rechargeOptions = new ArrayList<>();
Map<String, String> option = new LinkedHashMap<>();
option.put("Name", "ProductCode");
option.put("ParameterType", "String");
option.put("Value", productCode);
rechargeOptions.add(option);
request.put("RechargeOptions", rechargeOptions);
}
logger.info("Sending recharge request: {}", request);