pay.crowny.org v2.0 — 명세 호환 + 체크아웃 UI + Webhook 구현 완성
날짜: 2026-05-27
도메인: pay.crowny.org (포트 9866)
선행: 2026-05-22 — server.한선 + libs 9종 + 특허 81건 (E2E 검증 완료)
관련: /Users/ef/crowny-academy/adapters/PAY_INTERFACE.md (호환 명세)
개요
v1.0 (가맹점 한선코드 QR 흐름) 위에 academy 호환 체크아웃 명세 + 5트랙 라우터 + Webhook 발송 (HMAC-SHA256) + 체크아웃 UI + 랜딩 + 영수증 + 6개 문서를 일괄 완성. 한선씨 동반 13개 전부 컴파일 통과 + 학습DB 등록.
추가된 파일
한선씨 라이브러리 (3개 신규, 컴파일 통과)
| 파일 | 함수 수 | 역할 |
|---|
libs/명세호환.한선 | 7 | PAY_INTERFACE.md 호환 응답 빌더 (세션ID/맵빌드/응답/환불/methods/health) |
libs/웹훅발송.한선 | 7 | 페이로드 빌드 + 큐 레코드 + 지수 백오프 + 이벤트별 편의함수 |
libs/결제트랙.한선 | 10 | 5트랙 핸들러 (EFcard/CRD/USDT/카드/계좌) + 디스패치 + 수수료ppm 계산 |
server.한선 통합:
가져오기 3줄 + 새 라우트 4종 추가 → 41,665 큐브, 1.16MB toau.
server.js (동반 폴백) — 신규 라우트 5종
| 메소드 | 경로 | 용도 |
|---|
| GET | /health | 명세 호환 헬스 (기존 /api/health 별칭 추가) |
| GET | /api/methods | 결제수단 7종 (card/kakaopay/naverpay/tosspay/payco/bank/fone) |
| POST | /api/checkout | 세션 생성 → {sessionId, checkoutUrl, expiresAt} |
| GET | /api/checkout/:sessionId | 세션 상태 조회 |
| POST | /api/checkout/:sessionId/pay | 체크아웃 UI에서 호출 (트랙 선택 후 결제 처리) |
| POST | /api/refund | 명세형 환불 (body.sessionId) |
기존 가맹점 라우트 (
/api/merchant/*,
/api/pay/*,
/api/link/*,
/api/dispute,
/api/transfer/iso20022,
/api/fx/*)는 유지.
Webhook 발송 (HMAC-SHA256 + 재시도 큐)
- 한선씨 정본:
libs/웹훅발송.한선 — 페이로드/큐 정책 표현
- 실제 HMAC 계산 + HTTP POST:
server.js _hmacSha256() + sendWebhook() — 표준 호환
- 재시도: 지수 백오프 1s/5s/25s/125s 최대 5회
- 큐 파일:
data/webhook_queue.jsonl (JSON Lines)
- 워커: 30초 주기
setInterval
Public 정적 자산 (6개)
| 파일 | 용도 |
|---|
public/index.html | 랜딩 (히어로/5트랙/경쟁사비교/가치프롭) |
public/checkout/index.html | 체크아웃 UI (5트랙 선택 + 결제) |
public/checkout/success.html | 영수증 (Canvas 한선코드 그리드) |
public/assets/style.css | 다크 모드 + 보라 액센트 verdant 톤 |
public/assets/checkout.js | 세션 로드 + 트랙 선택 + 결제 + 한국어/영어 i18n |
public/manifest.json | PWA (theme_color #6366f1) |
문서 (6+1개)
| 파일 | 라인 |
|---|
docs/가맹점-가이드.md | 1분 가입 + 5단계 흐름 + Webhook 핸들러 + 5트랙 수수료 비교 |
docs/API.md | 전체 API 레퍼런스 (가맹점 + 명세 호환 + Webhook + 정적 자산) |
docs/SDK.md | JS/Python/PHP/Go Webhook 검증 예제 + 통합 패턴 |
docs/영업자료.md | ROI 계산기 + 경쟁사 매트릭스 + 특허 81건 |
docs/도입사례.md | 7개 케이스 (academy/market/dex/더이룸/Stripe대체/정부/K-pop) Before/After |
docs/spec/PAY_INTERFACE.md | academy 표준 명세 참조본 (구현 상태 포함) |
docs/ARCHITECTURE.md | 기존 (v1.0 작성) |
검증 결과
한선씨 컴파일 libs 12/12 통과, server.한선 1.16MB toau (41,665 큐브)
학습DB 등록 13/13 (libs 12 + server)
명세 라우트 6종 /health 200, /api/methods 200, POST /api/checkout 200,
GET /api/checkout/:id 200, POST /api/checkout/:id/pay 200,
POST /api/refund 200
정적 자산 /landing 200, /checkout/:id 200, /checkout/success 200,
/assets/style.css 200, /manifest.json 200, /sdk.js 200
전체 흐름 체크아웃 → 결제 → Webhook 발사 + 큐 적재 확인
5트랙 수수료 매트릭스
| 트랙 | PG 수수료 | 트랙 수수료 | 가맹점 실수령 |
|---|
| EFcard | 0 | 0 | 100% |
| CRD (크라우니달러) | 0 | 0 | 100% |
| 포네 (Crowny 전용) | 0 | 0 | 100% |
| USDT 글로벌 | 0 | ~0.04% (체인) | ~99.96% |
| 신용카드 | 0 | ~2.2% (카드사만 패스스루) | ~97.8% |
| 카카오/네이버/토스/페이코 | 0 | ~2.0% | ~98% |
| 계좌이체 | 0 | ~0.5% | ~99.5% |
한선씨 동반 비율
이번 작업으로 pay.crowny.org는:
- libs 12개 한선씨 정본 (전부 컴파일 통과)
- root 12개 한선씨 복사본 (hanseonc_high import path 호환용)
- server.한선 정본 (1.16MB toau)
- server.js는 명시적 "동반 폴백" 위치 (실용 HMAC/HTTP는 위임)
잔여 작업
- HMAC 한선씨 구현 — 현재 server.js 위임. 한선씨에서
버퍼생성/버퍼쓰기 + 내장 해시_SHA256로 표준 HMAC 직접 구현 가능. 별도 세션.
- PG 실 연동 — KCP/NICE/Stripe 카드 결제 실 호출 (현재 mock). 운영 전환 시.
- 포네 체인 직결 — chain.crowny.org와 직접 RPC 통신.
- PCT 승격 — 특허 81건 실 PCT 출원 (가치점수 평균 90.3).
- LaunchAgent 배포 — macOS LaunchAgent로 자동 기동.
docs.crowny.org
본 문서: /Users/ef/CrownyDoc/projects/2026-05-27-pay-crowny-org-구현완성.md
접근: docs.crowny.org/docs/2026-05-27-pay-crowny-org-구현완성
슬로건
"소프트웨어 비용의 자유 시대가 열린 것처럼, 금융 수수료 제로의 시대가 열립니다."