Licenciamento cripto-nativo

A licença é a carteira.

Venda uma extensão de navegador, plugin ou app de desktop com cripto sem sistema de contas. O comprador paga da carteira dele, e essa carteira é a licença — ele desbloqueia qualquer outro dispositivo assinando uma mensagem gratuita. Sem e-mail, sem chaves de licença para perder, sem estornos.

Por que isto existe

Os pagamentos da Chrome Web Store foram encerrados em fevereiro de 2021, então todo desenvolvedor de extensões precisa de uma camada de pagamento externa. A opção líder exige conta Stripe, o que exclui completamente desenvolvedores da Turquia, Paquistão, Nigéria, Bangladesh, Indonésia, Egito e muitos outros países.

Os gateways de pagamento cripto param em "pagamento recebido". Entregam um webhook, não uma licença: sem registro de direitos, sem SDK, sem verificação entre dispositivos. Você acaba construindo a metade difícil sozinho. Este kit é essa metade.

Comparação

                        ExtensionPay   Paddle / LS   Gateways cripto   XPayr Kit
taxa                    5% + Stripe    5% + 50c      0.5-1%            2.9% flat
sem Stripe              nao            parcial       sim               sim
camada licenca          sim            parcial       nao               sim
estornos                sim            sim           nenhum            nenhum
comerc. registado       nao            sim           nao               nao

Não somos merchant of record: você declara os próprios impostos. É exatamente isso que a taxa maior da Paddle e da Lemon Squeezy compra, e é um trade-off real que vale entender antes de escolher.

Início rápido

Crie um produto no seu painel de comerciante para obter um código de produto e então conecte o SDK. Não são necessárias host_permissions, então instalar sua extensão não exibe aviso de acesso a dados.

Instalação

npm install @xpayr/extension-kit

# or copy src/index.js into your extension —
# zero dependencies, no build step, MV3-ready

manifest.json

{
  "manifest_version": 3,
  "permissions": ["storage", "alarms"],
  "externally_connectable": { "matches": ["https://xpayr.com/*"] }
}

background.js

import XPayrKit from '@xpayr/extension-kit';

const xpayr = XPayrKit('prod_my_extension');
xpayr.startBackground();          // required: token delivery + daily refresh

xpayr.onLicenseChanged.addListener(user => {
  console.log(user.licensed ? 'unlocked' : 'locked');
});

Bloquear um recurso

const user = await xpayr.getUser();

if (user.licensed) {
  enableProFeatures();
} else {
  showUpgradeButton(() => xpayr.openCheckout());
}

Essa é a integração inteira. O fluxo do comprador — escolher a rede, pagar, assinar, desbloquear — é hospedado por nós em xpayr.com/buy/{product_code}.

O objeto user

Campo Tipo Significado
licensed boolean Condicione seus recursos a isto. Responde a partir de um token verificado localmente, então é instantâneo e funciona offline.
plan 'lifetime' | 'prepaid_year' | null O plano que o comprador adquiriu.
wallet string | null A carteira à qual a licença está vinculada — a que pagou.
paidAt Date | null Quando a licença foi emitida.
expiresAt Date | null Data final para planos por tempo limitado; null para vitalício.
source 'cache' | 'network' De onde veio esta resposta.
staleSince Date | null Definido enquanto opera com um token vencido dentro da janela de tolerância offline de 30 dias.

API

Método Descrição
startBackground() Chame uma vez no seu service worker. Conecta a entrega do token e o alarme de atualização diária.
getUser() Verificação de licença offline-first. Valida localmente o token ES256 em cache — sem ida e volta de rede no caminho crítico.
openCheckout() Abre o checkout hospedado em uma nova aba. O comprador escolhe qualquer rede e token que você tenha habilitado.
openRestore() "Já comprei isto" — desbloqueia outro dispositivo com uma assinatura de carteira. Sem e-mail, sem chave de licença.
refresh() Força a revalidação online. Detecta reembolsos e revogações imediatamente.
getPlans() Informações públicas do produto: preço, tipo de plano, redes permitidas.
onLicenseChanged Dispara sempre que o estado da licença muda.

Como funciona a verificação

  1. O comprador paga da sua carteira no checkout hospedado.
  2. A XPayr registra o direito na carteira que efetuou o pagamento.
  3. O comprador assina uma mensagem gratuita e de uso único provando que controla aquela carteira. Nenhum fundo se move.
  4. A XPayr retorna um token assinado com ES256, restrito ao seu produto e válido por 7 dias.
  5. Sua extensão verifica esse token localmente com WebCrypto a cada getUser() e o renova silenciosamente uma vez por dia.

Ficou offline por um tempo? A licença continua funcionando por 30 dias após o vencimento do token e depois entra em bloqueio suave com um aviso para reconectar — ninguém fica travado no meio do caminho. Reembolsou um cliente? Revogue no painel: a renovação falha na hora e o token morre em 7 dias.

Preços

