paysystem

πŸ’° Payμ‹œμŠ€ν…œ v4.0 Enterprise

μ‹€μ‹œκ°„ μ •μ‚° 관리 μ‹œμŠ€ν…œ - λ¬Έμžμžλ™μ „λ‹¬μ•± μ—°λ™μœΌλ‘œ μžλ™ν™”λœ 거래 좔적 및 μ •μ‚°

Payμ‹œμŠ€ν…œ FastAPI React TailwindCSS

πŸš€ μ£Όμš” κΈ°λŠ₯

✨ 핡심 νŠΉμ§•

πŸ“Š κ΄€λ¦¬μž κΈ°λŠ₯

πŸͺ 업체 κΈ°λŠ₯

πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  λ¬Έμžμžλ™μ „λ‹¬μ•±  │────│   Payμ‹œμŠ€ν…œ API   │────│   κ΄€λ¦¬μž/업체    β”‚
β”‚    (SMS μˆ˜μ‹ )   β”‚    β”‚   (FastAPI)      β”‚    β”‚   (React SPA)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚
         β”‚              β”‚   SQLite DB     β”‚             β”‚
         β”‚              β”‚ (거래/업체정보)  β”‚             β”‚
         β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚
         β”‚                                              β”‚
         └──────────── WebSocket μ‹€μ‹œκ°„ μ•Œλ¦Ό β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

pay-system/
β”œβ”€β”€ backend/                    # FastAPI λ°±μ—”λ“œ
β”‚   β”œβ”€β”€ main.py                # 톡합 μ„œλ²„ (639쀄)
β”‚   β”œβ”€β”€ requirements.txt       # Python μ˜μ‘΄μ„±
β”‚   β”œβ”€β”€ Procfile              # Railway 배포
β”‚   └── railway.toml          # Railway μ„€μ •
β”‚
β”œβ”€β”€ frontend/                  # React ν”„λ‘ νŠΈμ—”λ“œ
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ LoginPage.js          # 둜그인
β”‚   β”‚   β”‚   β”œβ”€β”€ AdminDashboard.js     # κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ
β”‚   β”‚   β”‚   β”œβ”€β”€ CompanyDashboard.js   # 업체 λŒ€μ‹œλ³΄λ“œ
β”‚   β”‚   β”‚   └── CompanyCreate.js      # 업체 생성
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ AuthContext.js        # JWT 인증
β”‚   β”‚   β”‚   └── SocketContext.js      # WebSocket
β”‚   β”‚   β”œβ”€β”€ App.js                    # 메인 μ•±
β”‚   β”‚   └── index.css                 # TailwindCSS
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ tailwind.config.js
β”‚   └── vercel.json           # Vercel 배포
β”‚
└── README.md                 # 이 파일

βš™οΈ 둜컬 개발 ν™˜κ²½ μ„€μ •

1️⃣ λ°±μ—”λ“œ μ„€μ •

# κ°€μƒν™˜κ²½ 생성 및 ν™œμ„±ν™”
cd pay-system/backend
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements.txt

# μ„œλ²„ μ‹€ν–‰
uvicorn main:app --reload --host 0.0.0.0 --port 8000

2️⃣ ν”„λ‘ νŠΈμ—”λ“œ μ„€μ •

# μ˜μ‘΄μ„± μ„€μΉ˜
cd pay-system/frontend
npm install

# 개발 μ„œλ²„ μ‹€ν–‰
npm start

3️⃣ 접속 ν…ŒμŠ€νŠΈ

🌐 ν΄λΌμš°λ“œ 배포

πŸš€ Vercel 배포 (ν”„λ‘ νŠΈμ—”λ“œ)

# Vercel CLI μ„€μΉ˜
npm i -g vercel

# ν”„λ‘ νŠΈμ—”λ“œ ν΄λ”μ—μ„œ 배포
cd frontend
vercel --prod

πŸš‚ Railway 배포 (λ°±μ—”λ“œ)

  1. Railway 계정 생성
  2. GitHub 연동 ν›„ λ°±μ—”λ“œ 폴더 선택
  3. μžλ™ 배포 μ™„λ£Œ!

πŸ”§ ν™˜κ²½ λ³€μˆ˜ μ„€μ •

