Assinaturas
Coin Moebius pode vender assinaturas recorrentes em todo provedor de moeda fiduciária no seu menu. O comerciante configura o preço e o intervalo uma vez em um produto; o botão de compra no site permanece exatamente o mesmo. O provedor de pagamento roda a cobrança recorrente, guarda o cartão, tenta novamente renovações que falham, e hospeda a página de cancelamento. Coin Moebius repassa os eventos do ciclo de vida para o seu código.
Configurando um produto recorrente
Na aba Produtos do painel, defina o campo Cobrança como Mensal ou Anual em vez de Único. Um campo opcional de Teste gratuito aparece para quaisquer dias de teste que você queira conceder antes da primeira cobrança. Salve o produto.
O HTML do botão de compra não muda. O mesmo atributo product-id="pro-plan" funciona para único ou recorrente; o worker verifica a configuração de cobrança do produto no momento do checkout e roteia através da API de assinatura do provedor quando aplicável.
<coin-moebius-buy
project-id="proj_YOUR_ID"
product-id="pro-plan"
label="Subscribe to Pro">
</coin-moebius-buy>O que você não precisa construir
O provedor roda o cronograma. Nós não guardamos cartões. Não rodamos cron jobs. Não tentamos novamente cobranças que falham. Não enviamos e-mails de recuperação. Não hospedamos uma página de cancelamento. Todo esse lado do sistema vive dentro do Stripe (ou de qualquer provedor fiduciário que você tenha conectado). Você está terceirizando as partes difíceis da cobrança recorrente para a empresa que já as roda para milhões de comerciantes.
Eventos de assinatura
Renovações e cancelamentos aparecem como eventos de webhook aos quais o seu servidor pode reagir. Cinco tipos normalizados cobrem o ciclo de vida:
| Evento | Quando dispara |
|---|---|
subscription.created | Novo cadastro. Carrega o valor do primeiro ciclo. |
subscription.renewed | Um ciclo não inicial foi bem-sucedido. Estenda o acesso até o novo fim de período. |
subscription.payment_failed | O cartão de um ciclo foi recusado. A recuperação do provedor tenta novamente no cronograma dele; você normalmente só registra isto para visibilidade. |
subscription.canceled | Cancelamento terminal. O comprador cancelou, a recuperação se esgotou, ou o comerciante cancelou. |
subscription.updated | Mudança de status, atualização de cartão, mudança de plano. Inspecione o novo status. |
Identificando compradores sem armazená-los
Coin Moebius é um roteador de pagamentos, não um banco de dados de clientes. Nunca armazenamos e-mails, nomes, endereços de compradores, nem os ids de cliente internos do provedor. Se a sua aplicação tem contas de usuário (a maioria dos apps de assinatura tem), passe o seu próprio id de usuário opaco como customer-ref no botão de compra. O botão o encaminha para o worker como metadata.customerRef, nós o passamos para o provedor, o trazemos de volta em cada evento, e armazenamos apenas essa string opaca. Para nós ela não tem significado; para você é a chave estrangeira para o seu próprio sistema de usuários.
<coin-moebius-buy
project-id="proj_YOUR_ID"
product-id="pro-plan"
customer-ref="user_bob_42">
</coin-moebius-buy>Quando você precisa de detalhes mais profundos do comprador (e-mail, últimos quatro dígitos do cartão, notas de disputa), o painel tem um link de cada transação de cartão para o provedor que cuidou dela (Stripe, PayPal, Square, ou Authorize.Net), onde o registro do comprador realmente fica. Você clica para acessar; nunca o duplicamos.
Cancelamento: linke para fora, não construa
Os compradores cancelam no portal hospedado do provedor: o Portal do Cliente do Stripe, a página de conta PayPal do comprador, e assim por diante. O portal cuida do cancelamento, atualizações de cartão, downloads de recibo, e mudanças de plano, toda interface que você não precisa construir. Você pode levar o comprador ao portal com uma chamada de 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);Quais provedores suportam assinaturas hoje
Stripe e PayPal funcionam de ponta a ponta através do botão de compra hospedado. Defina um produto como Mensal ou Anual no seu painel, cole o botão na sua página, e o clique inicia uma assinatura real. O provedor roda as renovações.
As assinaturas no Square e Authorize.Net não rodam através do botão de compra hospedado. Você cria a assinatura através da sua própria integração com o provedor (para o Authorize.Net, isso significa coletar o cartão na sua própria página com Accept.js; o Square tem o próprio checkout de assinatura hospedado que você pode usar), depois aponta o webhook do provedor para nós. A partir daí, o resto do sistema (roteamento de webhook, painel, endpoint de status, vínculo de cliente) funciona exatamente da mesma forma que para as assinaturas do Stripe e do PayPal. Veja a próxima seção.
Os provedores de cripto (NOWPayments) não suportam cobrança recorrente neste produto. Cripto recorrente tem muita fricção em todo gateway que avaliamos; preferimos não entregar nada a entregar uma história meio quebrada para isso.