Introduction
Le Paiement de Factures vous permet de payer les factures algériennes de services publics et de télécommunications pour le compte de vos propres clients. Vous demandez à un facturier ce qu’un compte doit, vous payez l’une des factures renvoyées, vous la suivez jusqu’à un état final, et vous conservez le reçu. Tout le produit tient en cinq appels. Cette page est la carte ; chaque étape ci-dessous renvoie vers un guide avec du code fonctionnel en cURL, Node.js, Python et PHP.Le Paiement de Factures est hébergé sur
https://billapi.oneclickdz.com — une URL de base différente de celle du reste de la plateforme. L’en-tête d’authentification est le même que celui que vous utilisez déjà : X-Access-Token.Comment ça fonctionne
Les cinq étapes
1
Vérifier que le facturier est disponible
Lisez la carte de disponibilité et masquez tout facturier
UNAVAILABLE avant que votre client ne commence à remplir un formulaire.→ Étape 1 : Partenaires et comptes2
Découvrir ce qui est dû
Envoyez le partenaire, l’identifiant du compte et votre propre
ref. Vous recevez un transactionId en retour ; les factures arrivent sur cette transaction un instant plus tard.→ Étape 2 : Découverte des factures3
Payer une facture
Choisissez un
billId dans bills[], montrez amount + fee à votre client, et soumettez le paiement avec un nouveau ref.→ Étape 3 : Paiement des factures4
Interroger jusqu'à ce que le statut soit final
SUCCESS, FAILED ou REFUNDED. UNKNOWN signifie qu’il faut continuer à interroger — ne remboursez jamais votre client et ne réessayez jamais le paiement tant qu’il dure.→ Étape 4 : Suivi du statut5
Conserver le reçu et rapprocher
Téléchargez le reçu, stockez-le avec l’
operationId, et effectuez un rapprochement quotidien avec votre propre registre.→ Étape 5 : Reçus et rapprochementCe que vous devez savoir
Tout est asynchrone
POST /v3/bills/discover et POST /v3/bills/pay répondent tous les deux 200 immédiatement. Ce 200 signifie accepté, pas terminé.
Les facturiers et leurs identifiants
Cinq facturiers, chacun avec un seul champ d’identifiant. Envoyez le champ qui correspond au partenaire ; l’API renvoie ce même champ sur chaque transaction.SEAAL et AADL sont actuellement UNAVAILABLE en sandbox comme en production. Lisez la carte de disponibilité plutôt que de coder cela en dur.
→ Règles d’identifiant, formats et exemples
Les sept statuts
→ La machine à états complète et un poller de qualité production
Les frais et le plancher de 200 DZD
Chaque facture porte ses propres champs monétaires :-
amount— ce qui est dû au facturier, en DZD. -
fee— les frais de service OneClickDz : un pourcentage du montant, borné entre un minimum et un maximum, défini par facturier :En pratique, la plupart des factures paient le minimum : 0,5 % ne dépasse 30 DZD qu’au-delà d’une facture de 6 000 DZD. Ces valeurs relèvent de la configuration et peuvent être ajustées : lisez doncfeedepuis la réponse plutôt que de le recalculer. -
total—amount + fee, le montant débité de votre solde.
bills[]. Une transaction READY avec un bills[] vide signifie donc soit « rien n’est dû », soit « tout ce qui est dû est sous le plancher » — l’API ne fait pas la distinction. Dites à votre client « aucune facture n’est payable pour le moment », et non « vous ne devez rien ».
Votre référence est votre filet de sécurité
ref est obligatoire sur discover comme sur pay, fait au maximum 100 caractères, et doit être unique parmi vos transactions actives pour ce facturier. En réutiliser un renvoie 403 DUPLICATED_REF.
Dérivez-le de quelque chose que vous stockez déjà, afin qu’après un timeout vous puissiez toujours demander ce qu’est devenu ce ref au lieu de renvoyer la requête.
Utilisez un
ref différent pour la découverte et pour le paiement. La transaction conserve son ref de découverte d’origine, et c’est celui-là que by-ref recherche.Sandbox
Le sandbox utilise le même hôte, les mêmes routes, la même enveloppe et le même cycle de vie. La seule différence est qu’une clé sandbox n’atteint jamais un facturier et ne déplace jamais d’argent. Le résultat que vous obtenez est déterminé par l’identifiant de compte que vous envoyez, vous pouvez donc reproduire un refus, un remboursement et un paiement non confirmé à la demande. Chaque clé est liée à un seul environnement. Appelez Valider la clé API et lisezkey.type pour savoir laquelle vous détenez.
→ Tous les scénarios sandbox, et une checklist de mise en production
Points clés
200 est un accusé de réception, pas un résultat
200 est un accusé de réception, pas un résultat
Les deux endpoints d’écriture acceptent le travail et répondent immédiatement. Le résultat se trouve dans le
status de la transaction.→ Étape 4 : Suivi du statutNe réessayez jamais un paiement sur UNKNOWN
Ne réessayez jamais un paiement sur UNKNOWN
UNKNOWN signifie que le résultat n’est pas encore confirmé. Continuez à interroger — il se résout en SUCCESS ou REFUNDED. Rembourser votre propre client ou renvoyer le paiement tant qu’il dure, c’est ainsi que l’argent est perdu deux fois.→ Gérer UNKNOWNConsultez, ne renvoyez pas
Consultez, ne renvoyez pas
Chaque timeout, chaque
DUPLICATED_REF, chaque échec inexpliqué se règle en consultant le ref. Une seconde écriture n’est jamais la bonne façon de récupérer.→ Étape 2 : Découverte des facturesLisez fee et total depuis la réponse
Lisez fee et total depuis la réponse
Les frais sont configurés par partenaire et peuvent changer. Facturez à votre client le
total renvoyé par l’API, jamais un montant que vous avez calculé.→ Étape 3 : Paiement des facturesUne transaction qui n'est pas la vôtre est un 404
Une transaction qui n'est pas la vôtre est un 404
Une transaction qui ne vous appartient pas — ou qui appartient à l’autre environnement — renvoie
404, jamais 403. L’API ne confirme jamais l’existence de la transaction de quelqu’un d’autre.→ Obtenir une transaction par IDRéférence API
Valider la clé API
GET /v3/validate
Lister les partenaires
GET /v3/partners
Découvrir les factures
POST /v3/bills/discover
Payer une facture
POST /v3/bills/pay
Obtenir une transaction par ID
GET /v3/bills/transactions/id
Obtenir une transaction par référence
GET /v3/bills/transactions/by-ref
Lister les transactions
GET /v3/bills/transactions
Télécharger le reçu
GET /v3/bills/transactions/id/receipt
Démarrer l’intégration
Commencer par l'Étape 1 : Partenaires et comptes
Vérifiez la disponibilité et apprenez les règles d’identifiant de chaque facturier
Ressources supplémentaires
Authentification
Clés, en-têtes et environnements
Format de réponse
L’enveloppe renvoyée par chaque endpoint
Gestion des erreurs
Chaque code d’erreur et ce qu’il faut faire
Stratégies de polling
Intervalles, backoff et plafonds
Bonnes pratiques de sécurité
Protégez vos clés et vos clients
Contacter le support
Obtenez l’aide de notre équipe