Vercel (ν”„λ‘ νŠΈμ—”λ“œ):

REACT_APP_API_URL=https://your-backend.railway.app

Railway (λ°±μ—”λ“œ):

PORT=8000
DATABASE_URL=sqlite:///./settlement.db

πŸ“± λ¬Έμžμžλ™μ „λ‹¬μ•± 연동

1️⃣ μ•± μ„€μ •

2️⃣ Webhook URL μ„€μ •

https://your-backend.railway.app/api/webhook/{API_KEY}

3️⃣ 지원 은행

λ†ν˜‘, μ‹ ν•œ, κ΅­λ―Ό, 우리, ν•˜λ‚˜, κΈ°μ—…, SC제일, 씨티, λŒ€κ΅¬, λΆ€μ‚°, κ΄‘μ£Ό, 전뢁, 경남, μƒˆλ§ˆμ„, μ‹ ν˜‘, 우체ꡭ, μΉ΄μΉ΄μ˜€λ±…ν¬, ν† μŠ€λ±…ν¬

πŸ” κΈ°λ³Έ 계정 정보

κ΄€λ¦¬μž 계정

API ν…ŒμŠ€νŠΈ

# 둜그인 ν…ŒμŠ€νŠΈ
curl -X POST "http://localhost:8000/api/auth/login" \
     -H "Content-Type: application/json" \
     -d '{"username": "fjrzl7979", "password": "79797979"}'

# 업체 생성 ν…ŒμŠ€νŠΈ
curl -X POST "http://localhost:8000/api/admin/companies" \
     -H "Authorization: Bearer YOUR_JWT_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "company_name": "ν…ŒμŠ€νŠΈμ—…μ²΄",
       "login_id": "test123",
       "password": "test123",
       "bank_name": "λ†ν˜‘",
       "account_number": "123-456-789012",
       "account_holder": "홍길동",
       "fee_rate": 0.03
     }'

🎯 업체생성 λ²„νŠΌ 문제 ν•΄κ²°

이 ν”„λ‘œμ νŠΈλŠ” κΈ°μ‘΄ κ΅¬μ‘°μ—μ„œ 업체생성 λ²„νŠΌμ΄ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 문제λ₯Ό μ™„μ „νžˆ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€:

  1. βœ… μ™„μ „ν•œ λΌμš°νŒ…: /admin/companies/create 경둜 정상 λ™μž‘
  2. βœ… μ‹€μ‹œκ°„ 동기화: 생성 μ¦‰μ‹œ κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ μ—…λ°μ΄νŠΈ
  3. βœ… API ν‚€ μžλ™ λ°œκΈ‰: 업체 생성과 λ™μ‹œμ— Webhook URL 제곡
  4. βœ… μœ νš¨μ„± 검사: λͺ¨λ“  ν•„μˆ˜ ν•„λ“œ 검증
  5. βœ… μ—λŸ¬ 처리: μƒμ„Έν•œ 였λ₯˜ λ©”μ‹œμ§€ 제곡

πŸ”§ 기술 μŠ€νƒ

λ°±μ—”λ“œ

ν”„λ‘ νŠΈμ—”λ“œ

배포 & 인프라

πŸ“Š μ„±λŠ₯ μ§€ν‘œ

πŸ“ž 지원

기술 문의

μ—…λ°μ΄νŠΈ 둜그


πŸŽ‰ μΆ•ν•˜ν•©λ‹ˆλ‹€! Payμ‹œμŠ€ν…œ v4.0이 μ„±κ³΅μ μœΌλ‘œ κ΅¬μΆ•λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

λͺ¨λ“  κΈ°λŠ₯이 μ™„λ²½ν•˜κ²Œ μž‘λ™ν•˜λ©°, ν΄λΌμš°λ“œ λ°°ν¬κΉŒμ§€ μ€€λΉ„κ°€ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 업체생성 λ²„νŠΌ λ¬Έμ œλŠ” μ™„μ „νžˆ ν•΄κ²°λ˜μ—ˆκ³ , μ‹€μ‹œκ°„ μ •μ‚° μ‹œμŠ€ν…œμ΄ μ•ˆμ •μ μœΌλ‘œ 운영될 수 μžˆμŠ΅λ‹ˆλ‹€.