Maldives Islamic Bank Payment Verification API
This api will allow you to match customers payment and your MIB account history, it will match with transaction time, account owner name and amount.
but slight issue is that, MIB to MIB transaction sometimes have MIBs made-up name for the account owner name, This is challenging, so work around that,
I added option to send customers account number to fetch the made-up name and match with it.
(BML) Farava transations works perfectly with just the name!
It uses cookie from webssion to fetch everything, it also has a keepalive service so websession does not expire after 5mins.
How to deploy/get started (with docker/podman)
- Login to MIB web https://faisanet.mib.com.mv/ and get the cookie:
- copy .env.example to .env and fill
QL_0
andIBSID
with contents from step 1, Make sure to fillACCOUNT_NUMBER
with your account number. - Create
compose.yml
with the follwing contents:
services:
keepalive:
env_file: .env
image: git.shihaam.dev/shihaam/mib-payment-verify/keepalive
api:
env_file: .env
image: git.shihaam.dev/shihaam/mib-payment-verify/api
ports:
- 5000:5000
- Run
docker compose up -d
and that is all.
Using the API with curl examples:
- With both benefName and accountNo:
curl -X POST http://localhost:5000/verify-payment \
-H "Content-Type: application/json" \
-d '{
"benefName": "ABDLA.MAJUDHU AHMED",
"accountNo": "90103101178641000",
"absAmount": "100",
"time": "2024-10-16 16:08"
}'
In this request, it will first try to verify with benfName, if it fails, then it will try with accountNo.
- With only benefName:
curl -X POST http://localhost:5000/verify-payment \
-H "Content-Type: application/json" \
-d '{
"benefName": "ABDLA.MAJUDHU AHMED",
"absAmount": "100",
"time": "2024-10-16 16:08"
}'
- With only accountNo:
curl -X POST http://localhost:5000/verify-payment \
-H "Content-Type: application/json" \
-d '{
"accountNo": "90103101178641000",
"absAmount": "100",
"time": "2024-10-16 16:08"
}'
Exmaple Succcess responses:
- Both benefName and accountNo or only benefName provided
{
"message": "Payment verified using beneficiary name",
"success": true
}
- Both benefName and accountNo or only accountNo provided, but failed with benefName
{
"message": "Payment verified using account number",
"success": true
}
Example Failed response:
- If transaction is not found with the provided details.
{
"message": "Transaction not found, contact support",
"success": false
}
Description
Languages
Python
81.7%
Shell
13.1%
Dockerfile
5.2%