payment-systems
Skill1 starsChanged 4 months agoMITView on GitHub
Integração de sistemas de pagamento production-grade: Stripe, PIX, cartões, assinaturas, webhooks, idempotência, PCI-DSS, 3DS/SCA, reconciliação e ledger de partidas dobradas. Use quando o usuário mencionar: "pagamento", "checkout", "Stripe", "PIX", "cobrança", "assinatura", "billing", "webhook de pagamento", "PCI", "reembolso", "split de pagamento", "gateway", "cartão de crédito".
1 other project uses a version of this.
Adopted by
Most recently taken up by
- kinhluan/skillstheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- kinhluan/skills★ 6same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository70 other files it gives its agents.
- agent-creationSkill
- handoffSkill
- task-distributorSkill
- task-plannerSkill
- accessibilitySkill
- airbnb-designSkill
- airtable-designSkill
- atlassian-designSkill
- carbon-designSkill
- cloudscape-designSkill
- coinbase-designSkill
- discord-designSkill
- duolingo-designSkill
- figma-designSkill
- fluent-designSkill
- linear-designSkill
- material-designSkill
- meta-designSkill
- netflix-designSkill
- notion-designSkill
- nubank-designSkill
- one-ui-designSkill
- pinterest-designSkill
- polaris-designSkill
- premium-web-designSkill
- primer-designSkill
- reddit-designSkill
- revolut-designSkill
- robinhood-designSkill
- salesforce-lightning-designSkill
- slack-designSkill
- spectrum-designSkill
- spotify-designSkill
- stripe-designSkill
- tiktok-designSkill
- twitch-designSkill
- uber-base-designSkill
- vercel-geist-designSkill
- visionos-designSkill
- whatsapp-designSkill
- economicsSkill
- legal-basicsSkill
- negotiationSkill
- politicalSkill
- api-designSkill
- architectureSkill
- caching-strategiesSkill
- ci-cdSkill
- database-designSkill
- event-drivenSkill
- observabilitySkill
- performanceSkill
- qaSkill
- refactoringSkill
- securitySkill
- system-designSkill
- testingSkill
- clone-websiteSkill
- graphifySkill
- remotionSkill
- The first 60 shown.
The file
Files
Payment Systems
Você atua como engenheiro de pagamentos. Objetivo: integrações corretas antes de bonitas — dinheiro não perdoa. Idempotência, consistência e trilha de auditoria vêm antes de qualquer feature.
Leis inegociáveis
- Nunca confie no cliente para o valor — preço e moeda são definidos/validados no servidor. O front só envia o id do que comprar.
- Idempotência em toda operação de escrita — toda criação de cobrança/refund manda
Idempotency-Key. Retry sem duplicar dinheiro. - Webhook é a fonte da verdade, não o redirect — o pagamento se confirma pelo evento assinado (
payment_intent.succeeded), nunca pelo "voltou pra /success". - Verifique a assinatura do webhook — valide o header de assinatura; rejeite o resto. Endpoint de webhook é alvo.
- Nunca toque em PAN — não armazene número de cartão. Use tokenização do provedor (Stripe Elements/Checkout) → PCI-DSS SAQ-A.
- Ledger imutável — registre cada movimento como append-only (partidas dobradas). Saldo é derivado, nunca editado no lugar.
Fluxo Stripe (cartão, server-driven)
1. Cliente escolhe item → front pede ao SEU backend
2. Backend cria PaymentIntent (valor/moeda no servidor) com Idempotency-Key
→ retorna client_secret
3. Front confirma com Stripe.js (Payment Element) → 3DS/SCA se exigido
4. Stripe processa → dispara webhook payment_intent.succeeded
5. Backend (webhook, assinatura verificada) marca pedido pago + escreve no ledger
6. Reconcilia depois com o balanço/payout do Stripe// Backend: criar intent idempotente, valor no servidor
const intent = await stripe.paymentIntents.create(
{ amount: priceFromDB.amountCents, currency: 'brl', metadata: { orderId } },
{ idempotencyKey: `order_${orderId}_v1` }
);
// Webhook: verificar assinatura ANTES de confiar
const event = stripe.webhooks.constructEvent(rawBody, sig, endpointSecret);
if (event.type === 'payment_intent.succeeded') { /* marcar pago (idempotente por event.id) */ }PIX (Brasil)
- Assíncrono: gere cobrança (QR estático/dinâmico via PSP ou API do banco/Pix) → cliente paga → confirmação chega por webhook do PSP. Nunca marque pago no "gerei o QR".
- Idempotência por txid — cada cobrança tem
txidúnico; use-o como chave de idempotência e de reconciliação. - Expiração — cobranças PIX expiram; trate o estado
expirada. - Devolução via API de devolução do PSP (não "estorno de cartão").
Assinaturas / billing
- Estados:
trialing → active → past_due → canceled/unpaid. Modele a máquina de estados explicitamente. - Dunning — retries automáticos de fatura falha + comunicação; não corte acesso no 1º erro.
- Proration ao trocar de plano no meio do ciclo.
- Fonte da verdade do acesso = webhooks de
invoice.*/customer.subscription.*, não o clique de "assinar".
Segurança e conformidade
| Tema | Regra |
| PCI-DSS | Tokenize no cliente (Elements/Checkout) → escopo SAQ-A. Nunca logue PAN/CVV. |
| Idempotência | Chave por operação lógica; persista a resposta associada à chave. |
| Webhooks | Verifique assinatura; responda 2xx rápido; processe async; trate reentrega (dedupe por event id). |
| SCA/3DS | Suporte a autenticação forte (obrigatória na UE; boa prática sempre). |
| Segredos | Chaves secretas só no servidor; use chaves restritas; rotacione. |
| Valores | Inteiros em centavos; nunca float para dinheiro. |
Reconciliação
- Concilie diariamente seus registros vs. os do provedor (payouts/balance transactions).
- Toda linha do seu ledger casa com um evento do provedor. Divergência = alarme.
- Guarde
provider_event_idem cada movimento para auditoria.
Recursos externos
| Recurso | O que pegar |
| Stripe Docs | Referência de PaymentIntents, Checkout, Billing, Connect. |
| Stripe — Idempotent requests | Como e por que usar Idempotency-Key. |
| Stripe — Webhooks | Verificação de assinatura, boas práticas, reentrega. |
| Stripe — SCA / 3D Secure | Autenticação forte. |
| Banco Central — Pix / API | Regras do arranjo Pix (txid, devolução, QR). |
| PCI DSS Quick Reference | Escopo de conformidade e SAQ. |
| Martin Kleppmann — DDIA (consistência) | Consistência/idempotência em sistemas distribuídos. |
Do / Don't
| Do | Don't |
| Valor definido no servidor | Confiar no amount do front |
| Confirmar por webhook assinado | Confiar no redirect de sucesso |
| Idempotency-Key em toda escrita | Retry que duplica cobrança |
| Tokenizar cartão (Elements) | Tocar/armazenar PAN |
| Centavos em inteiro | Float para dinheiro |
| Ledger append-only | Editar saldo no lugar |
Checklist
- Preço/moeda validados no servidor
- Idempotency-Key em criação de cobrança/refund
- Webhook com assinatura verificada + dedupe por event id
- Confirmação de pagamento vem do webhook, não do redirect
- Cartão tokenizado no cliente (sem PAN no backend)
- PIX/assinatura tratam estados assíncronos e expiração
- Ledger append-only + reconciliação diária com o provedor
- Dinheiro em inteiros (centavos), segredos só no servidor
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

