expanded disbursement endpoint

This commit was merged in pull request #10.
This commit is contained in:
Chinenye Nmoh
2025-06-09 20:31:32 +01:00
parent 3e4fad5418
commit e7279a8c65
6 changed files with 55 additions and 5 deletions
+9 -1
View File
@@ -2,7 +2,7 @@ from marshmallow import Schema, fields
class DisbursementSchema(Schema): class DisbursementSchema(Schema):
transactionId = fields.Str(required=False, allow_none=True) transactionId = fields.Str(required=False, allow_none=True)
FbnTransactionId = fields.Str(required=False, allow_none=True) fbnTransactionId = fields.Str(required=False, allow_none=True)
debtId = fields.Str(required=False, allow_none=True) debtId = fields.Str(required=False, allow_none=True)
customerId = fields.Str(required=False, allow_none=True) customerId = fields.Str(required=False, allow_none=True)
accountId = fields.Str(required=False, allow_none=True) accountId = fields.Str(required=False, allow_none=True)
@@ -14,6 +14,7 @@ class DisbursementSchema(Schema):
collectAmountVAT = fields.Float(required=True) collectAmountVAT = fields.Float(required=True)
countryId = fields.Str(required=False, allow_none=True) countryId = fields.Str(required=False, allow_none=True)
comment = fields.Str(required=False, allow_none=True) comment = fields.Str(required=False, allow_none=True)
class DisburseLoanResponseSchema(Schema): class DisburseLoanResponseSchema(Schema):
@@ -31,5 +32,12 @@ class DisburseLoanResponseSchema(Schema):
countryId = fields.Str(allow_none=True) countryId = fields.Str(allow_none=True)
responseCode = fields.Str(allow_none=True) responseCode = fields.Str(allow_none=True)
responseMessage = fields.Str(allow_none=True) responseMessage = fields.Str(allow_none=True)
disburseMessage = fields.Str(allow_none=True)
disburseDate = fields.Str(allow_none=True)
disburseVerify = fields.Str(allow_none=True)
disburseDescription = fields.Str(allow_none=True)
verifyResult = fields.Str(allow_none=True)
verifyDescription = fields.Str(allow_none=True)
+5 -1
View File
@@ -18,4 +18,8 @@ class TransactionVerifyResponseSchema(Schema):
providedAmount = fields.Float(required=True) providedAmount = fields.Float(required=True)
collectedAmount = fields.Float(required=True) collectedAmount = fields.Float(required=True)
transactionId = fields.Str(allow_none=True) transactionId = fields.Str(allow_none=True)
transactionType = fields.Str(allow_none=True) transactionType = fields.Str(allow_none=True)
disburseVerify = fields.Str(allow_none=True)
verifyDescription = fields.Str(allow_none=True)
verifyResult = fields.Str(allow_none=True)
+6 -2
View File
@@ -2,6 +2,7 @@ from flask import request, jsonify
from marshmallow import ValidationError from marshmallow import ValidationError
from app.utils.logger import logger from app.utils.logger import logger
from app.api.schemas.disbursement import DisbursementSchema, DisburseLoanResponseSchema from app.api.schemas.disbursement import DisbursementSchema, DisburseLoanResponseSchema
import datetime
class DisbursementService: class DisbursementService:
@staticmethod @staticmethod
@@ -26,7 +27,7 @@ class DisbursementService:
# For demo purposes, we simulate a response using the validated data # For demo purposes, we simulate a response using the validated data
response_data = { response_data = {
"transactionId": validated_data.get("transactionId"), "transactionId": validated_data.get("transactionId"),
"FbnTransactionId": validated_data.get("FbnTransactionId"), # Example or generated value "fbnTransactionId": validated_data.get("fbnTransactionId"), # Example or generated value
"debtId": validated_data.get("debtId"), "debtId": validated_data.get("debtId"),
"customerId": validated_data.get("customerId"), "customerId": validated_data.get("customerId"),
"accountId": validated_data.get("accountId"), "accountId": validated_data.get("accountId"),
@@ -38,7 +39,10 @@ class DisbursementService:
"collectAmountVAT": validated_data.get("collectAmountVAT"), "collectAmountVAT": validated_data.get("collectAmountVAT"),
"countryId": validated_data.get("countryId"), "countryId": validated_data.get("countryId"),
"responseCode": "00", # success code example "responseCode": "00", # success code example
"responseMessage": "Loan Request Completed Successfully!" "responseMessage": "Loan Request Completed Successfully!",
"disburseDate": datetime.datetime.now().isoformat(),
"disburseResult": "00",
"disburseDescription": "Loan Request Completed Successfully!",
} }
# Serialize response # Serialize response
+5 -1
View File
@@ -6,6 +6,7 @@ from app.api.schemas.transaction_verify import (
TransactionVerifySchema, TransactionVerifySchema,
TransactionVerifyResponseSchema TransactionVerifyResponseSchema
) )
import datetime
class TransactionVerifyService: class TransactionVerifyService:
@@ -37,7 +38,10 @@ class TransactionVerifyService:
"providedAmount": 0.0, "providedAmount": 0.0,
"collectedAmount": 7.50, "collectedAmount": 7.50,
"transactionId": validated_data.get("transactionId"), "transactionId": validated_data.get("transactionId"),
"transactionType": validated_data.get("transactionType") "transactionType": validated_data.get("transactionType"),
"disburseVerify": datetime.datetime.now().isoformat(),
"verifyResult": "00",
"verifyDescription": "Collect Status retrieved successfully.",
} }
# Validate and serialize response with TransactionVerifyResponseSchema # Validate and serialize response with TransactionVerifyResponseSchema
@@ -70,6 +70,22 @@
"type": "string", "type": "string",
"example": "Loan Request Completed Successfully!", "example": "Loan Request Completed Successfully!",
"nullable": true "nullable": true
},
"disburseDate": {
"type": "string",
"format": "date-time",
"example": "2023-10-01T12:00:00Z",
"nullable": true
},
"disburseResult": {
"type": "string",
"example": "00",
"nullable": true
},
"disburseDescription": {
"type": "string",
"example": "Loan Request Completed Successfully!",
"nullable": true
} }
}, },
"required": [ "required": [
@@ -38,6 +38,20 @@
"transactionType": { "transactionType": {
"type": "string", "type": "string",
"example": "Disbursement" "example": "Disbursement"
},
"disburseVerify":{
"type": "string",
"format": "date-time",
"example": "2023-10-01T12:00:00Z",
"nullable": true
},
"verifyResult": {
"type": "string",
"example": "Success"
},
"verifyDescription": {
"type": "string",
"example": "Disbursement was verified and collection completed."
} }
}, },
"required": [ "required": [