Backends

Chaque backend hérite de BasePaymentBackend et implémente 3 méthodes : initiate_payment, verify_payment, process_webhook.

Wave

MOBILE_MONEY = {
    "WAVE": {
        "API_KEY": env("WAVE_API_KEY"),
        "SANDBOX": True,
        "WEBHOOK_SECRET": env("WAVE_WEBHOOK_SECRET", default=""),
    },
}

Pays supportés : CI, SN

Orange Money

MOBILE_MONEY = {
    "ORANGE_MONEY": {
        "CLIENT_ID":     env("ORANGE_CLIENT_ID"),
        "CLIENT_SECRET": env("ORANGE_CLIENT_SECRET"),
        "SANDBOX":       True,
    },
}

Pays supportés : CI, SN, CM, BF, ML, GN

MTN MoMo

MOBILE_MONEY = {
    "MTN_MOMO": {
        "SUBSCRIPTION_KEY": env("MTN_SUBSCRIPTION_KEY"),
        "API_USER":         env("MTN_API_USER"),
        "API_KEY":          env("MTN_API_KEY"),
        "ENVIRONMENT":      "sandbox",
    },
}

Pays supportés : CI, GH, CM, BJ, SN, UG

Moov Money

MOBILE_MONEY = {
    "MOOV_MONEY": {
        "USERNAME":       env("MOOV_USERNAME"),
        "PASSWORD":       env("MOOV_PASSWORD"),
        "PARTNER_ID":     env("MOOV_PARTNER_ID"),
        "WEBHOOK_SECRET": env("MOOV_WEBHOOK_SECRET", default=""),
        "SANDBOX":        True,
    },
}

Pays supportés : CI, BJ, TG, BF, ML, NE

Airtel Money

MOBILE_MONEY = {
    "AIRTEL_MONEY": {
        "CLIENT_ID":     env("AIRTEL_CLIENT_ID"),
        "CLIENT_SECRET": env("AIRTEL_CLIENT_SECRET"),
        "COUNTRY":       "CI",
        "CURRENCY":      "XOF",
        "SANDBOX":       True,
    },
}

Pays supportés : CI, GH, TZ, UG, ZM, KE, MG, CD

M-Pesa

MOBILE_MONEY = {
    "MPESA": {
        "CONSUMER_KEY":    env("MPESA_CONSUMER_KEY"),
        "CONSUMER_SECRET": env("MPESA_CONSUMER_SECRET"),
        "SHORTCODE":       env("MPESA_SHORTCODE"),
        "PASSKEY":         env("MPESA_PASSKEY"),
        "CALLBACK_URL":    env("MPESA_CALLBACK_URL"),
        "SANDBOX":         True,
    },
}

Pays supportés : KE, TZ, GH

Ajouter un backend custom

from django_mobile_money.backends.base import BasePaymentBackend

class MonBackend(BasePaymentBackend):
    backend_id        = "mon_backend"
    display_name      = "Mon Provider"
    supported_countries = ["CI"]

    def initiate_payment(self, phone, amount, currency="XOF", reference="", **kwargs):
        return self._standard_response(
            status="pending",
            transaction_id="txn_001",
        )

    def verify_payment(self, transaction_id):
        ...

    def process_webhook(self, payload, headers):
        ...