Skip to content

t1k:web:commerce:payment-integration

FieldValue
Modulecommerce
Version1.7.0
Effortmedium
Tools

Keywords: checkout, Paddle, payment, Polar, SePay, Stripe, subscriptions, VietQR, webhooks

/t1k:web:commerce:payment-integration
[provider] [task]

Production-proven payment processing with SePay (Vietnamese banks), Polar (global SaaS), Stripe (global infrastructure), Paddle (MoR subscriptions), and Creem.io (MoR + licensing).

  • Payment gateway integration (checkout, processing)
  • Subscription management (trials, upgrades, billing)
  • Webhook handling (notifications, idempotency)
  • QR code payments (VietQR, NAPAS)
  • Software licensing (device activation)
  • Multi-provider order management
  • Revenue splits and commissions
PlatformBest For
SePayVietnamese market, VND, bank transfers, VietQR
PolarGlobal SaaS, subscriptions, automated benefits (GitHub/Discord)
StripeEnterprise payments, Connect platforms, custom checkout
PaddleMoR subscriptions, global tax compliance, churn prevention
Creem.ioMoR + licensing, revenue splits, no-code checkout
  • references/sepay/overview.md - Auth, supported banks
  • references/sepay/api.md - Endpoints, transactions
  • references/sepay/webhooks.md - Setup, verification
  • references/sepay/sdk.md - Node.js, PHP, Laravel
  • references/sepay/qr-codes.md - VietQR generation
  • references/sepay/best-practices.md - Production patterns
  • references/polar/overview.md - Auth, MoR concept
  • references/polar/products.md - Pricing models
  • references/polar/checkouts.md - Checkout flows
  • references/polar/subscriptions.md - Lifecycle management
  • references/polar/webhooks.md - Event handling
  • references/polar/benefits.md - Automated delivery
  • references/polar/sdk.md - Multi-language SDKs
  • references/polar/best-practices.md - Production patterns
  • references/stripe/stripe-best-practices.md - Integration design
  • references/stripe/stripe-sdks.md - Server SDKs
  • references/stripe/stripe-js.md - Payment Element
  • references/stripe/stripe-cli.md - Local testing
  • references/stripe/stripe-upgrade.md - Version upgrades
  • External: https://docs.stripe.com/llms.txt
  • references/paddle/overview.md - MoR, auth, entity IDs
  • references/paddle/api.md - Products, prices, transactions
  • references/paddle/paddle-js.md - Checkout overlay/inline
  • references/paddle/subscriptions.md - Trials, upgrades, pause
  • references/paddle/webhooks.md - SHA256 verification
  • references/paddle/sdk.md - Node, Python, PHP, Go
  • references/paddle/best-practices.md - Production patterns
  • External: https://developer.paddle.com/llms.txt
  • references/creem/overview.md - MoR, auth, global support
  • references/creem/api.md - Products, checkout sessions
  • references/creem/checkouts.md - No-code links, storefronts
  • references/creem/subscriptions.md - Trials, seat-based
  • references/creem/licensing.md - Device activation
  • references/creem/webhooks.md - Signature verification
  • references/creem/sdk.md - Next.js, Better Auth
  • External: https://docs.creem.io/llms.txt
  • references/multi-provider-order-management-patterns.md - Unified orders, currency conversion
  • scripts/sepay-webhook-verify.js - SePay webhook verification
  • scripts/polar-webhook-verify.js - Polar webhook verification
  • scripts/checkout-helper.js - Checkout session generator
PlatformHighlights
SePayQR/bank/cards, 44+ VN banks, webhooks, 2 req/s
PolarMoR, subscriptions, usage billing, benefits, 300 req/min
StripeCheckoutSessions, Billing, Connect, Payment Element
PaddleMoR, overlay/inline checkout, Retain (churn prevention), tax
Creem.ioMoR, licensing, revenue splits, no-code checkout

See references/implementation-workflows.md for step-by-step guides per platform.

General flow: auth → products → checkout → webhooks → events

  • Idempotency-key required on every payment retry — without it, double-charging is a bounded UUID set away from production. Use BoundedUUIDSet (FIFO, max 10k entries) for in-memory, plus a server-side dedup table for cross-restart.
  • Per-provider 401 retry table differs — Stripe: 3 retries with jitter; PayPal: 1 retry then human; Adyen: never retry. Code one per-provider table.
  • Webhook signature verification is per-payload, NOT per-request — Stripe rotates signing secrets; cache + grace period both prev and current.
  • 3DS challenge windows time out — bound the challenge wait to 5 minutes server-side or risk dangling order rows.
  • SCA/PSD2 requires re-authentication on saved cards in EU — silent decline if your flow assumes US-style frictionless reuse.