Mvola is a light open source module for your Mvola API.
Project description
INSTALLATION
You can consult the link on pypi.org here for mode documentation.
pip install mvola==1.0.5
USAGE
Check the demo file here
Start the API
Create your account here. After you create application , you should have Consummer_key and Consummer_secret and add those variable in .env file(check the env file example).
# Import the module mvola
from mvola import Mvola
# Import environ module to access environment variables
from os import environ as env
# Initiate the api => API(Consummer_key, Consummer_secret)
api = Mvola(env.get('CONSUMER_KEY'), env.get('SECRET_KEY'))
Generate token
Check the documentation here
from mvola import Mvola
from os import environ as env
api = Mvola(env.get('CONSUMER_KEY'), env.get('SECRET_KEY'))
res = api.generate_token()
if res.success :
api.token = res
print(res)
else :
print(f"Status_code[{res.status_code}] \n {res.error}")
OUTPUT
Success
{
"Success": true,
"Error": null,
"Status code": 200,
"Value": {
"access_token": "eyJ4NXQiOiJPRE5tWkRFMll6UTRNVEkxTVRZME1tSmhaR00yTUdWa1lUZGhOall5TWpnM01XTmpNalJqWWpnMll6bGpNRGRsWWpZd05ERmhZVGd6WkRoa1lUVm1OZyIsImtpZCI6Ik9ETm1aREUyWXpRNE1USTFNVFkwTW1KaFpHTTJNR1ZrWVRkaE5qWXlNamczTVdOak1qUmpZamcyWXpsak1EZGxZall3TkRGaFlUZ3paRGhrWVRWbU5nX1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJyaXZvMjMwMkBnbWFpbC5jb21AY2FyYm9uLnN1cGVyIiwiYXV0IjoiQVBQTElDQVRJT04iLCJhdWQiOiIwekw3ZVRyU0VmWGY2a2t3SjUzRFNlZ0NiQndhIiwibmJmIjoxNjUyMDk2Mzc1LCJhenAiOiIwekw3ZVRyU0VmWGY2a2t3SjUzRFNlZ0NiQndhIiwic2NvcGUiOiJFWFRfSU5UX01WT0xBX1NDT1BFIiwiaXNzIjoiaHR0cHM6XC9cL2FwaW0ucHJlcC50ZWxtYS5tZzo5NDQzXC9vYXV0aDJcL3Rva2VuIiwiZXhwIjoxNjUyMDk5OTc1LCJpYXQiOjE2NTIwOTYzNzUsImp0aSI6Ijk0ZWRlZjIyLTFmYzEtNDYxNS05YzZjLWQxZGQ3MDg1NmFjYyJ9.MQ6ew1r7nMWZN3hI8Xvbv0PuZgsi-GY_IjsO-NeXmALh1KnwOOwhgo1cMu9hRGsXWg3XZexqLagLHRcjYNDXJKR6QuYrop6WzZuGMGsNs-PL_1jrjctOLIS2VGBL1utCdDvhvfYgG-oOs2cisBUIQ7TtHF8haTd0w4WdNVkxt66Jz5ZGhEbOBralbym3-Bgjo_2wbuKy9iY0x6xqr2xMuhPXkgTFyZmAqmUv32zIIyvfC6OiEcfcXF2T3Bm_NqJN8BNXXu8ST3sdU_dEp2wYEf5f4d8LxUygNVv5n9kkdlmLrRWpoEeWfpIcfAeMuMdyLaXAgQj-T7BInM5wECMhYg",
"scope": "EXT_INT_MVOLA_SCOPE",
"token_type": "Bearer",
"expires_in": 3600
}
}
Failed [example]
Status_code[401]
{
'error_description': 'A valid OAuth client could not be found for client_id: 0zL7eTrSEfXf6kwJ53DSegCbBwa',
'error': 'invalid_client'
}
The token generated by this function must expire after 3600s by default,to change that go to the dashboard of Mvola API Application in the plaform.
Initiate Transaction
Check the documentation here
from mvola.tools import Transaction
transaction = Transaction(
token="{{token}}", # [Token] Requiered fields
user_language="FR", # MG or FR
user_account_identifier="0343500003", # [UserAccountIdentifier] Requiered fields
partner_name="Marketbot", # Name of your application
amount="1500",
x_callback_url="https://2809-102-16-43-64.ngrok.io", # Webhook link for client , Mvola sends requests in this links once the transaction is finished
currency="Ar", # Possible Values : Ar only
description_text="Unedescription", # String (len<40Characters)without special character
request_date="2022-05-06T02:14:59.567Z", # Respect the consraints as in this example
debit="0343500003", # [Debit] Required fields | Phone number of subscriber .In preprod it’s fixed: 034350003 or 0343500004
credit="0343500004", # [Credit] Required fields | Phone number of merchant. In preprod it’s fixed: 034350003 or 0343500004
)
# Init transaction
res = api.init_transaction(transaction)
if res.success :
print(res.response)
else :
print(f"Status_code [{res.status_code}] \n {res.error}")
OUTPUT
Success :
{
'status': 'pending',
'serverCorrelationId': '821ff7f5-43e2-4e6e-af47-a8c40150f950',
'notificationMethod': 'callback'
}
Failed [example]:
Status_code : [401] ,
{
'fault': {
'code': 900901,
'message': 'Invalid Credentials',
'description': 'Invalid Credentials. Make sure you have given the correct access token'
}
}
Status of Transaction
Check the documentation here
from mvola.tools import Transaction
transaction = Transaction(
token="{{token}}", # [Token] Required fields
user_language="FR", # MG or FR
user_account_identifier="0343500003", # [UserAccountIdentifier] Required fields
partner_name="Marketbot", # Name of your application
server_correlation_id='c8e9e922-b965-4515-b390-137b41c9f40b' , # [server_correlation_id] Required fields , The response when you initiate transaction
)
# Status of transaction
res = api.status_transaction(transaction)
if res.success :
print(res.response)
else :
print(f"Status_code [{res.status_code}] \n {res.error}")
OUTPUT
Success :
{
"status": "success",
"serverCorrelationId": "821ff7f5-43e2-4e6e-af47-a8c40150f950",
"notificationMethod": "callback",
"objectReference": ""
}
Failed [example]:
Status_code : [401] ,
{
'status': '',
'serverCorrelationId': '821ff7f5-73e2-4e6e-af47-a8c40150f950',
'notificationMethod': '',
'objectReference': ''
}
Details of Transaction
Check the documentation here
from mvola.tools import Transaction
transaction = Transaction(
token="eyJ4NXQiOiJPRE5tWkRFMll6UTRNVEkxTVRZME1tSmhaR00yTUdWa1lUZGhOall5TWpnM01XTmpNalJqWWpnMll6bGpNRGRsWWpZd05ERmhZVGd6WkRoa1lUVm1OZyIsImtpZCI6Ik9ETm1aREUyWXpRNE1USTFNVFkwTW1KaFpHTTJNR1ZrWVRkaE5qWXlNamczTVdOak1qUmpZamcyWXpsak1EZGxZall3TkRGaFlUZ3paRGhrWVRWbU5nX1JTMjU2IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJyaXZvMjMwMkBnbWFpbC5jb21AY2FyYm9uLnN1cGVyIiwiYXV0IjoiQVBQTElDQVRJT04iLCJhdWQiOiIwekw3ZVRyU0VmWGY2a2t3SjUzRFNlZ0NiQndhIiwibmJmIjoxNjU0MTA4ODg2LCJhenAiOiIwekw3ZVRyU0VmWGY2a2t3SjUzRFNlZ0NiQndhIiwic2NvcGUiOiJFWFRfSU5UX01WT0xBX1NDT1BFIiwiaXNzIjoiaHR0cHM6XC9cL2FwaW0ucHJlcC50ZWxtYS5tZzo5NDQzXC9vYXV0aDJcL3Rva2VuIiwiZXhwIjoxNjU0MTEyNDg2LCJpYXQiOjE2NTQxMDg4ODYsImp0aSI6IjVlOGY5ZjFhLWUxODItNGZkMS04ZjUyLWU2YTIzMzljYTIzMCJ9.voIBGWbGiI7vFklcmHiufu5fW1UvlE79c7MNOZZisuGD7HQ8P4CFljBhbQQj8lHnd8u48KFdLxHWwg4SozDejPlTFmeDdHaE8UoYhTsVthYgG5eKN3ZSQ0LSyYyeLbxA25vssvVSkQBCX-4EtcrH_vgEnZiJotBqD8PhicuwtvJuiqm3lbkFcGpNNtVGlUD8Q_xxBt31Az044qJ3BYTcmnG1tXmjRzQNyNrGe3rnQxbnndqg1gHrr-st8bulgODHWGZ3vKkmpdXnMxAn6sYjPRZ0YOdfdQwpgYK8HpLh1oI8VtTsw8oqTiVXpk-4F00qXjqihVd66len-BS48DIsig",
user_language="FR",
user_account_identifier="0343500003",
partner_name="Marketbot",
transid="636251274" # Transaction ID [Required] Fields on details transaction
)
res = api.details_transaction(transaction)
if res.success :
print(res.response)
else :
print(f"Status_code [{res.status_code}] \n {res.error}")
OUTPUT
{
'amount': '5555.00',
'currency': 'Ar',
'requestDate': '2022-06-01T19:15:52.848Z',
'debitParty':
[
{
'key': 'msisdn',
'value': '0343500003'
}
],
'creditParty':
[
{
'key': 'msisdn',
'value': '0343500004'
}
],
'fees':
[
{'feeAmount': '84'}
],
'metadata':
[
{
'key': 'originalTransactionResult',
'value': '0'
},
{
'key': 'originalTransactionResultDesc',
'value': '0'
}
],
'transactionStatus': 'completed',
'creationDate': '2022-06-01T19:07:24.223Z',
'transactionReference': '636251282' , #This is the transaction ID
}
How to contribute ?
- Make a fork of the repository
- TODO List #02
- Create a Pull Request
Contributors
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mvola-1.0.5.tar.gz
.
File metadata
- Download URL: mvola-1.0.5.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.28.1 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.64.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c08da221fd19582d7acc4a1fbe13c903bad223b6831b0f27961748ebfd691b79 |
|
MD5 | 514a6e8a826d0bed937fc631e9f00394 |
|
BLAKE2b-256 | 4264aaaf657ba162cd2ad2a758f7ed64a9ef23d4e66408ae8cf4931152549025 |
File details
Details for the file mvola-1.0.5-py3-none-any.whl
.
File metadata
- Download URL: mvola-1.0.5-py3-none-any.whl
- Upload date:
- Size: 21.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.28.1 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.64.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa242daca06b197bfde61dfda3909add0a71e2d01a225455aaf61d8fd33bf694 |
|
MD5 | dd204e049efd2aa4813ee11b67b31633 |
|
BLAKE2b-256 | cd144b01c0c13033f4c3bc53d5ae9a4a4d681261400ff1fa20bf0418c8bb68c2 |