uzpay

2024

우즈베키스탄 결제 서비스(Payme, Click, Paynet) 통합 라이브러리. 의존성 0, 런타임 중립.

Role
단독 개발
Stack
TypeScript Hono Zero-dependency

문제

우즈베키스탄 결제 시장은 세 주요 provider(Payme, Click, Paynet)로 파편화되어 있으며, API가 일관성 없고 서명 방식이 다르며, 통합된 TypeScript 클라이언트가 없습니다. 모든 현지 e-commerce 프로젝트가 같은 glue code를 처음부터 다시 만듭니다.

접근

  • 런타임 의존성 0 — Node, Bun, Deno, Cloudflare Workers, 브라우저 모두에서 동작
  • provider별 adapter를 일관된 인터페이스 뒤에 두고 하나의 API surface
  • 런타임 중립 crypto (Web Crypto API만 사용, Node 전용 모듈 없음)
  • Zod 기반 response 파싱으로 강하게 타입 지정

결과

  • npm에 퍼블리시, 주당 ~80 다운로드
  • 여러 우즈베키스탄 e-commerce 프로젝트에서 production 사용 중
  • Zero-dep 제약이 공급망 위험을 제거 — 보안 팀이 좋아함

배운 것

  • 런타임 중립은 크로스 플랫폼보다 어렵지만 유지보수가 훨씬 저렴
  • Zero-dependency는 feature — 보안 팀에 스스로 팔림
  • 작고 집중된 라이브러리가 framework보다 오래 감; uzpay의 API는 v1부터 안정적으로 유지되고 있음