Mvola 是 Mvola API 的轻量级开源模块。
项目描述
安装
您可以在此处查阅 pypi.org 上的链接以获取模式文档。
pip install mvola==1.0.4
用法
在此处查看演示文件
启动 API
在此处创建您的帐户。创建应用程序后,您应该拥有 Consummer_key 和 Consummer_secret 并将这些变量添加到 .env 文件中(查看 env 文件示例)。
# 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'))
生成令牌
在此处查看文档
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}")
输出
成功
{
"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
}
}
失败[示例]
Status_code[401]
{
'error_description': 'A valid OAuth client could not be found for client_id: 0zL7eTrSEfXf6kwJ53DSegCbBwa',
'error': 'invalid_client'
}
该函数生成的token默认必须在3600s后过期,更改请到平台Mvola API Application的dashboard。
发起交易
在此处查看文档
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}")
输出
成功 :
{
'status': 'pending',
'serverCorrelationId': '821ff7f5-43e2-4e6e-af47-a8c40150f950',
'notificationMethod': 'callback'
}
失败[示例]:
Status_code : [401] ,
{
'fault': {
'code': 900901,
'message': 'Invalid Credentials',
'description': 'Invalid Credentials. Make sure you have given the correct access token'
}
}
交易状态
在此处查看文档
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}")
输出
成功 :
{
"status": "success",
"serverCorrelationId": "821ff7f5-43e2-4e6e-af47-a8c40150f950",
"notificationMethod": "callback",
"objectReference": ""
}
失败[示例]:
Status_code : [401] ,
{
'status': '',
'serverCorrelationId': '821ff7f5-73e2-4e6e-af47-a8c40150f950',
'notificationMethod': '',
'objectReference': ''
}
交易详情
在此处查看文档
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}")
输出
{
'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
}
如何贡献?
- 创建存储库的分支
- 待办事项清单#02
- 创建拉取请求