Seus primeiros 300 $ em vendas de licenças não têm taxa alguma. Depois disso são 2,9% fixos, separados na mesma transação on-chain do pagamento — sem fatura e sem nada a cobrar depois. Sem taxa fixa, sem mensalidade, sem estornos. O gas da rede é à parte e pago pelo comprador.

Licença de 14 $, dentro da faixa gratuita  ->  você recebe 14,00 $Licença de 14 $, após a faixa gratuita  ->  você recebe 13,59 $  (taxa 0,41 $)

Webhooks

Webhooks são opcionais — o Kit emite e verifica licenças sem nenhum backend do seu lado. Se quiser eventos no servidor, eles usam o mesmo esquema de assinatura de qualquer webhook XPayr (veja o guia de assinatura) e são reenviados com backoff. Use o event_id para idempotência.

Evento Quando
license.issued Um pagamento gerou uma licença. Traz a carteira, o código do produto, o plano e o hash da transação.
license.revoked Você revogou uma licença pelo painel, normalmente após um reembolso.
payment.pending Uma sessão de checkout foi criada.
payment.processing O pagamento está on-chain aguardando confirmações.
payment.completed Pagamento verificado on-chain.
payment.failed A transação enviada não foi verificada contra a sessão.
payment.expired A sessão expirou sem pagamento.

Licenciamento com Agentes de IA e MCP (@xpayr/mcp-server)

Emita e gerencie licenças de software vinculadas à carteira com ES256 diretamente do Claude Desktop, Cursor, VS Code Copilot ou agentes autônomos de suporte de IA usando o Servidor MCP oficial da XPayr (`xpayr_issue_wallet_license`).

Invocação da Ferramenta MCP (xpayr_issue_wallet_license)

{
  "name": "xpayr_issue_wallet_license",
  "arguments": {
    "product_id": "prod_my_extension",
    "buyer_wallet": "0x71C...89A",
    "plan": "lifetime",
    "tx_hash": "0x9f8e...3b2a"
  }
}

Selos de Parceiro Verificado e Widget Incorporável de Calculadora de Taxas

Incorpore selos dinâmicos SVG de confiança (partner-badge.php) ou o widget sem dependências da Calculadora de Taxa de 0.5% e Economia (xpayr-fee-widget.js) no README da sua extensão, portal de documentação ou landing page da agência.

Selo SVG Dinâmico de Parceiro e Calculadora Incorporável

<!-- Official Dynamic SVG Trust Badge -->
<a href="https://xpayr.com?utm_source=partner_badge" target="_blank" rel="noopener">
  <img src="https://xpayr.com/partner-badge.php?type=powered_by&theme=dark" alt="Powered by XPayr — 0.5% Non-Custodial Crypto Checkout" height="28">
</a>

<!-- Interactive 0.5% Fee & Savings Calculator Widget -->
<div data-xpayr-fee-widget data-volume="100000" data-invoice="250" data-rate="1.0"></div>
<script src="https://xpayr.com/public/sdk/xpayr-fee-widget.js" async></script>

Migrar do ExtensionPay

ExtensionPayKit XPayr
ExtPay('extension-id') XPayrKit('prod_code')
extpay.startBackground() xpayr.startBackground()
user.paid user.licensed
user.email user.wallet
openPaymentPage() openCheckout()
openLoginPage() openRestore()
onPaid.addListener onLicenseChanged.addListener
getPlans() getPlans()

A única diferença estrutural é a identidade: o ExtensionPay identifica o cliente por e-mail, o Kit identifica pela carteira. Isso elimina a ida e volta do magic link e significa que uma licença não pode ser compartilhada sem compartilhar uma carteira.

Limitações honestas

  • Licenciamento no cliente é um dissuasor, não DRM. Um usuário determinado pode alterar uma verificação local — verdade para toda biblioteca desta categoria, inclusive a nossa.
  • Não somos merchant of record. Você é responsável pela sua declaração de impostos.
  • O comprador precisa de uma carteira. Para públicos cripto-nativos isso não é problema; para consumidores em geral, mantenha também um trilho fiat.
  • Sem assinaturas por débito automático. Em cripto não há cartão salvo, então a v1 suporta licenças vitalícias e anuais pré-pagas.

Começar

SDKs Oficiais no NPM (v0.2.0) e Servidor MCP Remoto

Integre Mais Rápido com Pacotes Oficiais da XPayr e MCP sem Instalação

Instale @xpayr/node-sdk (v0.2.0), @xpayr/payment-evidence (v0.2.0), @xpayr/extension-kit (v0.2.0)ou @xpayr/mcp-server (v1.0.0) pelo NPM, ou execute chamadas de ferramentas JSON-RPC 2.0 ao vivo via POST https://xpayr.com/api/mcp.

Playground MCP ao Vivo (/tools/mcp-playground) Verificador de Licenças ES256 Simulador de Políticas para Agentes de IA Testador de Webhook HMAC-SHA256 mcp.xpayr.com docs.xpayr.com api-docs.xpayr.com