Utilitaires

La bibliothèque fournit plusieurs fonctions utilitaires dans le module fasoarzeka.utils.

Vue d’ensemble

from fasoarzeka.utils import (
    format_msisdn,
    validate_phone_number,
    generate_hash,
    generate_order_id
)

format_msisdn()

Formate un numéro de téléphone au format requis par l’API.

Signature

def format_msisdn(phone: str) -> str

Paramètres

  • phone (str) : Numéro de téléphone à formater

Retour

  • str : Numéro formaté (chiffres uniquement avec indicatif)

Exemples

from fasoarzeka.utils import format_msisdn

# Avec espaces
phone = format_msisdn("226 70 12 34 56")
print(phone)  # "22670123456"

# Avec + et espaces
phone = format_msisdn("+226 70 12 34 56")
print(phone)  # "22670123456"

# Avec tirets
phone = format_msisdn("226-70-12-34-56")
print(phone)  # "22670123456"

# Déjà formaté
phone = format_msisdn("22670123456")
print(phone)  # "22670123456"

validate_phone_number()

Valide un numéro de téléphone.

Signature

def validate_phone_number(phone: str) -> bool

Paramètres

  • phone (str) : Numéro de téléphone à valider

Retour

  • bool : True si le numéro est valide, False sinon

Exemples

from fasoarzeka.utils import validate_phone_number

# Numéros valides
is_valid = validate_phone_number("22670123456")
print(is_valid)  # True

is_valid = validate_phone_number("22650123456")
print(is_valid)  # True

# Numéros invalides
is_valid = validate_phone_number("226701234")  # Trop court
print(is_valid)  # False

is_valid = validate_phone_number("12670123456")  # Mauvais indicatif
print(is_valid)  # False

generate_hash()

Génère un hash de sécurité pour les transactions.

Signature

def generate_hash(
    mapped_order_id: str,
    amount: int,
    hash_secret: str
) -> str

Paramètres

  • mapped_order_id (str) : ID de la commande

  • amount (int) : Montant de la transaction

  • hash_secret (str) : Clé secrète

Retour

  • str : Hash calculé (SHA-256)

Exemples

from fasoarzeka.utils import generate_hash

hash_value = generate_hash(
    mapped_order_id="ORDER-2026-001",
    amount=1000,
    hash_secret="my_secret_key"
)
print(hash_value)  # "a1b2c3d4e5f6..."

generate_order_id()

Génère un ID de commande unique.

Signature

def generate_order_id(prefix: str = "ORDER") -> str

Paramètres

  • prefix (str) : Préfixe de l’ID (défaut : « ORDER »)

Retour

  • str : ID unique généré

Exemples

from fasoarzeka.utils import generate_order_id

# Avec préfixe par défaut
order_id = generate_order_id()
print(order_id)  # "ORDER-20260223-103015-abc123"

# Avec préfixe personnalisé
order_id = generate_order_id(prefix="PAYMENT")
print(order_id)  # "PAYMENT-20260223-103015-xyz789"

Exemples d’utilisation combinée

Préparer un paiement

from fasoarzeka import ArzekaPayment
from fasoarzeka.utils import (
    format_msisdn,
    validate_phone_number,
    generate_hash,
    generate_order_id
)

def prepare_payment(amount, phone, merchant_id, hash_secret):
    # Valider et formater le numéro
    if not validate_phone_number(phone):
        raise ValueError("Numéro de téléphone invalide")

    phone = format_msisdn(phone)

    # Générer un ID de commande
    order_id = generate_order_id(prefix="PAY")

    # Générer le hash
    hash_value = generate_hash(order_id, amount, hash_secret)

    # Préparer les données
    payment_data = {
        "amount": amount,
        "merchant_id": merchant_id,
        "additional_info": {
            "first_name": "Client",
            "last_name": "Test",
            "mobile": phone
        },
        "mapped_order_id": order_id,
        "hash": hash_value,
        "hash_secret": hash_secret,
        # ... autres paramètres
    }

    return payment_data

# Utilisation
data = prepare_payment(
    amount=1000,
    phone="+226 70 12 34 56",
    merchant_id="MERCHANT_123",
    hash_secret="secret"
)

Voir aussi