Skip to main content

Validation des numéros mobile money camerounais (MTN et Orange)

Project description

PhoneVerify Mobile Money Cameroun

Package Python de validation des numéros de téléphone mobile money pour le Cameroun
Validation instantanée, détection d'opérateurs et conversion de formats pour MTN et Orange

Python

Le Problème

Le Cameroun est le leader du mobile money en zone CEMAC avec 96% des transactions. Cependant, 0,5% des transactions échouent à cause d'erreurs de format de numéros, représentant 2,5 milliards FCFA bloqués annuellement.

Ce que j'ai constaté:

  • ❌ Formats inconsistants entre applications
  • ❌ 50+ startups fintech développent CHACUNE leur propre validateur
  • ❌ Confusion entre opérateurs (MTN vs Orange)
  • ❌ Maintenance coûteuse lors de changements réglementaires
  • ❌ Barrière à l'entrée pour nouvelles startups

Solution : Package Open Source unifié pour l'écosystème fintech camerounais 🇨🇲


Installation Rapide

pip install phoneverify-cameroon
import phoneverify_cameroon as pv

# Validation simple
result = pv.validate_phone("677123456")
print(f"Valid: {result['is_valid']}")          # True
print(f"Opérateur: {result['operator']}")      # MTN Mobile Money
print(f"Format E164: {result['formatted']['E164']}")  # +237677123456

Fonctionnalités

  • ✅ Validation format camerounais
  • ✅ Détection automatique opérateur (MTN/Orange)
  • ✅ 39 préfixes supportés (19 MTN + 20 Orange)
  • ✅ Gestion multiple formats d'entrée

Fonctions Principales

  • validate_phone() - Validation complète avec détails
  • detect_operator() - Détection d'opérateur uniquement
  • format_phone() - Conversion de formats
  • bulk_validate() - Validation en masse
  • get_supported_operators() - Liste des opérateurs

Formats Supportés

  • E164 : +237677123456 (international)
  • National : 0677123456 (format local officiel)
  • Local : 677123456 (format interne)
  • Display : 677 12 34 56 (affichage utilisateur)

📚 Documentation

Validation Simple

import phoneverify_cameroon as pv

# Validation d'un numéro MTN
result = pv.validate_phone("677123456")
print(result)

Résultat :

{
  "original_input": "677123456",
  "is_valid": true,
  "operator": "MTN Mobile Money",
  "operator_code": "MTN", 
  "prefix": "677",
  "cleaned_number": "677123456",
  "formatted": {
    "E164": "+237677123456",
    "national": "0677123456", 
    "local": "677123456",
    "display": "677 12 34 56"
  },
  "error": null
}

Gestion des Formats d'Entrée

Le package accepte tous les formats couramment utilisés :

# Tous ces formats sont valides pour le même numéro
formats = [
    "677123456",           # Local
    "0677123456",          # National
    "+237677123456",       # International
    "+237 677 123 456",    # Avec espaces
    "237-677-123-456",     # Avec tirets
    "(677) 123-456",       # Format parenthèses
]

for phone in formats:
    result = pv.validate_phone(phone)
    print(f"{phone} -> {result['is_valid']}")  # Tous True

Détection d'Opérateurs

# Détection simple
operator = pv.detect_operator("677123456")
print(operator)  # "MTN Mobile Money"

operator = pv.detect_operator("655123456") 
print(operator)  # "Orange Money"

# Opérateur inconnu
operator = pv.detect_operator("600123456")
print(operator)  # None

Conversion de Formats

# Conversion vers différents formats
number = "677123456"

e164 = pv.format_phone(number, "E164")      # "+237677123456"
national = pv.format_phone(number, "national")  # "0677123456"
display = pv.format_phone(number, "display")    # "677 12 34 56"

Traitement en Masse

# Validation de plusieurs numéros
numbers = ["677123456", "655987654", "invalid123", "680555666"]

# Validation bulk
results = pv.bulk_validate(numbers)
for result in results:
    print(f"{result['original_input']}: {result['is_valid']}")

# Détection d'opérateurs avec regroupement
detection = pv.detect_operators_bulk(numbers)
print(f"MTN: {len(detection['MTN'])} numéros")
print(f"Orange: {len(detection['Orange'])} numéros") 
print(f"Invalides: {len(detection['Invalid'])} numéros")

# Conversion en masse
conversions = pv.convert_format_bulk(numbers, "E164")
for conv in conversions:
    if conv['converted']:
        print(f"{conv['original']} -> {conv['converted']}")

Informations sur les Opérateurs

# Liste des opérateurs supportés
operators = pv.get_supported_operators()
for op in operators:
    print(f"{op['name']}: {len(op['prefixes'])} préfixes")
    print(f"Code: {op['code']}")
    print(f"Préfixes: {op['prefixes'][:5]}...")  # Premiers 5
    print()

# Tous les préfixes supportés  
all_prefixes = pv.get_supported_prefixes()
print(f"Total: {len(all_prefixes)} préfixes supportés")
print(f"MTN commence par: 65x, 67x, 68x")
print(f"Orange commence par: 64x, 65x, 68x, 69x")

📊 Opérateurs et Préfixes Supportés

MTN Mobile Money (19 préfixes)

650, 651, 652, 653, 654
670, 671, 672, 673, 674, 675, 676, 677, 678, 679  
680, 681, 682, 683

Orange Money (20 préfixes)

640
655, 656, 657, 658, 659
686, 687, 688, 689
690, 691, 692, 693, 694, 695, 696, 697, 698, 699

Total : 39 préfixes actifs

🤝 Contribution

Donner un coup de main.. 🙃

  1. Fork le projet sur GitHub
  2. Créer une branche feature (git checkout -b feature/amazing)
  3. Commit (git commit -m 'Add amazing feature')
  4. Push (git push origin feature/amazing)
  5. Ouvrir une Pull Request

📄 Licence

MIT License - Utilisation libre pour projets commerciaux et open source.


Développé avec ❤️ pour l'écosystème fintech camerounais


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

phoneverify_cameroon-1.0.1.tar.gz (6.4 MB view details)

Uploaded Source

Built Distribution

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

phoneverify_cameroon-1.0.1-py3-none-any.whl (7.8 MB view details)

Uploaded Python 3

File details

Details for the file phoneverify_cameroon-1.0.1.tar.gz.

File metadata

  • Download URL: phoneverify_cameroon-1.0.1.tar.gz
  • Upload date:
  • Size: 6.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for phoneverify_cameroon-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0c61da0dfba66f5693166121dc8dd920610ab0848c4e5e1ac8686a88fb6defe5
MD5 6c2308598dd176670a00a30c641bcf97
BLAKE2b-256 941ac19aa795dcf4b3b0824687618c4cd84443aff5b5f206d0ca15e969531981

See more details on using hashes here.

File details

Details for the file phoneverify_cameroon-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for phoneverify_cameroon-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f0cc9113794c6bb68cf269fea9420dcf874501460ee3e052e7b8b7ef3ee6984e
MD5 e4f4ca2766d0f3abd0ebd6a07937f868
BLAKE2b-256 5ea190e0767977edb9f40f125a43718ebc44afd357762d2757f0ae903a0cfbaa

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