개발은 "교체형 인터페이스 + 개발 스텁" 구조로 진행되어 앱·서버·관리자·DB 의 업무 로직은 모두 동작·검증이 끝났습니다. 실서비스 오픈을 위해 발주사((주)페이네스트)가 준비·제공·계약해야 하는 항목을 우선순위별로 정리했습니다. 굵게 표시된 항목이 없으면 해당 기능은 스텁(가짜)으로만 동작합니다.
스토어 계정 발급·심사에 시간이 오래 걸리므로 가장 먼저 착수해야 합니다. 계정은 발주사 명의로 생성해 개발사에 접근 권한을 공유합니다.
| 요청 항목 | 구분 | 비고 · 왜 필요한가 |
|---|---|---|
| Apple Developer Program | 오픈 필수 | 연 $99, 법인(Organization) 가입 시 D-U-N-S 번호 필요(무료 발급, 2~4주 소요). App Store Connect 에 개발사 계정 초대. |
| Google Play Console | 오픈 필수 | 1회 $25, 법인 등록 시 사업자 확인 절차. 개발사 계정에 관리자/릴리스 권한 부여. |
| APNs 인증 키(.p8) | 오픈 필수 | iOS 푸시 발송용. Apple Developer 에서 발급(키 ID·팀 ID 포함). FCM 에 등록. |
| 앱 서명 키 / 코드사이닝 | 오픈 필수 | iOS 배포 인증서·프로비저닝, Android 업로드 키스토어. 패스키(생체 로그인)의 도메인 연결에도 팀 ID·서명 SHA256 이 필요(아래 5번 연계). |
| 스토어 등록 정보 | 준비 권장 | 앱 이름·설명·스크린샷·개인정보 처리방침 URL·카테고리·연령등급, 심사용 데모(테스트) 계정. |
현재 모두 교체형 인터페이스 + 스텁으로 동작합니다. 계약이 확정되면 실 연동 클래스만 갈아 끼우며, 업무 로직은 바뀌지 않습니다.
| 연동 | 구분 | 계약·제공받을 것 |
|---|---|---|
| 본인인증 (PASS/NICE/KCB 등) | 오픈 필수 | 가입 시 실명·생년월일·성별·CI/DI 확인. 인증사 계약 + 연동 규격서·상용/테스트 키. IdentityVerifier 교체. |
| 계좌 실명조회 | 오픈 필수 | 예금주 실명 확인(오픈뱅킹/펌뱅킹). 기관 계약 + API 키. BankVerifier 교체. |
| 1원 인증(계좌 확인) | 오픈 필수 | 1원 송금 + 입금자명 코드 확인. 펌뱅킹/오픈뱅킹 이체 계약. 현재 debugCode 스텁.
※ 1원 인증·계좌 실명조회는 동기 호출이라 웹훅이 없습니다(응답을 바로 받습니다). |
| 본인인증 결과 웹훅 발신 IP | 오픈 필수 | 발주사가 인증 결과(CI 포함)를 보내는 주소 — 운영 https://npwp-api.nestpay.co.kr/webhooks/vendor/identity ·
테스트 https://npwp-tapi.nestpay.co.kr/webhooks/vendor/identity.
발신 IP 미수령으로 현재 차단(deny all). IP 를 받아야 인증 결과를 받을 수 있습니다. |
| 페이솔루스 출금요청 API + 출금통지 웹훅 | 오픈 필수 | 회원 출금·매장 정산금 실지급(비동기). 워커가 PaySolusPayoutApiClient.submit로 이체 제출(PENDING) →
발주사가 POST /webhooks/vendor/transfer(송금이체 결과통보)로 완료/거절 확정. 현재 스텁(접수번호 PNST-…).
발주사 발송 주소 — 운영 https://npwp-api.nestpay.co.kr/webhooks/vendor/transfer ·
테스트 https://npwp-tapi.nestpay.co.kr/webhooks/vendor/transfer.
현재 발주사 발신 IP 를 받지 못해 nginx 에서 차단(deny all) 상태입니다 — IP 수령 즉시 개방합니다. |
| 페이솔루스 입금요청 API + 입금통지 웹훅 | 오픈 필수 | 충전신청 시 PaySolusDepositApiClient.request로 전용 입금계좌·코드 발급 → 회원이 신청 금액 입금 →
발주사가 입금 통지 → 코드+금액 일치 시 충전. 현재 스텁(회사계좌 풀 배정 + 고유코드 NC…).
★ 통지 양식(규격) 미수령 — 구현 대기 입금 통지 창구는 본인인증·송금이체와 같이 /webhooks/vendor/ 아래에 만들 예정입니다
(발주사 발신 IP 만 허용하는 문). 통지 항목(JSON 필드·서명 방식·재발송 정책)을 받아야 구현할 수 있습니다.참고: 내부용 POST /webhooks/bank/deposit-notice 가 이미 있으나 내부 키 전용이라 외부에 열려 있지 않습니다 —
발주사가 직접 부를 수 없습니다. |
| PG (결제대행) | 심사·계약 | 매장 결제 연동 시. 상점 ID·비밀키·연동 규격(현재 매장 open API 는 HMAC 골격 완비). |
| 카드 BIN / 실물카드 | 준비 권장 | 실물/가상 카드 번호 체계(BIN). 현재 내부 가상번호(BIN 972963) 사용 — 확정 시 교체. |
| SMS/알림톡 | 준비 권장 | 인증문자·안내 발송사(알리고/NHN 등) 계약. (본인인증사가 문자 포함 시 불요할 수 있음) |
| FCM (푸시) | 심사·계약 | Firebase 프로젝트 + 서비스 계정 키(JSON). 관리자 콘솔 [푸시 설정]에서 등록(단계별 안내 내장). 앱 알림함은 이미 실동작. |
| 항목 | 구분 | 비고 |
|---|---|---|
| 도메인 | 확정 | nestpay.co.kr. 테스트는 별도 도메인이 아니라 호스트 앞글자 t 로 구분합니다(발주사 기존 규칙 api↔tapi 와 동일). |
| DNS A레코드 생성 | 오픈 필수 | 2026-08-11 미팅 확정 — 접두사 npwp- 를 씁니다.
운영 npwp-api · npwp-pg · npwp-admin,
테스트 npwp-tapi · npwp-tpg · npwp-tadmin (각각 해당 WEB 서버 IP).
storages 는 파일 방식 변경으로 불필요해졌습니다. ※ api · tapi 는 발주사 기존 결제 시스템(CyrexPay)이 사용 중이라 앱 API 는 app · tapp 을 씁니다.
2026-08-11 DNS 실측 — 등록되어 있는 것:
nestpay.co.kr 112.175.152.168 · www(aioncloud CDN 경유) ·
api 112.175.152.167 · twww 211.47.2.152 · tapi 211.47.2.151.
새로 만들 것: npwp-api · npwp-pg · npwp-admin ·
npwp-tapi · npwp-tpg · npwp-tadmin — 6개(www 제외).
생성 전까지는 앱·매장 연동·관리자 어느 것도 외부에서 접속할 수 없습니다. |
| SSL 인증서 전달 | 오픈 필수 | 발주사가 이미 보유한 와일드카드 *.nestpay.co.kr(Sectigo, 만료 2027-01-08) 1장으로 위 8개 호스트가 모두 커버됩니다. 요청: ① 인증서 fullchain(중간 CA 포함) + 개인키 안전 전달, ② 갱신 주체·절차 확정(만료 시 누가 언제 우리 서버에 재배포하는지). ※ 키 공유가 어려우면 대안으로 우리가 Let's Encrypt 자체 발급(80포트 개방 또는 DNS TXT 레코드 등록 권한 필요). |
| www · 도메인 최상위 교체 | 오픈 필수 | 현재 npwp-www.nestpay.co.kr·nestpay.co.kr 은 기존 홈페이지가 aioncloud(WAF/CDN) 뒤에서 운영 중입니다. 신규 소개 사이트로 교체할 때 WAF 를 유지하고 오리진만 우리 서버로 변경할지, DNS 를 우리 서버로 직접 전환할지 결정과 전환 일정이 필요합니다. |
| 테스트 서버 | 오픈 필수 | 테스트 호스트(tapp 등)를 올릴 서버 IP·접근권한. 운영과 분리된 서버여야 합니다(발주사도 api·tapi 를 다른 서버로 운영 중). |
| 운영 서버 2대 / DB | 준비 권장 | 발주사 제공 서버(현재 로컬 Docker: API·MariaDB·nginx). 스펙·접근권한·백업 정책. |
| 파일 공유 폴더 (WAS #1 파일서버) | 오픈 필수 | 업로드 실물 보관처(아바타·매장 서류·배너·현금영수증 첨부).
2026-08-11 미팅에서 오브젝트 스토리지(MinIO) 사용 불가로 확정되어,
WAS #1 의 파일서버 폴더를 WAS #2 가 함께 마운트하는 방식으로 구현을 교체했습니다(완료).
요청: ① 공유 폴더 경로, ② WAS #2 의 마운트 방식(NFS 등)과 옵션, ③ 백업 대상 포함 여부 — 운영·테스트 각각. 알아 두셔야 할 위험 — 파일 폴더가 WAS #1 에 있으므로
WAS #1 이 멈추면 WAS #2 가 살아 있어도 파일 올리기·내려받기는 실패합니다.
이중화의 효과가 파일 기능에는 미치지 않습니다. 별도 저장장치(NAS)를 두면 이 위험이 사라집니다.
서버가 켜질 때 이 폴더를 쓸 수 있는지 확인하고,
못 쓰면 부팅을 멈춥니다 — 공유 폴더 연결이 빠진 채 서비스가 열리는 사고를 막기 위함입니다. |
| 암호화 키 관리(KMS) | 오픈 필수 | 전화·계좌·CVC 등 개인정보 AES 키의 안전 보관·교체 정책(현재 환경변수). 운영 키는 발주사 관리. |
패스키는 현재 소프트웨어 인증기(Ed25519)로 동작·검증 완료입니다. 지문·얼굴(플랫폼 패스키)로 올리려면 아래가 필요합니다.
| 항목 | 구분 | 비고 |
|---|---|---|
| Associated Domains 파일 호스팅 | 생체 전환 시 | npwp-api.nestpay.co.kr·npwp-tapi.nestpay.co.kr 양쪽 모두에
/.well-known/apple-app-site-association·/.well-known/assetlinks.json 게시.※ 패스키는 호스트에 고정됩니다. 운영·테스트를 완전 분리하기로 확정하여 RP ID 를 호스트별로 따로 둡니다 → 테스트에서 만든 패스키는 운영에서 쓸 수 없습니다(금융서비스 권장 구성). |
| iOS 엔타이틀·Android 서명 SHA256 | 생체 전환 시 | 1번의 앱 서명 정보와 연계. 서버는 P-256 검증까지 준비 완료 — 앱 인증기만 교체. |
| 항목 | 구분 | 비고 |
|---|---|---|
| 이용약관 · 개인정보처리방침 원문 | 오픈 필수 | 법무 검토본. 관리자 콘솔 [약관·방침]에서 등록·시행하면 앱에 노출(기능 완비). 스토어 심사에도 필요. |
| 전자금융업 등록 관련 | 오픈 필수 | 선불전자지급수단 발행업 등록/신고, 환급·잔액 정책, 소비자 보호(전자금융거래법) 확정. |
| 사업자·고객센터 정보 | 오픈 필수 | 상호·대표자·사업자번호·주소·고객센터 전화·이메일. 앱 하단·약관·스토어에 표기 필수. |
| 개인정보보호책임자(CPO) | 준비 권장 | 개인정보처리방침 명시. ISMS 등 인증 요구 여부 확인. |
| 수수료·한도·정산 정책 확정값 | 오픈 필수 | 결제·충전·출금·선물 수수료율, 1회/일 한도, 정산 주기. 관리자 [정책 관리]에서 설정(기능 완비, 값 확정 필요). |
| 항목 | 구분 | 비고 |
|---|---|---|
| 브랜드 자산 원본 | 준비 권장 | 앱 아이콘·스플래시·로고(벡터), 워드마크, 카드 디자인 가이드(현재 임시 자산 사용). |
| 초기 콘텐츠 | 준비 권장 | 공지·이벤트·FAQ·배너 초안(관리자에서 등록). 오픈 시 최소 노출 콘텐츠. |
| 테스트 단말·계좌 | 준비 권장 | iOS/Android 실기기, 본인인증·이체 테스트용 실계좌/휴대폰, 인증사 테스트베드 IP 화이트리스트. |
| 운영 모니터링·알림 채널 | 준비 권장 | 장애·이상거래(FDS) 경보 수신 채널(이메일/슬랙), 로그·백업 보관 정책. |
| 정산·수납 은행 계좌 | 오픈 필수 | 충전금 수납 계좌, 정산·출금 지급 원천 계좌. 회계·세무 처리 방침. |
| 관리자 초기 계정·권한 | 준비 권장 | 운영 관리자 명단·권한(root/일반), 접속 허용 IP. 초기 비밀번호는 최초 로그인 시 변경. |
| 앱 심사 대응 자료 | 심사 대응 | 금융앱 심사 시 추가 요구(사업자 증빙·기능 설명 영상). Apple/Google 반려 대비. |
진행 순서 제안 — ① 스토어 계정·D-U-N-S(리드타임 최장) → ② 본인인증·계좌·이체 인증사 계약 → ③ 도메인·SSL·운영 서버 → ④ 약관·정책·수수료 확정값 → ⑤ 브랜드 자산·초기 콘텐츠 → ⑥ 심사·오픈. 각 외부 연동은 계약 확정 즉시 스텁을 실연동으로 교체(코드 준비 완료)하고 통합 테스트를 진행합니다.
| 항목 | 현재 상태 | 메모 / 제안 |
|---|---|---|
| 입금 통지 방식 | 제안 중 | 메이딧업 deposit.madeitup.kr SMS 통지로 수집하는 방식 제안 상태. 서버는 입금 웹훅(멱등 처리) 준비 완료 — 통지 소스 확정 시 연결. |
| 페이솔루스 입금요청 API | 대기 | 충전신청 시 전용 입금계좌·코드 발급용. 미수령. 서버는 PaySolusDepositApiClient 스텁(회사계좌 풀 배정 + 고유코드)으로 준비 — API 수령 시 교체(제공 방식이 가상계좌면 그대로 확장). |
| 페이솔루스 출금요청 API + 출금통지 웹훅 | 대기 | 페이솔루스 출금 요청 API 사용 예상. 미수령. 서버 흐름(선차감 HOLD→정책 대기→PaySolusPayoutApiClient.submit 제출 PENDING→출금통지 웹훅 완료/거절복원)은 스텁으로 준비, API·웹훅 규격 수령 시 교체. |
| 본인인증·계좌실명·1원인증 API | 대기(쿠콘 예상) | 미수령. IdentityVerifier·BankVerifier 인터페이스로 스텁 동작 중 — 계약 확정 시 구현체 교체. |
| Apple / Google 개발자 계정 | 대기 | 미수령. 강제 업데이트는 서버 최소버전 게이트로 구현 완료 — 계정 수령 후 배포. |
| Git 저장소 | 임시 사용 | 페이네스트 git 미제공 → 현재 git.madeitup.kr 사용. 페이네스트 git 제공 시 그쪽으로 동기화(메이딧업 유지보수 위해 madeitup 에서 작업 후 미러링). |
| 배포 방식 | 월요일 계약 후 | 물리 서버 분리로 접속 PC 제한. 배포 절차 미회신 — 계약 후 확정. 환경은 local(dev)→sandbox→live 3단계 구조로 준비(운영·배포 가이드 참조). |
위 항목은 발주사 확정·자료 제공을 기다리는 것으로, 서버·앱 코드는 모두 교체형 인터페이스/스텁으로 준비되어 확정 즉시 실연동으로 교체 가능합니다. 환경 분리·DB 동기화 절차는 운영·배포 가이드를 참조하세요.
본 문서는 개발 현황 기준으로 작성되었습니다. 구현 상세는 구현 현황 · API 명세 참고. 누락·추가 항목은 협의하여 갱신합니다.