Transaction Code Generator
Panduan lengkap Transaction Code Generator untuk membuat kode transaksi yang human-readable, unique, dan verifiable.🎯 Overview
Transaction Code adalah identifier yang:- ✅ Human-Readable - Mudah dibaca dan diketik
- ✅ Unique - Unik per merchant-branch-date
- ✅ Verifiable - Memiliki checksum untuk validasi
- ✅ Sortable - Tersortir by date & sequence
- ✅ Compact - Relatif pendek (~30 karakter)
pkg/utils/txcode/txcode.go
📊 Code Structure
Format
- Merchant Code (2-4 chars): Kode merchant
- Branch Code (2-4 chars): Kode cabang
- Date (6 chars): YYMMDD format
- Sequence (3-5 chars): Base36 sequence number
- Random (4 chars): Crockford Base32 random
- Checksum (1 char): Mod10 checksum
Example Codes
🚀 Quick Start
1. Generate Transaction Code
2. With Auto Sequence
📝 Usage Examples
Transaction Service
Order Service
Invoice Service
🎨 Code Components
1. Merchant Code
Format: 2-4 uppercase alphanumeric characters Examples:2. Branch Code
Format: 2-10 uppercase alphanumeric characters (with hyphens) Examples:3. Date (YYMMDD)
Format: 6-digit date Examples:4. Sequence (Base36)
Format: 3-5 character Base36 (0-9, A-Z) Capacity:- 3 chars: 46,656 codes (36³)
- 4 chars: 1,679,616 codes (36⁴)
- 5 chars: 60,466,176 codes (36⁵)
5. Random (Crockford Base32)
Format: 4-character Crockford Base32 Alphabet:0123456789ABCDEFGHJKMNPQRSTVWXYZ (no I, L, O, U)
Purpose: Prevent guessing & add uniqueness
Examples:
6. Checksum (Mod10)
Format: Single digit (0-9) Purpose: Detect typos & validate code Algorithm: Mod10 over all alphanumeric characters Examples:🔧 Validation
Validate Checksum
Parse Components
📊 Database Schema
Store Transaction Code
Sequence Management
Get Next Sequence
🎯 Best Practices
1. Use Consistent Codes
2. Validate Before Save
3. Handle Sequence Atomically
4. Index Transaction Codes
🔍 Troubleshooting
Duplicate Codes
Problem: Same code generated twice Cause: Sequence not atomic or clock skew Solution:Invalid Checksum
Problem: Code fails validation Cause: Manual typo or data corruption Detection:Sequence Reset
Problem: Sequence resets unexpectedly Cause: Date change or database issue Prevention:📚 Related Documentation
Snowflake ID Generator
Distributed unique ID generation
Transaction Flow
Complete transaction flow
Database Schema
Database schema & indexes
Transaction Codes: Digunakan untuk display & customer-facing references. Internal ID menggunakan Snowflake IDs untuk uniqueness.