[fix]: Response messages
This commit is contained in:
@@ -1,2 +1,4 @@
|
||||
__pycache__/
|
||||
.env
|
||||
app.log
|
||||
.DS_Store
|
||||
@@ -1,138 +0,0 @@
|
||||
2025-03-21 08:07:50,689 - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
|
||||
* Running on all addresses (0.0.0.0)
|
||||
* Running on http://127.0.0.1:5000
|
||||
* Running on http://172.21.0.2:5000
|
||||
2025-03-21 08:07:50,689 - INFO - [33mPress CTRL+C to quit[0m
|
||||
2025-03-21 08:25:00,902 - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
|
||||
* Running on all addresses (0.0.0.0)
|
||||
* Running on http://127.0.0.1:5000
|
||||
* Running on http://172.21.0.2:5000
|
||||
2025-03-21 08:25:00,903 - INFO - [33mPress CTRL+C to quit[0m
|
||||
2025-03-21 08:27:59,768 - INFO - before_request middleware triggered
|
||||
2025-03-21 08:27:59,772 - ERROR - Unauthorized access: Missing API key.
|
||||
2025-03-21 08:27:59,774 - INFO - 172.21.0.1 - - [21/Mar/2025 08:27:59] "GET /health HTTP/1.1" 200 -
|
||||
2025-03-21 08:27:59,921 - INFO - 172.21.0.1 - - [21/Mar/2025 08:27:59] "[33mGET /favicon.ico HTTP/1.1[0m" 404 -
|
||||
2025-03-21 08:28:47,107 - INFO - before_request middleware triggered
|
||||
2025-03-21 08:28:47,108 - ERROR - Unauthorized access: Missing API key.
|
||||
2025-03-21 08:28:47,111 - INFO - 172.21.0.1 - - [21/Mar/2025 08:28:47] "POST /Disbursement HTTP/1.1" 200 -
|
||||
2025-03-21 08:30:01,346 - INFO - before_request middleware triggered
|
||||
2025-03-21 08:30:01,350 - INFO - Processing Disbursement request
|
||||
2025-03-21 08:30:01,352 - ERROR - Validation Error: {'countryId': ['Missing data for required field.'], 'collectAmountMgtFee': ['Missing data for required field.'], 'requestId': ['Missing data for required field.'], 'debtId': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'productId': ['Missing data for required field.'], 'msisdn': ['Unknown field.'], 'channel': ['Unknown field.'], 'lienAmount': ['Unknown field.'], '$type': ['Unknown field.'], 'countryCode': ['Unknown field.']}
|
||||
2025-03-21 08:30:01,353 - INFO - 172.21.0.1 - - [21/Mar/2025 08:30:01] "POST /Disbursement HTTP/1.1" 200 -
|
||||
2025-03-21 08:34:16,957 - INFO - before_request middleware triggered
|
||||
2025-03-21 08:34:16,960 - INFO - Processing Disbursement request
|
||||
2025-03-21 08:34:16,970 - ERROR - Validation Error: {'countryId': ['Missing data for required field.'], 'collectAmountMgtFee': ['Missing data for required field.'], 'requestId': ['Missing data for required field.'], 'debtId': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'productId': ['Missing data for required field.'], 'msisdn': ['Unknown field.'], 'channel': ['Unknown field.'], 'lienAmount': ['Unknown field.'], '$type': ['Unknown field.'], 'countryCode': ['Unknown field.']}
|
||||
2025-03-21 08:34:16,973 - INFO - 172.21.0.1 - - [21/Mar/2025 08:34:16] "POST /Disbursement HTTP/1.1" 200 -
|
||||
2025-03-21 08:38:52,829 - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
|
||||
* Running on all addresses (0.0.0.0)
|
||||
* Running on http://127.0.0.1:5000
|
||||
* Running on http://172.21.0.2:5000
|
||||
2025-03-21 08:38:52,829 - INFO - [33mPress CTRL+C to quit[0m
|
||||
2025-03-21 08:44:44,426 - INFO - before_request middleware triggered
|
||||
2025-03-21 08:44:44,430 - ERROR - Exception on /Disbursement [POST]
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
|
||||
rv = self.handle_user_exception(e)
|
||||
File "/usr/local/lib/python3.9/site-packages/flask_cors/extension.py", line 165, in wrapped_function
|
||||
return cors_after_request(app.make_response(f(*args, **kwargs)))
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1482, in full_dispatch_request
|
||||
rv = self.preprocess_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1974, in preprocess_request
|
||||
rv = self.ensure_sync(before_func)()
|
||||
File "/app/app/routes/routes.py", line 24, in require_api_key_middleware
|
||||
return require_api_key()
|
||||
TypeError: require_api_key() missing 1 required positional argument: 'f'
|
||||
2025-03-21 08:44:44,446 - INFO - 172.21.0.1 - - [21/Mar/2025 08:44:44] "[35m[1mPOST /Disbursement HTTP/1.1[0m" 500 -
|
||||
2025-03-21 09:02:19,681 - INFO - before_request middleware triggered
|
||||
2025-03-21 09:02:19,683 - ERROR - Exception on /Disbursement [POST]
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
|
||||
rv = self.handle_user_exception(e)
|
||||
File "/usr/local/lib/python3.9/site-packages/flask_cors/extension.py", line 165, in wrapped_function
|
||||
return cors_after_request(app.make_response(f(*args, **kwargs)))
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1482, in full_dispatch_request
|
||||
rv = self.preprocess_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1974, in preprocess_request
|
||||
rv = self.ensure_sync(before_func)()
|
||||
File "/app/app/routes/routes.py", line 24, in require_api_key_middleware
|
||||
return require_api_key()
|
||||
TypeError: require_api_key() missing 1 required positional argument: 'f'
|
||||
2025-03-21 09:02:19,685 - INFO - 172.21.0.1 - - [21/Mar/2025 09:02:19] "[35m[1mPOST /Disbursement HTTP/1.1[0m" 500 -
|
||||
2025-03-21 09:02:24,680 - INFO - before_request middleware triggered
|
||||
2025-03-21 09:02:24,681 - ERROR - Exception on /Disbursement [POST]
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
|
||||
rv = self.handle_user_exception(e)
|
||||
File "/usr/local/lib/python3.9/site-packages/flask_cors/extension.py", line 165, in wrapped_function
|
||||
return cors_after_request(app.make_response(f(*args, **kwargs)))
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1482, in full_dispatch_request
|
||||
rv = self.preprocess_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1974, in preprocess_request
|
||||
rv = self.ensure_sync(before_func)()
|
||||
File "/app/app/routes/routes.py", line 24, in require_api_key_middleware
|
||||
return require_api_key()
|
||||
TypeError: require_api_key() missing 1 required positional argument: 'f'
|
||||
2025-03-21 09:02:24,683 - INFO - 172.21.0.1 - - [21/Mar/2025 09:02:24] "[35m[1mPOST /Disbursement HTTP/1.1[0m" 500 -
|
||||
2025-03-21 09:03:00,120 - INFO - before_request middleware triggered
|
||||
2025-03-21 09:03:00,121 - ERROR - Exception on /Disbursement [POST]
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
|
||||
rv = self.handle_user_exception(e)
|
||||
File "/usr/local/lib/python3.9/site-packages/flask_cors/extension.py", line 165, in wrapped_function
|
||||
return cors_after_request(app.make_response(f(*args, **kwargs)))
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1482, in full_dispatch_request
|
||||
rv = self.preprocess_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1974, in preprocess_request
|
||||
rv = self.ensure_sync(before_func)()
|
||||
File "/app/app/routes/routes.py", line 24, in require_api_key_middleware
|
||||
return require_api_key()
|
||||
TypeError: require_api_key() missing 1 required positional argument: 'f'
|
||||
2025-03-21 09:03:00,122 - INFO - 172.21.0.1 - - [21/Mar/2025 09:03:00] "[35m[1mPOST /Disbursement HTTP/1.1[0m" 500 -
|
||||
2025-03-21 09:03:03,022 - INFO - before_request middleware triggered
|
||||
2025-03-21 09:03:03,023 - ERROR - Exception on /Disbursement [POST]
|
||||
Traceback (most recent call last):
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2190, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1486, in full_dispatch_request
|
||||
rv = self.handle_user_exception(e)
|
||||
File "/usr/local/lib/python3.9/site-packages/flask_cors/extension.py", line 165, in wrapped_function
|
||||
return cors_after_request(app.make_response(f(*args, **kwargs)))
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1482, in full_dispatch_request
|
||||
rv = self.preprocess_request()
|
||||
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1974, in preprocess_request
|
||||
rv = self.ensure_sync(before_func)()
|
||||
File "/app/app/routes/routes.py", line 24, in require_api_key_middleware
|
||||
return require_api_key()
|
||||
TypeError: require_api_key() missing 1 required positional argument: 'f'
|
||||
2025-03-21 09:03:03,024 - INFO - 172.21.0.1 - - [21/Mar/2025 09:03:03] "[35m[1mPOST /Disbursement HTTP/1.1[0m" 500 -
|
||||
2025-03-21 09:03:36,056 - INFO - [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
|
||||
* Running on all addresses (0.0.0.0)
|
||||
* Running on http://127.0.0.1:5000
|
||||
* Running on http://172.21.0.2:5000
|
||||
2025-03-21 09:03:36,056 - INFO - [33mPress CTRL+C to quit[0m
|
||||
2025-03-21 09:03:43,372 - INFO - before_request middleware triggered
|
||||
2025-03-21 09:03:43,373 - INFO - Processing Disbursement request
|
||||
2025-03-21 09:03:43,374 - ERROR - Validation Error: {'collectAmountMgtFee': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'productId': ['Missing data for required field.'], 'countryId': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'debtId': ['Missing data for required field.'], 'requestId': ['Missing data for required field.'], 'countryCode': ['Unknown field.'], 'lienAmount': ['Unknown field.'], 'msisdn': ['Unknown field.'], '$type': ['Unknown field.'], 'channel': ['Unknown field.']}
|
||||
2025-03-21 09:03:43,375 - INFO - 172.21.0.1 - - [21/Mar/2025 09:03:43] "POST /Disbursement HTTP/1.1" 200 -
|
||||
2025-03-21 09:16:24,496 - INFO - before_request middleware triggered
|
||||
2025-03-21 09:16:24,496 - INFO - Processing Disbursement request
|
||||
2025-03-21 09:16:24,498 - ERROR - Validation Error: {'productId': ['Missing data for required field.'], 'debtId': ['Missing data for required field.'], 'collectAmountMgtFee': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'requestId': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'countryId': ['Missing data for required field.'], 'channel': ['Unknown field.'], '$type': ['Unknown field.'], 'msisdn': ['Unknown field.'], 'countryCode': ['Unknown field.'], 'lienAmount': ['Unknown field.']}
|
||||
2025-03-21 09:40:40,601 - ERROR - Unauthorized access: Invalid API key.
|
||||
2025-03-21 09:41:09,390 - INFO - Processing Disbursement request
|
||||
2025-03-21 09:41:09,396 - ERROR - Validation Error: {'requestId': ['Missing data for required field.'], 'productId': ['Missing data for required field.'], 'collectAmountMgtFee': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'countryId': ['Missing data for required field.'], 'debtId': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'channel': ['Unknown field.'], 'lienAmount': ['Unknown field.'], '$type': ['Unknown field.'], 'msisdn': ['Unknown field.'], 'countryCode': ['Unknown field.']}
|
||||
2025-03-21 09:41:13,582 - ERROR - Unauthorized access: Missing App-ID.
|
||||
2025-03-21 09:41:16,993 - INFO - Processing Disbursement request
|
||||
2025-03-21 09:41:16,995 - ERROR - Validation Error: {'requestId': ['Missing data for required field.'], 'productId': ['Missing data for required field.'], 'collectAmountMgtFee': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'countryId': ['Missing data for required field.'], 'debtId': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'channel': ['Unknown field.'], 'lienAmount': ['Unknown field.'], '$type': ['Unknown field.'], 'msisdn': ['Unknown field.'], 'countryCode': ['Unknown field.']}
|
||||
2025-03-21 09:48:19,845 - ERROR - Unauthorized access: Missing API key.
|
||||
2025-03-21 10:32:19,196 - ERROR - Unauthorized access: Missing API key.
|
||||
2025-03-21 10:46:47,209 - ERROR - Unauthorized access: Missing API key.
|
||||
2025-03-21 11:05:50,287 - INFO - Processing Disbursement request
|
||||
2025-03-21 11:05:50,290 - ERROR - Validation Error: {'debtId': ['Missing data for required field.'], 'requestId': ['Missing data for required field.'], 'productId': ['Missing data for required field.'], 'provideAmount': ['Missing data for required field.'], 'collectAmountInsurance': ['Missing data for required field.'], 'collectAmountVAT': ['Missing data for required field.'], 'countryId': ['Missing data for required field.'], 'collectAmountMgtFee': ['Missing data for required field.'], 'msisdn': ['Unknown field.'], 'channel': ['Unknown field.'], 'lienAmount': ['Unknown field.'], 'countryCode': ['Unknown field.'], '$type': ['Unknown field.']}
|
||||
@@ -1,9 +0,0 @@
|
||||
from app.blueprints.rac_check import RACCheckService
|
||||
from app.blueprints.disbursement import DisbursementService
|
||||
from app.blueprints.collect_loan import CollectLoanService
|
||||
from app.blueprints.transaction_verify import TransactionVerifyService
|
||||
from app.blueprints.penal_charge import PenalChargeService
|
||||
from app.blueprints.revoke_enable_consent import RevokeEnableConsentService
|
||||
from app.blueprints.token_validation import TokenValidationService
|
||||
from app.blueprints.lien_check import LienCheckService
|
||||
from app.blueprints.new_transaction_check import NewTransactionCheckService
|
||||
@@ -2,13 +2,13 @@ from flask import jsonify
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
|
||||
def method_not_allowed(error):
|
||||
return ResponseHelper.method_not_allowed(message="Method Not Allowed")
|
||||
return jsonify({"message": "Method Not Allowed"}), 405
|
||||
|
||||
def not_found(error):
|
||||
return ResponseHelper.not_found(message="URL Not Found")
|
||||
return jsonify({"message": "Resource not found"}), 404
|
||||
|
||||
def bad_request(error):
|
||||
return ResponseHelper.bad_request(message="Bad Request")
|
||||
return jsonify({"message": "Bad Request"}), 400
|
||||
|
||||
def unsupported_media_type(error):
|
||||
return ResponseHelper.error(message="Unsupported Media Type", status_code=415)
|
||||
return jsonify({"message": "Unsupported Media Type"}), 415
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
from .verify_api_key import require_api_key
|
||||
from .app_id_checker import require_app_id
|
||||
from .request_validator import validate_json
|
||||
from .cors import enforce_json
|
||||
@@ -1,6 +1,5 @@
|
||||
from functools import wraps
|
||||
from flask import request
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
from flask import request, jsonify
|
||||
from app.utils.logger import logger
|
||||
import os
|
||||
|
||||
@@ -15,11 +14,12 @@ def require_app_id(f):
|
||||
|
||||
if not app_id:
|
||||
logger.error("Unauthorized access: Missing App-ID.")
|
||||
return ResponseHelper.unauthorized("Missing App-ID")
|
||||
return jsonify({"message": "Invalid request parameters"}), 400
|
||||
|
||||
|
||||
if app_id not in VALID_APP_ID:
|
||||
logger.error(f"Unauthorized access: Invalid App-ID {app_id}.")
|
||||
return ResponseHelper.unauthorized("Invalid App-ID")
|
||||
return jsonify({"message": "Invalid request parameters"}), 400
|
||||
|
||||
return f(*args, **kwargs)
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
from flask import request
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
from flask import request, jsonify
|
||||
|
||||
|
||||
def enforce_json():
|
||||
"""Middleware to enforce JSON Content-Type for incoming requests"""
|
||||
if request.method in ["POST", "PUT", "PATCH"] and request.content_type != "application/json":
|
||||
return ResponseHelper.error( message="Content-Type must be application/json")
|
||||
return jsonify({"message": "Invalid request parameters"}), 400
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# app/middlewares/encryption.py
|
||||
# from cryptography.fernet import Fernet
|
||||
# import os
|
||||
|
||||
# ENCRYPTION_KEY = os.getenv("ENCRYPTION_KEY", Fernet.generate_key())
|
||||
# cipher = Fernet(ENCRYPTION_KEY)
|
||||
|
||||
# def encryptdata(data):
|
||||
# """Encrypt sensitive data"""
|
||||
# return cipher.encrypt(data.encode()).decode()
|
||||
|
||||
# def decrypt_data(data):
|
||||
# """Decrypt sensitive data"""
|
||||
# return cipher.decrypt(data.encode()).decode()
|
||||
@@ -1,16 +0,0 @@
|
||||
from functools import wraps
|
||||
from flask import request
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
from app.utils.logger import logger
|
||||
|
||||
def validate_json(f):
|
||||
"""Decorator to ensure the request has a valid JSON body."""
|
||||
@wraps(f)
|
||||
def decorated_function(*args, **kwargs):
|
||||
if not request.is_json:
|
||||
logger.error("Invalid request: Request must be JSON.")
|
||||
return ResponseHelper.error(message="Request must be JSON", status_code=415)
|
||||
|
||||
return f(*args, **kwargs)
|
||||
|
||||
return decorated_function
|
||||
@@ -1,6 +1,5 @@
|
||||
from functools import wraps
|
||||
from flask import request
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
from flask import request, jsonify
|
||||
from app.utils.logger import logger
|
||||
import os
|
||||
|
||||
@@ -15,11 +14,11 @@ def require_api_key(f):
|
||||
|
||||
if not api_key:
|
||||
logger.error("Unauthorized access: Missing API key.")
|
||||
return ResponseHelper.unauthorized("Missing API key")
|
||||
return jsonify({"message": "Invalid request parameters"}), 400
|
||||
|
||||
if api_key != VALID_API_KEY:
|
||||
logger.error("Unauthorized access: Invalid API key.")
|
||||
return ResponseHelper.unauthorized("Invalid API key")
|
||||
return jsonify({"message": "Invalid request parameters"}), 400
|
||||
|
||||
return f(*args, **kwargs)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from flask import Blueprint, request, jsonify
|
||||
from app.blueprints import (
|
||||
from app.services import (
|
||||
RACCheckService,
|
||||
DisbursementService,
|
||||
CollectLoanService,
|
||||
|
||||
+13
-13
@@ -2,16 +2,16 @@ from marshmallow import Schema, fields
|
||||
|
||||
# Disbursement Schema
|
||||
class DisbursementSchema(Schema):
|
||||
requestId = fields.Str(required=True, data_key="requestId")
|
||||
debtId = fields.Str(required=True, data_key="debtId")
|
||||
transactionId = fields.Str(required=True, data_key="transactionId")
|
||||
customerId = fields.Str(required=True, data_key="customerId")
|
||||
accountId = fields.Str(required=True, data_key="accountId")
|
||||
productId = fields.Str(required=True, data_key="productId")
|
||||
provideAmount = fields.Float(required=True, data_key="provideAmount")
|
||||
collectAmountInterest = fields.Float(required=False, data_key="collectAmountInterest") # Optional
|
||||
collectAmountMgtFee = fields.Float(required=True, data_key="collectAmountMgtFee")
|
||||
collectAmountInsurance = fields.Float(required=True, data_key="collectAmountInsurance")
|
||||
collectAmountVAT = fields.Float(required=True, data_key="collectAmountVAT")
|
||||
countryId = fields.Str(required=True, data_key="countryId")
|
||||
comment = fields.Str(required=False, data_key="comment") # Optional
|
||||
requestId = fields.Str(required=True)
|
||||
debtId = fields.Str(required=True)
|
||||
transactionId = fields.Str(required=True)
|
||||
customerId = fields.Str(required=True)
|
||||
accountId = fields.Str(required=True)
|
||||
productId = fields.Str(required=True)
|
||||
provideAmount = fields.Float(required=True)
|
||||
collectAmountInterest = fields.Float(required=False) # Optional
|
||||
collectAmountMgtFee = fields.Float(required=True)
|
||||
collectAmountInsurance = fields.Float(required=True)
|
||||
collectAmountVAT = fields.Float(required=True)
|
||||
countryId = fields.Str(required=True)
|
||||
comment = fields.Str(required=False) # Optional
|
||||
@@ -2,7 +2,7 @@ from marshmallow import Schema, fields
|
||||
|
||||
# Lien Check Schema
|
||||
class LienCheckSchema(Schema):
|
||||
transactionId = fields.Str(required=True, metadata={"description": "Unique Identifier in Simbrella system"})
|
||||
customerId = fields.Str(required=True, metadata={"description": "Unique identifier of customer"})
|
||||
accountId = fields.Str(required=True, metadata={"description": "Unique identifier of account"})
|
||||
countryId = fields.Str(required=True, metadata={"description": 'Set to static value "01"'})
|
||||
transactionId = fields.Str(required=True)
|
||||
customerId = fields.Str(required=True)
|
||||
accountId = fields.Str(required=True)
|
||||
countryId = fields.Str(required=True)
|
||||
@@ -3,12 +3,12 @@ from marshmallow import Schema, fields
|
||||
|
||||
# Penal Charge Schema
|
||||
class PenalChargeSchema(Schema):
|
||||
transactionId = fields.Str(required=True, metadata={"description": "Unique identifier of transaction in Simbrella system"})
|
||||
fbnTransactionId = fields.Str(required=True, metadata={"description": "Unique id of the transaction received from FBN in Eligibility or Provision requests"})
|
||||
debtId = fields.Str(required=True, metadata={"description": "Unique identifier of providing loan in Simbrella system"})
|
||||
customerId = fields.Str(required=True, metadata={"description": "Unique identifier of a user"})
|
||||
accountId = fields.Str(required=True, metadata={"description": "Specific identifier of a user’s account"})
|
||||
penalCharge = fields.Decimal(required=True, metadata={"description": "Penalty amount that needs to be collected from user’s account"})
|
||||
lienAmount = fields.Decimal(required=True, metadata={"description": "Aggregated (summed up) lien amount"})
|
||||
countryId = fields.Str(required=True, metadata={"description": 'Set to static value "01"'})
|
||||
comment = fields.Str(required=False, metadata={"description": "Any additional comment for provided loan operation"})
|
||||
transactionId = fields.Str(required=True)
|
||||
fbnTransactionId = fields.Str(required=True)
|
||||
debtId = fields.Str(required=True)
|
||||
customerId = fields.Str(required=True)
|
||||
accountId = fields.Str(required=True)
|
||||
penalCharge = fields.Decimal(required=True)
|
||||
lienAmount = fields.Decimal(required=True)
|
||||
countryId = fields.Str(required=True)
|
||||
comment = fields.Str(required=False)
|
||||
|
||||
@@ -3,11 +3,11 @@ from marshmallow import Schema, fields
|
||||
|
||||
# Revoke Enable Consent Schema
|
||||
class RevokeEnableConsentSchema(Schema):
|
||||
transactionId = fields.Str(required=True, metadata={"description": "Unique identifier of transaction in Simbrella system"})
|
||||
fbnTransactionId = fields.Str(required=True, metadata={"description": "Unique id of the transaction received from FBN in CustomerConsentRequest"})
|
||||
customerId = fields.Str(required=True, metadata={"description": "Unique identifier of a user"})
|
||||
accountId = fields.Str(required=True, metadata={"description": "Specific identifier of a user’s account"})
|
||||
processTime = fields.DateTime(required=True, metadata={"description": "Date and time when consent request was processed"})
|
||||
consentType = fields.Str(required=True, metadata={"description": '“Enable” or “Revoke”'})
|
||||
countryId = fields.Str(required=True, metadata={"description": 'Set to static value "01"'})
|
||||
comment = fields.Str(required=False, metadata={"description": "Any additional comment for consent operation"})
|
||||
transactionId = fields.Str(required=True)
|
||||
fbnTransactionId = fields.Str(required=True)
|
||||
customerId = fields.Str(required=True)
|
||||
accountId = fields.Str(required=True)
|
||||
processTime = fields.DateTime(required=True)
|
||||
consentType = fields.Str(required=True)
|
||||
countryId = fields.Str(required=True)
|
||||
comment = fields.Str(required=False)
|
||||
|
||||
@@ -4,7 +4,7 @@ from marshmallow import Schema, fields
|
||||
# Transaction Verify Schema
|
||||
class TransactionVerifySchema(Schema):
|
||||
counter = fields.Str(required=True)
|
||||
TransactionId = fields.Str(required=True)
|
||||
transactionId = fields.Str(required=True)
|
||||
requestID = fields.Str(required=True)
|
||||
customerId = fields.Str(required=True)
|
||||
accountId = fields.Str(required=True)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
from app.services.rac_check import RACCheckService
|
||||
from app.services.disbursement import DisbursementService
|
||||
from app.services.collect_loan import CollectLoanService
|
||||
from app.services.transaction_verify import TransactionVerifyService
|
||||
from app.services.penal_charge import PenalChargeService
|
||||
from app.services.revoke_enable_consent import RevokeEnableConsentService
|
||||
from app.services.token_validation import TokenValidationService
|
||||
from app.services.lien_check import LienCheckService
|
||||
from app.services.new_transaction_check import NewTransactionCheckService
|
||||
@@ -1,4 +1,4 @@
|
||||
from flask import request
|
||||
from flask import request, jsonify
|
||||
from marshmallow import ValidationError
|
||||
from app.utils.logger import logger
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
@@ -44,18 +44,18 @@ class CollectLoanService:
|
||||
# data=response_data,
|
||||
# message="Loan collection completed successfully"
|
||||
# )
|
||||
|
||||
return response_data
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -40,14 +40,12 @@ class CustomerConsentService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -1,4 +1,4 @@
|
||||
from flask import request
|
||||
from flask import request, jsonify
|
||||
from marshmallow import ValidationError
|
||||
from app.utils.logger import logger
|
||||
from app.helpers.response_helper import ResponseHelper
|
||||
@@ -51,14 +51,12 @@ class DisbursementService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -39,14 +39,12 @@ class LienCheckService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -46,14 +46,12 @@ class NewTransactionCheckService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -40,14 +40,12 @@ class PenalChargeService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -52,14 +52,12 @@ class RACCheckService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -43,14 +43,12 @@ class RevokeEnableConsentService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -43,14 +43,12 @@ class TokenValidationService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
@@ -46,14 +46,12 @@ class TransactionVerifyService:
|
||||
|
||||
except ValidationError as err:
|
||||
logger.error(f"Validation Error: {err.messages}")
|
||||
return ResponseHelper.error(
|
||||
message="Invalid input data",
|
||||
status_code=400,
|
||||
error=err.messages
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Validation exception"
|
||||
}) , 422
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||
return ResponseHelper.internal_server_error(
|
||||
error=str(e)
|
||||
)
|
||||
return jsonify({
|
||||
"message": "Internal Server Error"
|
||||
}) , 500
|
||||
Reference in New Issue
Block a user