Abonnements pour les développeurs et les petites entreprises
Encaissez à chaque période, depuis un lien.
Abuna gère votre paiement, vos renouvellements et vos rappels. À chaque période, vos clients reçoivent un lien de paiement par e-mail et Telegram. Quand ils paient, votre serveur reçoit un webhook signé. Vous ne construisez pas la facturation.
Commencez en mode Test. Rien ne débite un vrai client.
Kribi Fitness
Telegram · à l'instant
Bonjour Amina, votre formule Mensuel se renouvelle le 1er octobre.
Montant dû FCFA 15,000
invoice.paid · signature vérifiée
Fonctionnement
De l'inscription au premier renouvellement
- 01
Créez une application
Inscrivez-vous et créez une application. Vous recevez une clé publiable, une clé secrète et un secret de signature de webhook.
- 02
Ajoutez des produits et des tarifs
Définissez un montant et la fréquence de renouvellement : tous les quelques jours, semaines, mois ou années.
- 03
Partagez le lien de paiement
Chaque tarif a son lien de paiement hébergé. Envoyez-y vos clients depuis votre site, une discussion ou un QR code.
- 04
Laissez Abuna gérer les renouvellements
À chaque période, votre client reçoit un lien de paiement. Quand il paie, votre serveur reçoit un webhook signé.
Fonctionnalités
Tout ce dont un abonnement a besoin après le paiement
Abuna suit chaque abonnement, pour que vous n'ayez pas à relancer les paiements ni à construire des écrans de facturation.
Paiement hébergé
Une page de paiement pour chaque tarif. Aucun formulaire de paiement à construire ni à héberger.
Liens de paiement par e-mail et Telegram
Chaque lien de paiement de renouvellement part par e-mail. Les clients qui connectent Telegram le reçoivent aussi là. Un seul geste suffit.
Portail client
Chaque client reçoit un lien privé pour voir sa formule et ses factures, payer ce qui est dû ou annuler. Aucun compte nécessaire.
Webhooks signés
Chaque événement est signé avec votre secret, réessayé en cas d'échec et journalisé. Renvoyez n'importe quelle livraison depuis le tableau de bord.
Modes Test et Réel
Essayez tout le parcours en mode Test, avec ses propres données et clés. Passez en mode Réel quand vous êtes prêt.
Équipes
Invitez vos collègues par lien pour qu'ils gèrent vos applications avec vous.
Votre argent
Abuna ne fait que collecter les paiements
Les clients paient directement sur votre propre compte prestataire. Abuna n'envoie jamais d'argent depuis ce compte. Nous demandons des identifiants de collecte uniquement et les stockons chiffrés. Si votre prestataire ne peut pas restreindre une clé, vérifiez avec lui avant de la connecter.
Choisir les bons identifiants de prestataireDéveloppeurs
Votre serveur est informé de chaque paiement
Abuna envoie un POST à votre URL de webhook pour chaque événement. Vérifiez la signature, puis mettez à jour votre produit.
En-têtes sur chaque livraison
- X-Abuna-Event
- Le type d'événement
- X-Abuna-Delivery
- L'ID de livraison
- X-Abuna-Signature
- sha256=HMAC du corps brut, avec votre secret de signature
- X-Abuna-Signature-Previous
- Pendant 24 heures après une rotation, le même HMAC avec votre ancien secret
Événements
- subscription.created
- subscription.paid
- invoice.paid
- subscription.renewed
- subscription.updated
- subscription.canceled
Les livraisons en échec sont réessayées. Vous pouvez renvoyer n'importe quel événement depuis le tableau de bord ; il conserve le même ID d'événement, vous pouvez donc ignorer les doublons.
import crypto from "node:crypto";
// Use the raw request body: the signature covers its exact bytes.
export function verify(rawBody, header, secret) {
const expected = "sha256=" +
crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(header), b = Buffer.from(expected);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
app.post("/webhooks/abuna", (req, res) => {
// For a day after you rotate the secret, the old one signs Signature-Previous.
const secret = process.env.ABUNA_WEBHOOK_SECRET;
const ok = ["X-Abuna-Signature", "X-Abuna-Signature-Previous"]
.some((h) => verify(req.rawBody, req.get(h) ?? "", secret));
if (!ok) return res.sendStatus(400);
const event = JSON.parse(req.rawBody);
if (event.type === "invoice.paid") {
// Give the customer access for the new period.
}
res.sendStatus(200);
});FAQ
Questions fréquentes
Mes clients ont-ils besoin d'un compte ?
Non. Les clients s'abonnent via votre lien de paiement. Leurs messages de renouvellement contiennent un lien de paiement et un lien vers leur portail, où ils peuvent voir leur formule, payer ou annuler.
Comment les clients reçoivent-ils les messages Telegram ?
Connectez votre bot Telegram dans les paramètres de votre application. Chaque client connecte ensuite Telegram une fois, en un geste. L'e-mail continue de partir pour tout le monde.
Que se passe-t-il quand un client ne paie pas ?
Chaque renouvellement a un court délai de grâce pour payer. S'il reste impayé après, Abuna annule l'abonnement et envoie à votre serveur un webhook subscription.canceled.
Puis-je l'essayer avant de débiter qui que ce soit ?
Oui. Le mode Test a ses propres clés et données, et rien n'y débite un vrai client. Parcourez le paiement, les renouvellements et les webhooks, puis passez en mode Réel.
À qui s'adresse Abuna ?
Aux développeurs et aux petites entreprises qui vendent des abonnements, des cours, des logiciels ou des services. Il est conçu pour des lieux comme le Cameroun, où les gens paient pour chaque période depuis un lien au lieu d'enregistrer une carte.
Commencez en mode Test aujourd'hui.
Créez une application, partagez un lien de paiement et regardez arriver le premier webhook.