Merge branch 'feature/add-observability' into 'release/0.0.1-RELEASE'

Feature/add observability

See merge request vusumuzik/qpay-transaction-manager-spring-boot!6
This commit is contained in:
Vusumuzi Khoza
2025-11-28 10:16:17 +00:00
6 changed files with 47 additions and 1 deletions

View File

@@ -31,4 +31,6 @@ public class BillPaymentDto {
private String creditPhone; private String creditPhone;
private String billName; private String billName;
private String trace; private String trace;
private String billProductName;
private String productUid;
} }

View File

@@ -0,0 +1,26 @@
package zw.qantra.tm.domain.services.processors.confirmations;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import zw.qantra.tm.domain.dtos.BillPaymentDto;
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.Transaction;
import zw.qantra.tm.domain.services.AdditionalDataService;
import zw.qantra.tm.domain.services.TransactionService;
import zw.qantra.tm.domain.services.processors.TransactionProcessorInterface;
import zw.qantra.tm.rest.RestService;
import zw.qantra.tm.utils.Utils;
import java.util.LinkedHashMap;
@Service("CONFIRM_ECONET_BROADBAND")
public class EconetBroadbandConfirmationProcessor extends EconetConfirmationProcessor{
public EconetBroadbandConfirmationProcessor(RestService restService, TransactionService transactionService, AdditionalDataService additionalDataService) {
super(restService, transactionService, additionalDataService);
}
}

View File

@@ -55,6 +55,8 @@ public class EconetConfirmationProcessor implements TransactionProcessorInterfac
.creditAccount(transaction.getCreditAccount()) // customer's phone number .creditAccount(transaction.getCreditAccount()) // customer's phone number
.creditPhone(transaction.getCreditPhone()) // customer's contact phone number .creditPhone(transaction.getCreditPhone()) // customer's contact phone number
.billName(transaction.getBillName()) .billName(transaction.getBillName())
.billProductName(transaction.getBillProductName())
.productUid(transaction.getProductUid())
.build(); .build();
String url = aggregatorUrl + "/merchant/aggregation/transaction"; String url = aggregatorUrl + "/merchant/aggregation/transaction";

View File

@@ -0,0 +1,13 @@
package zw.qantra.tm.domain.services.processors.confirmations;
import org.springframework.stereotype.Service;
import zw.qantra.tm.domain.services.AdditionalDataService;
import zw.qantra.tm.domain.services.TransactionService;
import zw.qantra.tm.rest.RestService;
@Service("CONFIRM_NETONE")
public class NetoneConfirmationProcessor extends EconetConfirmationProcessor{
public NetoneConfirmationProcessor(RestService restService, TransactionService transactionService, AdditionalDataService additionalDataService) {
super(restService, transactionService, additionalDataService);
}
}

View File

@@ -77,6 +77,8 @@ public class StewardIntegrationProcessor implements TransactionProcessorInterfac
.creditAccount(transaction.getCreditAccount()) // customer's zesa meter number .creditAccount(transaction.getCreditAccount()) // customer's zesa meter number
.creditPhone(transaction.getCreditPhone()) // customer's contact phone number .creditPhone(transaction.getCreditPhone()) // customer's contact phone number
.billName(transaction.getBillName()) .billName(transaction.getBillName())
.billProductName(transaction.getBillProductName())
.productUid(transaction.getProductUid())
.build(); .build();
if(Objects.equals(powertelClientId, transaction.getBillClientId())) { if(Objects.equals(powertelClientId, transaction.getBillClientId())) {

View File

@@ -225,7 +225,8 @@ public class TransactionWorkflow extends WorkflowDefinition {
// polling has already happened // polling has already happened
if(transaction.getPollingStatus() == Status.SUCCESS){ if(transaction.getPollingStatus() == Status.SUCCESS){
return NextAction.moveToState(DONE, return NextAction.moveToState(DONE,
"Polling already complete"); "Purchase invoice payment generated - id: " + transaction.getErpPurchasePaymentRef() + ". " +
"Not proceeding because polling already complete");
} }
return NextAction.moveToState(PURCHASE_INVOICE_PAYMENT_SUCCESS, return NextAction.moveToState(PURCHASE_INVOICE_PAYMENT_SUCCESS,
"Purchase invoice payment generated - id: " + transaction.getErpPurchasePaymentRef()); "Purchase invoice payment generated - id: " + transaction.getErpPurchasePaymentRef());