Midtrans-Middleware
Go to file
CIFO Dev d051c46ac4 feat: Epic 6 Stories 6.1-6.5 - Snap Hybrid Payment Strategy
Implemented comprehensive Snap integration with hybrid Core/Snap payment strategy:

Story 6.1 - Environment Switching:
- Added PAYMENT_GATEWAY_MODE env variable (CORE/SNAP)
- Created paymentMode.ts utilities for mode detection
- Added startup validation in main.tsx
- Implemented mode-aware logging with [CORE]/[SNAP] prefixes

Story 6.2 - Snap Payment Flow:
- Created /api/payments/snap/token endpoint
- Implemented SnapPaymentTrigger component with conditional rendering
- Added Snap.js script loading for SNAP mode
- Integrated hosted payment interface

Story 6.3 - Unified Webhook Handler:
- Enhanced /api/payments/notification for Core & Snap
- Implemented mode detection from payload structure
- Added unified signature verification
- Created shared status mapping and ledger updates

Story 6.4 - Shared Backend Logic:
- Created TransactionLogger for unified mode-aware logging
- Implemented OrderManager for shared validation logic
- Added CustomerDataHandler for consistent data sanitization
- Integrated shared utilities across payment endpoints

Story 6.5 - Code Organization:
- Reorganized into core/, snap/, shared/, lib/ structure
- Moved Core components to payments/core/
- Created PaymentAdapter for factory pattern routing
- Added SnapTokenService for token management
- Updated all import paths for new structure

Key Benefits:
 Instant rollback via environment variable
 Infrastructure offloading to Midtrans hosted interface
 Clean separation of Core vs Snap implementations
 Unified webhook processing for both modes
 Shared utilities eliminate code duplication

Technical Details:
- TypeScript compilation successful (549KB bundle)
- All payment methods work in both CORE and SNAP modes
- Dynamic component loading for Core components
- Mode-aware logging throughout payment flow
- Backwards compatible with existing Core API implementation
2025-12-03 15:33:22 +07:00
public feat: update favicon and page title for branding 2025-11-22 11:58:37 +07:00
scripts ERP: gunakan ERP_CLIENT_SECRET untuk signature; perbaiki fallback; tambah log detail HTTP request/response; endpoint GET /api/logs untuk akses log via browser; log payload ERP dengan signature length dan presence 2025-11-17 10:58:44 +07:00
server feat: Epic 6 Stories 6.1-6.5 - Snap Hybrid Payment Strategy 2025-12-03 15:33:22 +07:00
src feat: Epic 6 Stories 6.1-6.5 - Snap Hybrid Payment Strategy 2025-12-03 15:33:22 +07:00
v4-backup/.bmad-core new improvement 2025-11-25 16:24:52 +07:00
web-bundles feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
.gitignore chore: update .gitignore to exclude .bmad, .trae folders and docs folder 2025-11-28 06:16:18 +07:00
README.md feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
coreApiSimpleExample.js feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
eslint.config.js feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
index.html feat: update favicon and page title for branding 2025-11-22 11:58:37 +07:00
package-lock.json feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
package.json feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
postcss.config.cjs feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
tailwind.config.ts feat: implement toast notifications and update UI components 2025-11-14 15:13:46 +07:00
tmp-createtransaksi.json update merchat order id 2025-11-11 15:11:22 +07:00
tmp-sig.txt notify erp 2025-11-14 10:07:11 +07:00
tmp-sig2.txt notify erp 2025-11-14 10:07:11 +07:00
tmp-sig3.txt notify erp 2025-11-14 10:07:11 +07:00
tsconfig.app.json feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
tsconfig.json feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
tsconfig.node.json feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00
vite.config.ts feat(payments): stabilisasi QRIS & CStore; hapus tombol Buat QR 2025-11-10 11:10:35 +07:00

README.md

Core Midtrans CIFO (Frontend)

Frontend Vite + React untuk integrasi Midtrans Core API dengan UI kustom.

Setup

  1. Duplikasi file contoh env dan isi nilainya:
cp .env.example .env.local

Isi .env.local (lihat .env.example untuk referensi):

VITE_API_BASE_URL=http://localhost:8000/api
VITE_MIDTRANS_CLIENT_KEY=YOUR_CLIENT_KEY
VITE_MIDTRANS_ENV=sandbox
  1. Jalankan pengembangan:
npm install
npm run dev

App akan tersedia di http://localhost:5173/ (atau port lain jika 5173 dipakai).

Catatan Integrasi Midtrans

  • Client Key hanya digunakan di frontend (mis. tokenisasi kartu/3DS). Server Key TIDAK pernah di frontend.
  • Semua request ke Midtrans dilakukan lewat backend (VITE_API_BASE_URL). Frontend memanggil endpoint seperti /payments/:orderId/status.
  • Status real-time dapat diimplementasikan via polling (TanStack Query) atau SSE/WebSocket dari backend.

Struktur Env di Kode

  • Akses env melalui modul src/lib/env.ts:
    • Env.API_BASE_URL
    • Env.MIDTRANS_CLIENT_KEY
    • Env.MIDTRANS_ENV

Lisensi

Internal project skeleton.