Hi Everyone!Payment Service integration will help us to integrate Fineract with mobile money platforms(mpesa, beyonic, etc..) so that the data can be synchronized with the disbursements, repayments of the loans that being initiated through the mobile money platform.
It can enable financial institutions to go completely paperless once mobile money is rolled out and integrated with the core banking system.
Roles and Responsibilities of payment-service:
- This service will act as a central base for interacting with third-party payment vendors like RazorPay. mPesa etc.
- Implement necessary callback endpoints of vendors.
- Validate payment vendor call, verifying the signature from the vendor.
- Error Handling of vendor call-backs,
- Do necessary database operation, (refer to database schema attached).
- Create message to be published on inbound queue, again it will have a signature mechanism.
- Publish message on a single payment topic(common for all vendors).
- Listens to outbound queue message.
- Initiate transaction via the vendor that was chosen.
Fineract Interaction with Payment Service:
- It will listen to payment (inbound) queue.
- Authenticate request.
- Do the necessary database operation and transaction creation(INBOUND/OUTBOUND).
- Write messages to the outbound queue for loan disbursements.
Currently, we need a solution to the given problem statement:
- Are we going to support direct wallet to wallet transaction for loan repayment as well as for loan dispersal cases?
For example, a user with a phone number directly pays from his mPesa account to Mifos account for loan repayment purpose.
- There are cases where a user will be making a payment from a different number (or another user is paying on their behalf) or if they want to pay multiple accounts or have multiple loan or savings accounts open.
Solution suggestion by Thynn: "In the case of multiple family members using one telephone number, one way is to have them enter the account number (savings or loan) to apply the payment to" but this solution may lead to issues like, if the user enters the incorrect account number then we have to initiate refunds for that particular transaction.
It would be really appreciated if anyone has tried to solve this problem or suggest some solution for the same.
I'm looking forward to hearing your invaluable feedback and suggestions to fit the best interests of the community.