from flask import Blueprint, request, jsonify, current_app import requests from app.config import settings from app.utils.auth import get_headers from app.utils.logger import logger loan_bp = Blueprint("loan", __name__) BASE_URL = settings.BANK_CALL_BASE_URL @loan_bp.route("/select-offer", methods=["POST"]) def select_offer(): data = request.json api_url = f"{BASE_URL}/SelectOffer" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "transactionId": "1231231321232", "customerId": "1256907", "accountId": "5948306019", "outstandingDebtAmount": 0, "loan": [ { "offerId": "14451", "productId": "2030", "amount": 10000, "upfrontPayment": 1000, "interestRate": 3, "Interest": 300, "ManagementRate": 1, "ManagementFee": 100, "InsuranceRate": 1, "InsuranceFee": 100, "VATRate": 7.5, "VATamount": 100, "recommendedRepaymentDates": ["2022-11-30"], "installmentAmount": 11000, "totalRepaymentAmount": 11000, } ], "resultCode": "00", "resultDescription": "Successful", } return jsonify(response), 200 @loan_bp.route("/provide-loan", methods=["POST"]) def provide_loan(): data = request.json api_url = f"{BASE_URL}/ProvideLoan" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "requestId": "202111170001371256908", "transactionId": "Tr201712RK9232P115", "customerId": "CN621868", "accountId": "ACN8263457", "msisdn": "3451342", "resultCode": "00", "resultDescription": "Successful", } return jsonify(response), 200 @loan_bp.route("/status", methods=["POST"]) def status(): data = request.json api_url = f"{BASE_URL}/LoanStatus" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "customerId": "CN621868", "transactionId": "Tr201712RK9232P115", "loans": [ { "debtId": "123456789", "loanDate": "2019-10-18 14:26:21.063", "dueDate": "2019-11-20 14:26:21.063", "currentLoanAmount": 8500, "initialLoanAmount": 10000, "defaultPenaltyFee": 0, "continuousFee": 0, "productId": "101", } ], "totalDebtAmount": 8500, "resultCode": "00", "resultDescription": "Successful", } return jsonify(response), 200 @loan_bp.route("/repayment", methods=["POST"]) def repayment(): data = request.json api_url = f"{BASE_URL}/Repayment" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "requestId": "R02802", "countryCode": "NGR", "transactionId": "Tr201712RK9232P115", "debtId": "273194670", "customerId": "CN621868", "accountId": "2017821799", "productId": "101", "collectedAmount": 60000, "penalCharge": 0, "lienAmount": 20000, "comment": "Testing CollectionLoanRequest", "resultCode": "00", "resultDescription": "Loan Collection Successful", } return jsonify(response), 200 @loan_bp.route("/rac-check", methods=["POST"]) def rac_check(): data = request.json api_url = f"{BASE_URL}/RACCheck" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "transactionId": "T001", "customerId": "CN621868", "accountId": "2017821799", "RACResponse": { "Salary account": "1", "BVN": "1", "BVNAttachedToAccount": "1", "CRMS": "1", "CRC": "1", "AccountStatus": "1", "Lien": "1", "NoBouncedCheck": "1", "Whitelist": "1", "NoPastDueSalaryLoan": "1", "NoPastDueOtherLoan": "1", }, "resultDescription": "RAC Check Successful", } return jsonify(response), 200 @loan_bp.route("/disbursement", methods=["POST"]) def disbursement(data=None): if data is None: data = request.json api_url = f"{BASE_URL}/Disbursement" logger.info(f"Calling disbursement endpoint with data: {data}") response = requests.post( api_url, json=data, headers=get_headers(), ) logger.info(f"Disbursement response: {response.json()}") return jsonify(response.json()), response.status_code @loan_bp.route("/collect-loan", methods=["POST"]) def collect_loan(): data = request.json api_url = f"{BASE_URL}/CollectLoan" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "transactionId": "T002", "debtId": "273194670", "customerId": "CN621868", "accountId": "2017821799", "productId": "101", "collectAmount": 60000, "penalCharge": 0, "lienAmount": 20000, "countryId": "01", "comment": "Testing CollectionLoanRequest", "resultCode": "00", "resultDescription": "Loan Collection Successful", } return jsonify(response), 200 @loan_bp.route("/transaction-verify", methods=["POST"]) def transaction_verify(): data = request.json api_url = f"{BASE_URL}/TransactionVerify" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "requestId": "R02802", "countryCode": "NGR", "transactionId": "Tr201712RK9232P115", "transactionType": "Disbursement", "customerId": "CN621868", "accountId": "2017821799", "providedAmount": 100, "collectedAmount": 7.5, "resultCode": "00", "resultDescription": "Collect Status retrieved successfully.", } return jsonify(response), 200 @loan_bp.route("/penal-charge", methods=["POST"]) def penal_charge(): data = request.json api_url = f"{BASE_URL}/PenalCharge" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "resultCode": "00", "resultDescription": "Penal charge debited successfully", } return jsonify(response), 200 @loan_bp.route("/lien-check", methods=["POST"]) def lien_check(): data = request.json api_url = f"{BASE_URL}/LienCheck" # response = requests.post(api_url, json=data, headers=get_headers()) # return jsonify(response.json()), response.status_code response = { "lienAmount": 20000, "resultCode": "00", "resultDescription": "Successful", } return jsonify(response), 200