Django-Intram est un plugin Django qui permet d'intégrer facilement les paiements Intram dans votre application Django. Ce guide vous accompagnera pas à pas dans l'implémentation de la solution.
Prérequis
Django 3.2 ou supérieur
Python 3.7 ou supérieur
Un compte Intram avec vos clés d'API
pip installé sur votre système
Installation
Installez le package via pip :
pip install django-intram
Ajoutez 'django_intram' à vos INSTALLED_APPS dans settings.py :
INSTALLED_APPS = [
...
'django_intram',
]
Configuration
1. Configuration des clés API
Dans votre fichier settings.py, ajoutez vos clés API Intram :
from django.urls import path, include
urlpatterns = [
...
path('payments/', include('django_intram.urls')),
]
Utilisation
1. Exemple basique d'intégration
Dans votre vue (views.py) :
from django.shortcuts import render
from django.conf import settings
from django_intram import Intram
def process_payment(request):
# Créez une instance Intram
intram = Intram(
public_key=settings.INTRAM_PUBLIC_KEY,
private_key=settings.INTRAM_PRIVATE_KEY,
secret=settings.INTRAM_SECRET,
marchand_id=settings.INTRAM_MARCHAND_ID,
sandbox=settings.INTRAM_SANDBOX
)
# Configurez le paiement
intram.set_currency("XOF")
intram.set_amount(5000) # Montant en centimes
intram.set_description("Achat de produit")
intram.set_name_store("Ma Boutique")
# URLs de redirection
intram.set_return_url("https://votre-site.com/success")
intram.set_cancel_url("https://votre-site.com/cancel")
intram.set_redirection_url("https://votre-site.com/callback")
# Initialisez le paiement
response = intram.set_request_payment()
return render(request, 'payment.html', {'payment_url': response['payment_url']})
Dans votre template (payment.html) :
<form action="{{ payment_url }}" method="POST">
<button type="submit">Procéder au paiement</button>
</form>
2. Gestion des callbacks
Créez une vue pour gérer les retours de paiement :
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def payment_callback(request):
if request.method == 'POST':
# Récupérez les données de la transaction
transaction_data = request.POST
# Vérifiez le statut de la transaction
intram = Intram(...)
status = intram.get_transaction_status(transaction_data['transaction_id'])
if status['status'] == 'success':
# Traitez le paiement réussi
return JsonResponse({'status': 'success'})
else:
# Gérez l'échec du paiement
return JsonResponse({'status': 'failed'})