Skip to main content

Django reusable package for African mobile money payments

Project description

django-mobile-money

PyPI version Tests Coverage Python License: MIT Downloads

Package Django reusable pour les paiements Mobile Money africains. Integrez Wave, Orange Money, MTN MoMo et Moov Money en 3 lignes de code.

Backends supportes

Provider Pays Statut
Wave CI, SN Stable
Orange Money CI, SN, CM, BF, ML, GN Stable
MTN MoMo CI, GH, CM, BJ, SN, UG Stable
Moov Money CI, BJ, TG, BF, ML, NE Stable

Installation

pip install django-mobile-money

Quickstart

1. INSTALLED_APPS

INSTALLED_APPS = [
    "django_mobile_money",
]

2. settings.py

MOBILE_MONEY = {
    "DEFAULT_BACKEND": "wave",
    "WAVE": {
        "API_KEY": env("WAVE_API_KEY"),
        "SANDBOX": True,
    },
    "ORANGE_MONEY": {
        "CLIENT_ID":     env("ORANGE_CLIENT_ID"),
        "CLIENT_SECRET": env("ORANGE_CLIENT_SECRET"),
    },
    "MTN_MOMO": {
        "SUBSCRIPTION_KEY": env("MTN_SUBSCRIPTION_KEY"),
        "ENVIRONMENT":      "sandbox",
    },
    "MOOV_MONEY": {
        "USERNAME":   env("MOOV_USERNAME"),
        "PASSWORD":   env("MOOV_PASSWORD"),
        "PARTNER_ID": env("MOOV_PARTNER_ID"),
    },
}

3. urls.py

urlpatterns = [
    path("mobile-money/", include("django_mobile_money.urls")),
]

4. Lancer un paiement

from django_mobile_money import pay

result = pay(
    phone="+22507XXXXXXXX",
    amount=5000,
    backend="wave",
)

if result["status"] == "success":
    print("Paiement confirme :", result["transaction_id"])
elif result["status"] == "pending":
    print("En attente de confirmation")
else:
    print("Echec :", result["message"])

Reponse standardisee

{
    "status":             "pending" | "success" | "failed",
    "transaction_id":     str,
    "provider_reference": str,
    "message":            str,
    "raw_response":       dict,
}

Modeles Django

  • MobileTransaction - historique complet des paiements
  • WebhookLog - logs des webhooks entrants

Signals

from django.dispatch import receiver
from django_mobile_money.signals import payment_success

@receiver(payment_success)
def on_payment_success(sender, transaction, backend_id, **kwargs):
    print(f"Paiement reussi : {transaction.transaction_id}")

Template tags

{% load mobile_money_tags %}
{% payment_button phone="+22507XXXXXXXX" amount=5000 backend="wave" %}
{% transaction_status_badge transaction.status %}

Tests

uv run pytest -v
uv run coverage run -m pytest && uv run coverage report
# 34 tests - 92% coverage

Contribution

Voir CONTRIBUTING.md — les contributions sont les bienvenues !

Auteur

OURA KONAN ROMEO - Django Developer & IT Instructor Abidjan, Cote d Ivoire https://github.com/oura02

Licence

MIT 2026 OURA KONAN ROMEO

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

django_mobile_money-0.6.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_mobile_money-0.6.0-py3-none-any.whl (25.2 kB view details)

Uploaded Python 3

File details

Details for the file django_mobile_money-0.6.0.tar.gz.

File metadata

  • Download URL: django_mobile_money-0.6.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for django_mobile_money-0.6.0.tar.gz
Algorithm Hash digest
SHA256 e3c33b7d4b4fc2eece331c62c3a3b7ad4b3773ff07ca103b8b49e3d61dd091d7
MD5 1601400e8750ba6e11346ea73e93ffa6
BLAKE2b-256 c389ff328f3e429e81094e0f1ab902e2aa79269351586b30a140ddad07069f6d

See more details on using hashes here.

File details

Details for the file django_mobile_money-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_mobile_money-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af0460c74c23d6fdeebfe1f361cf82919973590a4efbb31c2f9cf3a82ffd5636
MD5 b211c7968365aec1c813bd5499fdb919
BLAKE2b-256 243e4471a8b608e0c9535091cfd991e86f409ed290a3b326d5a982347df759ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page