Beispiel #1
0
def notify_successful_loan_repayment_transaction(loan_account,
                                                 repayment_amount,
                                                 mpesa_transaction_id):
    logger.debug('notify_successful_loan_repayment_transaction')
    logger.debug({
        'mpesa_transaction_id': mpesa_transaction_id,
        'transaction_type': LoanTransactionType.LOAN_REPAYMENT,
        'loan_account': loan_account.account_id,
        'repayment_amount': repayment_amount,
        'platform': 'mpesa'
    })

    response = queue.send_sqs_message(
        "loan_transactions_processor",
        json.dumps({
            'loan_account_id': loan_account.account_id,
            'transaction': {
                'transaction_type': LoanTransactionType.LOAN_REPAYMENT,
                'repayment_amount': repayment_amount,
                'payment_platform': {
                    'type': PaymentPlatform.MPESA,
                    'transaction_id': mpesa_transaction_id
                }
            }
        }))

    logger.debug(response)
Beispiel #2
0
def notify_successful_loan_disbursal_transaction(loan_account,
                                                 transaction_amount,
                                                 transaction_charge,
                                                 mpesa_transaction_id):
    logger.debug('notify_successful_loan_disbursal_transaction')
    logger.debug({
        'mpesa_transaction_id': mpesa_transaction_id,
        'transaction_type': LoanTransactionType.LOAN_DISBURSAL,
        'transaction_amount': transaction_amount,
        'transaction_charge': transaction_charge,
        'loan_account': loan_account.account_id,
        'platform': 'mpesa'
    })

    response = queue.send_sqs_message(
        "loan_transactions_processor",
        json.dumps({
            'loan_account_id': loan_account.account_id,
            'transaction': {
                'transaction_type': LoanTransactionType.LOAN_DISBURSAL,
                'amount': transaction_amount,
                'payment_platform': {
                    'fee': transaction_charge,
                    'type': PaymentPlatform.MPESA,
                    'transaction_id': mpesa_transaction_id
                }
            }
        }))

    logger.debug(response)
Beispiel #3
0
def notify_loan_repayment_request(loan_account, repayment_amount):
    logger.info(
        f"notify_loan_repayment_request({loan_account.account_id}, {repayment_amount})"
    )

    time_now = timezone.now()
    loan_transaction = LoanTransaction.objects.create(
        transaction_type=LoanTransactionType.LOAN_REPAYMENT,
        loan_account=loan_account,
        initiated_at=time_now,
        status=LoanTransactionStatus.PENDING_PROCESSING,
        amount=repayment_amount)
    logger.info(
        dict(transaction_type="LOAN_REPAYMENT",
             loan_account=loan_account,
             initiated_at=time_now,
             status="PENDING_PROCESSING",
             amount=repayment_amount))

    response = queue.send_sqs_message(
        "loan_repayments",
        json.dumps({
            'loan_transaction_id': loan_transaction.transaction_id,
            'loan_account_id': loan_account.account_id,
            'repayment_amount': repayment_amount
        }))
    logger.debug(response)

    return loan_transaction
Beispiel #4
0
def notify_loan_application(loan_profile, loan_amount):
    logger.info(
        f"notify_loan_application({loan_profile.profile_id}, {loan_amount})")

    loan_application = LoanApplication.objects.create(
        loan_profile=loan_profile,
        applied_at=timezone.now(),
        payment_platform=PaymentPlatform.MPESA,
        amount=D(loan_amount))

    response = queue.send_sqs_message(
        "loan_requests",
        json.dumps({'loan_application_id': loan_application.application_id}))

    logger.debug(response)

    return loan_application
Beispiel #5
0
def notify_c2b_mpesa_express_response(mpesa_transaction,
                                      personal_mpesa_account,
                                      business_paybill_account, amount):
    logger.info("Notifying c2b mpesa express response")

    # -----------

    payload = {
        'business_mpesa_account_id': business_paybill_account.account_id,
        'personal_mpesa_account_id': personal_mpesa_account.account_id,
        'mpesa_transaction_id': mpesa_transaction.transaction_id,
        'transaction_type': 'c2b',
        'amount': amount
    }
    logger.debug(payload)

    # -----------

    return queue.send_sqs_message('mpesa_c2b_requests', json.dumps(payload))
Beispiel #6
0
def notify_b2c_mpesa_response(mpesa_transaction, personal_mpesa_account,
                              business_paybill_account, transaction_amount,
                              transaction_charge):
    logger.info("Notifying b2c response")

    # -----------

    payload = {
        'business_mpesa_account_id': business_paybill_account.account_id,
        'personal_mpesa_account_id': personal_mpesa_account.account_id,
        'mpesa_transaction_id': mpesa_transaction.transaction_id,
        'transaction_type': 'b2c',
        'transaction_amount': transaction_amount,
        'transaction_charge': transaction_charge
    }
    logger.debug(payload)

    # -----------

    return queue.send_sqs_message('mpesa_b2c_requests', json.dumps(payload))
Beispiel #7
0
def notify_verify_mpesa_account_request(loan_account):
    logger.info(
        f"notify_verify_mpesa_account_request({loan_account.account_id})")

    time_now = timezone.now()
    logger.info(
        dict(transaction_type="MPESA_VERIFICATION",
             initiated_at=time_now,
             status="PENDING_PROCESSING",
             amount=settings.MPESA_VERIFICATION_AMOUNT))

    response = queue.send_sqs_message(
        "mpesa_verification_request",
        json.dumps({
            'loan_transaction_id': loan_transaction.transaction_id,
            'loan_account_id': loan_account.account_id,
            'repayment_amount': repayment_amount
        }))
    logger.debug(response)

    return loan_transaction