2024-10-20 02:03:02 +05:00
2024-10-22 01:44:05 +05:00
2024-10-19 04:23:52 +05:00
2024-10-19 03:03:01 +05:00
2024-10-20 00:59:53 +05:00
2024-10-18 03:02:09 +05:00
2024-10-22 01:22:45 +05:00
2024-10-22 00:42:17 +05:00
2024-10-22 01:42:07 +05:00
2024-10-22 01:44:05 +05:00

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)

  1. Login to MIB web https://faisanet.mib.com.mv/ and get the cookie: get_cookie_env.png
  2. copy .env.example to .env and fill QL_0 and IBSID with contents from step 1.
  3. 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

  1. Run docker compose up -d and that is all.

Using the API with curl examples:

  1. 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.

  1. 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"
         }'
  1. 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:

  1. Both benefName and accountNo or only benefName provided
{
  "message": "Payment verified using beneficiary name",
  "success": true
}
  1. Both benefName and accountNo or only accountNo provided, but failed with benefName
{
  "message": "Payment verified using account number",
  "success": true
}

Example Failed response:

  1. If transaction is not found with the provided details.
{
  "message": "Transaction not found, contact support",
  "success": false
}
Description
API to verify MIB and BML (Favara) transactions to MIB account.
Readme 1.1 MiB
Languages
Python 81.7%
Shell 13.1%
Dockerfile 5.2%