Aller au contenu principal

Programme d'affiliation

Endpoints de gestion du programme de parrainage et des retraits.

Authentification requise

Tous les endpoints de cette section nécessitent Authorization: Bearer {token}.


GET /api/user/affiliation/overview

Retourne le solde retirable, le total gagné, le nombre de filleuls actifs et le palier minimum de retrait.

Réponse 200

{
"user": {},
"message": "Vue d'ensemble de votre affiliation.",
"data": {
"wallet": {
"balance": 12500,
"total_earned": 37500
},
"godchildren_count": 8,
"withdraw_min": 5000
},
"errors": []
}
ChampDescription
balanceSolde actuellement retirable en XAF
total_earnedCumul de tout ce qui a été gagné (balance + retraits terminés)
withdraw_minMontant minimum requis pour placer un retrait

GET /api/user/affiliation/godchildren

Retourne la liste complète des filleuls (sans pagination).

Réponse 200

{
"user": {},
"message": "Liste de vos filleuls.",
"data": {
"godchildren": [
{
"id": 12,
"name": "Moussa Traoré",
"phone": "+225070000000",
"avatar": "/storage/avatars/user/12/photo.jpg",
"created_at": "2026-03-08T14:00:00.000000Z"
}
]
},
"errors": []
}

GET /api/user/affiliation/withdrawals

Retourne l'historique paginé des demandes de retrait.

Paramètres (query string)

ChampTypeObligatoireDescription
statusstringNonFiltre : pending, success, cancelled
per_pageintegerNonRésultats par page (défaut : 10, max : 50)
pageintegerNonNuméro de page (défaut : 1)

Réponse 200

{
"user": {},
"message": "Historique de vos retraits.",
"data": {
"withdrawals": [
{
"id": 5,
"amount": 10000,
"status": "success",
"message": null,
"meta": {
"phone": "+237690000000",
"operator": { "name": "Orange Money", "icon": "..." }
},
"created_at": "2026-03-09T10:00:00.000000Z"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 10,
"total": 1,
"has_more": false
}
},
"errors": []
}

POST /api/user/affiliation/withdraw

Place une demande de retrait. Le montant est débité immédiatement ; la demande reste en pending jusqu'au traitement manuel.

Paramètres (body JSON)

ChampTypeObligatoireDescription
amountintegerOuiMontant en XAF (minimum : 5 000)
phonestringOuiNuméro Mobile Money de réception (format E.164)
operatorobjectOuiInformations de l'opérateur sélectionné

Exemple

{
"amount": 10000,
"phone": "+237690000000",
"operator": {
"name": "Orange Money",
"icon": "https://..."
}
}

Réponses

201 — Retrait enregistré :

{
"user": { "id": 1, "money_balance": 2500 },
"message": "Demande de retrait enregistrée avec succès.",
"data": {
"balance": 2500
},
"errors": []
}

402 — Solde insuffisant :

{
"user": {},
"message": "Solde insuffisant pour effectuer ce retrait.",
"data": {
"balance": 3000,
"required": 10000
},
"errors": []
}

422 — Paramètres invalides :

{
"user": null,
"message": "Données invalides.",
"errors": {
"amount": ["The amount field must be at least 5000."]
}
}