Skip to content

alexminza/maib-mia-sdk-python

Repository files navigation

Python SDK for maib MIA API

Installation

To easily install or upgrade to the latest release, use pip:

pip install --upgrade maib-mia-sdk

Getting started

Import SDK:

from maib_mia_sdk import MaibMiaSdk, MaibMiaAuthRequest, MaibMiaApiRequest

Add project configuration:

import os, datetime MAIB_MIA_CLIENT_ID = os.getenv('MAIB_MIA_CLIENT_ID') MAIB_MIA_CLIENT_SECRET = os.getenv('MAIB_MIA_CLIENT_SECRET') MAIB_MIA_SIGNATURE_KEY = os.getenv('MAIB_MIA_SIGNATURE_KEY')

SDK usage examples

Get Access Token with Client ID and Client Secret

maib_mia_auth = MaibMiaAuthRequest \ .create(base_url=MaibMiaSdk.SANDBOX_BASE_URL) \ .generate_token(client_id=MAIB_MIA_CLIENT_ID, client_secret=MAIB_MIA_CLIENT_SECRET) maib_mia_token = maib_mia_auth['accessToken']

Create a dynamic order payment QR

maib_mia_qr_data = { 'type': 'Dynamic', 'expiresAt': (datetime.datetime.now() + datetime.timedelta(hours=24)).isoformat(), 'amountType': 'Fixed', 'amount': 50.00, 'currency': 'MDL', 'orderId': '123', 'description': 'Order #123', 'callbackUrl': 'https://example.com/callback', 'redirectUrl': 'https://example.com/success' } maib_mia_api_request = MaibMiaApiRequest.create(base_url=MaibMiaSdk.SANDBOX_BASE_URL) maib_mia_create_qr_response = maib_mia_api_request.qr_create( data=maib_mia_qr_data, token=maib_mia_token)

Create a RTP (Request To Pay)

maib_mia_rtp_data = { 'alias': '3736xxxxxxx', 'amount': 50.00, 'currency': 'MDL', 'expiresAt': (datetime.datetime.now() + datetime.timedelta(hours=24)).isoformat(), 'description': f'Order #123', 'orderId': '123', 'callbackUrl': 'https://example.com/callback', 'redirectUrl': 'https://example.com/success' } maib_mia_create_rtp_response = maib_mia_api_request.rtp_create( data=maib_mia_rtp_data, token=maib_mia_token)

Validate callback signature

callback_data = { "result": { "qrId": "c3108b2f-6c2e-43a2-bdea-123456789012", "extensionId": "3fe7f013-23a6-4d09-a4a4-123456789012", "qrStatus": "Paid", "payId": "eb361f48-bb39-45e2-950b-123456789012", "referenceId": "MIA0001234567", "orderId": "123", "amount": 50.00, "commission": 0.1, "currency": "MDL", "payerName": "TEST QR PAYMENT", "payerIban": "MD88AG000000011621810140", "executedAt": "2025-04-18T14:04:11.81145+00:00", "terminalId": null }, "signature": "fHM+l4L1ycFWZDRTh/Vr8oybq1Q1xySdjyvmFQCmZ4s=" } validate_callback_result = MaibMiaSdk.validate_callback_signature( callback_data=callback_data, signature_key=MAIB_MIA_SIGNATURE_KEY)

Perform a test QR payment

maib_test_pay_data = { 'qrId': maib_mia_create_qr_response['qrId'], 'amount': maib_mia_qr_data['amount'], 'iban': 'MD88AG000000011621810140', 'currency': maib_mia_qr_data['currency'], 'payerName': 'TEST QR PAYMENT' } maib_mia_test_pay_response = maib_mia_api_request.test_pay( data=maib_test_pay_data, token=maib_mia_token)

Get payment details

maib_mia_payment_details_response = maib_mia_api_request.payment_details( pay_id=maib_mia_test_pay_response['payId'], token=maib_mia_token)

Refund payment

maib_mia_pay_refund_data = { 'reason': 'Test refund reason' } maib_mia_refund_details_response = maib_mia_api_request.payment_refund( pay_id=maib_mia_test_pay_response['payId'], data=maib_mia_pay_refund_data, token=maib_mia_token)