Abonnements
Coin Moebius peut vendre des abonnements récurrents sur chaque fournisseur fiat de votre menu. Le commerçant configure le prix et l'intervalle une fois sur un produit ; le bouton d'achat sur le site reste exactement le même. Le fournisseur de paiement gère la facturation récurrente, détient la carte, réessaie les renouvellements échoués et héberge la page de résiliation. Coin Moebius relaie les événements du cycle de vie à votre code.
Configurer un produit récurrent
Dans l'onglet Produits du tableau de bord, réglez le champ Facturation sur Mensuel ou Annuel au lieu de Ponctuel. Un champ optionnel Essai gratuit apparaît pour les jours d'essai que vous voulez accorder avant le premier débit. Enregistrez le produit.
Le HTML du bouton d'achat ne change pas. Le même attribut product-id="pro-plan" fonctionne pour le ponctuel ou le récurrent ; le worker vérifie le réglage de facturation du produit au moment du paiement et passe par l'API d'abonnement du fournisseur le cas échéant.
<coin-moebius-buy
project-id="proj_YOUR_ID"
product-id="pro-plan"
label="Subscribe to Pro">
</coin-moebius-buy>Ce que vous n'avez pas à construire
Le fournisseur gère le calendrier. Nous ne stockons pas de cartes. Nous ne faisons pas tourner de tâches cron. Nous ne réessayons pas les débits échoués. Nous n'envoyons pas d'e-mails de relance. Nous n'hébergeons pas de page de résiliation. Tout ce côté du système vit à l'intérieur de Stripe (ou du fournisseur fiat que vous avez connecté). Vous externalisez les parties difficiles de la facturation récurrente à l'entreprise qui les fait déjà tourner pour des millions de commerçants.
Événements d'abonnement
Les renouvellements et résiliations apparaissent comme des événements de webhook auxquels votre serveur peut réagir. Cinq types normalisés couvrent le cycle de vie :
| Événement | Quand il se déclenche |
|---|---|
subscription.created | Nouvelle inscription. Porte le montant du premier cycle. |
subscription.renewed | Un cycle non initial a réussi. Prolongez l'accès jusqu'à la nouvelle fin de période. |
subscription.payment_failed | La carte d'un cycle a été refusée. La relance du fournisseur réessaie selon son calendrier ; vous le consignez généralement juste pour la visibilité. |
subscription.canceled | Résiliation terminale. L'acheteur a résilié, la relance a été épuisée, ou le commerçant a résilié. |
subscription.updated | Changement de statut, mise à jour de carte, changement de forfait. Inspectez le nouveau statut. |
Identifier les acheteurs sans les stocker
Coin Moebius est un routeur de paiement, pas une base de données client. Nous ne stockons jamais les e-mails, noms, adresses des acheteurs, ni les identifiants client internes du fournisseur. Si votre application a des comptes utilisateurs (la plupart des applications d'abonnement en ont), transmettez votre propre identifiant utilisateur opaque en tant que customer-ref sur le bouton d'achat. Le bouton le transmet au worker en tant que metadata.customerRef, nous le faisons passer jusqu'au fournisseur, le faisons remonter sur chaque événement, et ne stockons que cette chaîne opaque. Pour nous, elle n'a aucun sens ; pour vous, c'est la clé étrangère vers votre propre système d'utilisateurs.
<coin-moebius-buy
project-id="proj_YOUR_ID"
product-id="pro-plan"
customer-ref="user_bob_42">
</coin-moebius-buy>Quand vous avez besoin de détails d'acheteur plus poussés (e-mail, quatre derniers chiffres de carte, notes de litige), le tableau de bord renvoie par lien chaque transaction par carte vers le fournisseur qui l'a traitée (Stripe, PayPal, Square ou Authorize.Net), où vit réellement le dossier de l'acheteur. Vous cliquez dessus ; nous ne le dupliquons jamais.
Résiliation : renvoyez par lien, ne construisez pas
Les acheteurs résilient dans le portail hébergé du fournisseur : le Stripe Customer Portal, la page de compte PayPal de l'acheteur, et ainsi de suite. Le portail gère la résiliation, les mises à jour de carte, les téléchargements de reçus et les changements de forfait, toute une interface que vous n'avez pas à construire. Vous pouvez déposer l'acheteur dans le portail en un seul appel API :
const res = await fetch(
`https://api.coinmoebius.com/api/subscriptions/${projectId}/${subId}/portal-url`,
{ method: 'POST', body: JSON.stringify({ returnUrl: 'https://you.example/account' }) },
);
const { url } = await res.json();
window.location.assign(url);Quels fournisseurs prennent en charge les abonnements aujourd'hui
Stripe et PayPal fonctionnent de bout en bout via le bouton d'achat hébergé. Réglez un produit en Mensuel ou Annuel dans votre tableau de bord, collez le bouton sur votre page, et le clic démarre un véritable abonnement. Le fournisseur gère les renouvellements.
Les abonnements Square et Authorize.Net ne passent pas par le bouton d'achat hébergé. Vous créez l'abonnement via votre propre intégration avec le fournisseur (pour Authorize.Net, cela signifie collecter la carte sur votre propre page avec Accept.js ; Square a son propre paiement d'abonnement hébergé que vous pouvez utiliser), puis pointez le webhook du fournisseur vers nous. À partir de là, le reste du système (routage des webhooks, tableau de bord, endpoint de statut, liaison client) fonctionne exactement de la même façon que pour les abonnements Stripe et PayPal. Voir la section suivante.
Les fournisseurs crypto (NOWPayments) ne prennent pas en charge la facturation récurrente dans ce produit. Le récurrent en crypto est plein de frictions sur chaque passerelle que nous avons évaluée ; nous préférons ne rien livrer plutôt que de livrer une histoire à moitié cassée.