@chrono-os/payment-mercadopago
v0.1.0
Published
Mercado Pago payment plugin para Fastify — createPreference + webhook handler com HMAC verify + idempotency + bootstrap mode (manual_fallback sem token)
Maintainers
Readme
@chrono-os/payment-mercadopago
Mercado Pago payment plugin para Fastify — createPreference + webhook handler com HMAC-SHA256 signature verify + anti-replay + idempotency + bootstrap mode (manual_fallback quando MP_ACCESS_TOKEN ausente).
Status
🚧 0.1.0 em construção — código será extraído do SobreVivendo Adulto durante a Fase 1 da Trilha C (Modularização).
Install
yarn add @chrono-os/payment-mercadopagoPacote público em npmjs.org — sem auth nem .npmrc necessário.
Uso
import Fastify from 'fastify'
import { paymentMercadopagoPlugin } from '@chrono-os/payment-mercadopago/fastify'
const server = Fastify()
await server.register(paymentMercadopagoPlugin, {
accessToken: process.env.MP_ACCESS_TOKEN,
webhookSecret: process.env.MP_WEBHOOK_SECRET,
successUrl: 'https://meusite.com.br/checkout/sucesso',
failureUrl: 'https://meusite.com.br/checkout/falha',
pendingUrl: 'https://meusite.com.br/checkout/pendente',
onPaid: async (order) => {
// Sua lógica pós-pagamento: enviar e-mail, criar membership, etc.
},
})
// Rotas expostas:
// POST /orders/create → cria Order + Mercado Pago preference
// POST /webhooks/mp → webhook MP (signature verify + idempotência)API
paymentMercadopagoPlugin(opts)— Fastify plugin que registra rotas + serviceorderInputSchema(de/schema) — Zod schema pra OrdercreatePreference(input)— service standalone (caso queira chamar fora do plugin)
Bootstrap mode
Sem MP_ACCESS_TOKEN:
createPreferenceretorna{ kind: 'manual_fallback' }- Webhook continua aceitando POSTs mas só loga (não verifica signature sem secret)
- App não crasha — útil em dev e CI
Versionamento
SemVer. Releases via tag v* no repo. Ver CHANGELOG.md.
Origem
Extraído de SugarHoneyIceTea/sobrevivendo-adulto — arquivos apps/api/src/services/payment.service.ts, apps/api/src/routes/payment.ts, apps/api/src/routes/webhooks.ts (handler MP), apps/api/src/lib/mp-signature.ts, apps/api/src/schemas/order.schema.ts.
